Beispiel #1
0
    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)))
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
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)