from ranger.api.commands import Command class mkcd(Command): """ :mkcd Creates a directory with the name and enters it. """ def execute(self): from os.path import join, expanduser, lexists from os import makedirs import re dirname = join(self.fm.thisdir.path, expanduser(self.rest(1))) if not lexists(dirname): makedirs(dirname) match = re.search('^/|^~[^/]*/', dirname) if match: self.fm.cd(match.group(0)) dirname = dirname[match.end(0):] for m in re.finditer('[^/]+', dirname): s = m.group(0) if s == '..' or (s.startswith('.') and not self.fm.settings['show_hidden']): self.fm.cd(s) else: ## We force ranger to load content before calling `scout`. self.fm.thisdir.load_content(schedule=False) self.fm.execute_console('scout -ae ^{}$'.format(s)) else: self.fm.notify("file/directory exists!", bad=True) class toggle_flat(Command): """ :toggle_flat Flattens or unflattens the directory view. """ def execute(self): if self.fm.thisdir.flat == 0: self.fm.thisdir.unload() self.fm.thisdir.flat = -1 self.fm.thisdir.load_content() else: self.fm.thisdir.unload() self.fm.thisdir.flat = 0 self.fm.thisdir.load_content()