Пример #1
0
def command__paste(manager):
    if not manager._copy_mode:
        return

    fullpath = manager._copy_file
    basename = os.path.basename(fullpath)

    cwd = manager._getExplorer().cwd

    to_path = os.path.join(cwd, basename)

    if os.path.exists(to_path):
        name, ext = os.path.splitext(basename)
        to_path = os.path.join(cwd, "{}_copy{}".format(name, ext))

    # *_copy があったら、だめ
    if os.path.exists(to_path):
        echo_error(" Already exists. '{}'".format(to_path.replace("\\", "/")))
        manager._refresh()
        return

    if os.path.isdir(fullpath):
        # shutil.copytree(src, dst)
        shutil.copytree(fullpath, to_path)
    else:
        shutil.copy2(fullpath, to_path)

    manager._refresh()
    manager._move_cursor_if_fullpath_match(to_path)
    lfCmd("redraw | echon ' Pasted.'")
Пример #2
0
def _restore_context(manager,
                     restore_input_pattern=True,
                     restore_cursor_pos=True):
    """ For input_prompt

    params:
        restore_input_pattern:
            The following attributes of the `cli` will not be restored
            * _cmdline
            * _cursor_pos
            * _pattern
        restore_cursor_pos:
            cursor position
    """
    global _context
    manager._search = _context["search_func"]
    manager._instance._cli._additional_prompt_string = _context[
        "additional_prompt_string"]
    manager._instance._cli._key_dict = _context["cli_key_dict"]
    if restore_cursor_pos:
        # To restore only in case of cancel
        [row, col] = _context["cursor_pos"]
        lfCmd("""call win_execute({}, 'exec "norm! {}G"')""".format(
            manager._instance._popup_winid, row))
        manager._getInstance().refreshPopupStatusline()
    if restore_input_pattern:
        # To restore only in case of cancel
        manager._instance._cli._cmdline = _context["cli_cmdline"]
        manager._instance._cli._cursor_pos = _context["cli_cursor_pos"]
        manager._instance._cli._pattern = _context["cli_pattern"]
    _context = {}
Пример #3
0
def command__open_current(manager):
    if manager._cli.pattern == "..":
        _open_parent(manager)
        return
    line = manager._getInstance().currentLine
    if line == NO_CONTENT_MSG:
        return
    if line == "":
        return

    file_info = manager._getExplorer()._contents[line]
    if not file_info["isdir"]:
        manager.accept()
        return True

    if not accessable(file_info["fullpath"]):
        echo_error("Permission denied `{}`".format(file_info["fullpath"]))
        return

    if manager._getInstance().isReverseOrder():
        lfCmd("normal! G")
    else:
        manager._gotoFirstLine()

    manager._chcwd(os.path.abspath(file_info["fullpath"]))
    manager._history.add(manager._getExplorer().cwd)
Пример #4
0
def command__remove_trash_force(manager):
    """
    remove_trash_force
    """
    path_list = get_path_list(manager)
    if NO_CONTENT_MSG in path_list:
        return
    _remove_trash(manager, path_list)
    lfCmd("redraw")
    return
Пример #5
0
def command___do_add_dir(manager, context, results):
    path = results[0]
    name = results[1]
    if len(name.strip()) == 0 or len(path.strip()) == 0:
        echo_cancel()
        return

    if name in lfEval("leaderf#Bookmark#load_bookmaks()"):
        echo_error("Already exists in bookmark '{}'".format(name))
        return

    lfCmd('call leaderf#Bookmark#_add("{}", "{}")'.format(name, path))
Пример #6
0
def command__copy(manager):
    if len(manager._selections) > 0:
        echo_error(" Copy does not support multiple files.")
        return

    line = manager._getInstance().currentLine
    if invalid_line(line):
        return

    manager._copy_file = manager._getExplorer()._contents[line]["fullpath"]
    manager._copy_mode = True
    lfCmd("redraw | echon ' Copied.'")
    # Updat estatus line
    manager._getExplorer().setCommandMode("COPY")
    manager._redrawStlCwd()
Пример #7
0
def command___do_edit(manager, context, results):
    new_path = results[0]
    new_name = results[1]

    if len(new_name.strip()) == 0 or len(new_path.strip()) == 0:
        echo_cancel()
        return

    if context.get("old_name") != new_name and new_name in lfEval(
            "leaderf#Bookmark#load_bookmaks()"):
        echo_error("Already exists in bookmark '{}'".format(new_name))
        return

    lfCmd('call leaderf#Bookmark#_edit("{}", "{}", "{}")'.format(
        context["old_name"], new_name, new_path))
Пример #8
0
def command__open_parent_or_backspace(manager):
    if len(manager._getInstance()._cli._cmdline) > 0:
        # like <BS> in cli#input()
        manager._cli._backspace()
        manager._cli._buildPattern()

        # like <Shorten> in manager#input()
        cur_len = len(manager._content)
        cur_content = manager._content[:cur_len]
        manager._index = 0
        manager._search(cur_content)
        if manager._getInstance().isReverseOrder():
            lfCmd("normal! G")
        else:
            manager._gotoFirstLine()
        return
    manager._history.add(manager._getExplorer().cwd)
    _open_parent(manager)
Пример #9
0
def echo_cancel():
    lfCmd("redraw | echon ' Canceled.'")
Пример #10
0
def _switch_normal_mode(manager):
    lfCmd(r'call feedkeys("{}", "n")'.format(
        _get_switch_normal_mode_key(manager)))
Пример #11
0
def command__change_directory(manager):
    cd(manager._getExplorer().cwd)
    lfCmd("redraw | echon ' cd {}'".format(manager._getExplorer().cwd))
Пример #12
0
def command__down(manager):
    lfCmd("normal! j")
    manager._previewResult(False)
Пример #13
0
def command__up(manager):
    lfCmd("normal! k")
    manager._previewResult(False)
Пример #14
0
def echo_cancel():
    lfCmd("echon ' Canceled.'")
Пример #15
0
def echo_error(msg):
    lfCmd(
        "echohl ErrorMsg | redraw | echon ' [LeaderF] {}' | echohl NONE".format(
            escQuote(msg)
        )
    )
Пример #16
0
def cd(path):
    # XXX: from defx.nvim
    if lfEval("exists('*chdir')") == "1":
        lfCmd("call chdir('%s')" % path)
    else:
        lfCmd("silent execute (haslocaldir() ? 'lcd' : 'cd') '%s'" % path)
Пример #17
0
def command___do_delete(manager, context, results):
    if not yes(results[0]):
        command___input_cancel(manager)
        return

    lfCmd("call leaderf#Bookmark#_delete('{}')".format(context["name"]))