def create_open(self, view: View, defx: Defx, context: Context, path: Path, command: str, isdir: bool, isopen: bool) -> None: if isdir: path.mkdir(parents=True) else: path.parent.mkdir(parents=True, exist_ok=True) path.touch() if not isopen: view.redraw(True) view.search_recursive(path, defx._index) return # Note: Must be redraw before actions view.redraw(True) view.search_recursive(path, defx._index) if isdir: if command == 'open_tree': view.open_tree(path, defx._index, False, 0) else: view.cd(defx, defx._source.name, str(path), context.cursor) else: if command == 'drop': self._drop( view, defx, context._replace(args=[], targets=[{ 'action__path': path }])) else: view._vim.call('defx#util#execute_path', command, self.get_buffer_name(str(path)))
def _search(view: View, defx: Defx, context: Context) -> None: if not context.args or not context.args[0]: return search_path = context.args[0] path = Path(search_path) parents: typing.List[Path] = [] while view.get_candidate_pos(path, defx._index) < 0 and path.parent != path: path = path.parent parents.append(path) for parent in reversed(parents): view.open_tree(parent, defx._index, 0) view.update_opened_candidates() view.redraw() view.search_file(Path(search_path), defx._index)
def _open_tree(view: View, defx: Defx, context: Context) -> None: nested = False recursive_level = 0 toggle = False for arg in context.args: if arg == 'nested': nested = True elif arg == 'recursive': recursive_level = 20 elif re.search(r'recursive:\d+', arg): recursive_level = int(arg.split(':')[1]) elif arg == 'toggle': toggle = True for target in [x for x in context.targets if x['is_directory']]: if toggle and not target['is_directory'] or target['is_opened_tree']: _close_tree(view, defx, context._replace(targets=[target])) else: view.open_tree(target['action__path'], defx._index, nested, recursive_level)
def _open_tree(view: View, defx: Defx, context: Context) -> None: for target in [x for x in context.targets if x['is_directory']]: view.open_tree(target['action__path'], defx._index, 0)
def _open_tree_recursive(view: View, defx: Defx, context: Context) -> None: level = int(context.args[0]) if context.args else 20 for target in [x for x in context.targets if x['is_directory']]: view.open_tree(target['action__path'], defx._index, level)