From 0a4123b71f758cd98a273a76caddcd4120db998e Mon Sep 17 00:00:00 2001 From: "Joel D. Elkins" Date: Sun, 10 Jan 2021 17:13:22 -0600 Subject: [PATCH] Move dir_up functionality into lib and make '-' a default keymap for it --- README.md | 2 ++ doc/nvim-tree-lua.txt | 2 ++ lua/lib/config.lua | 1 + lua/lib/lib.lua | 13 +++++++++++++ lua/nvim-tree.lua | 14 +------------- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index f24646f4..cd415cd0 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ let g:nvim_tree_bindings = { \ 'paste': 'p', \ 'prev_git_item': '[c', \ 'next_git_item': ']c', + \ 'dir_up': '-', \ } " Disable default mappings by plugin @@ -113,6 +114,7 @@ highlight NvimTreeFolderIcon guibg=blue - type `d` to delete a file (will prompt for confirmation) - type `]c` to go to next git item - type `[c` to go to prev git item +- type '-' to naviate up to the parent directory of the current file/directory - if the file is a directory, `` will open the directory otherwise it will open the file in the buffer near the tree - if the file is a symlink, `` will follow the symlink (if the target is a file) - `` will open the file in a vertical split diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index eeda8b71..5491f8a9 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -195,6 +195,7 @@ INFORMATIONS *nvim-tree-info* - type 'd' to delete a file (will prompt for confirmation) - type ']c' to go to next git item - type '[c' to go to prev git item +- type '-' to navigate up one directory - if the file is a directory, '' will open the directory - otherwise it will open the file in the buffer near the tree @@ -232,6 +233,7 @@ default keybindings will be applied to undefined keys. \ paste: 'p', \ prev_git_item: '[c', \ next_git_item: ']c', + \ dir_up: '-', \ } |Features| *nvim-tree-features* diff --git a/lua/lib/config.lua b/lua/lib/config.lua index d44e2e31..f5a52fe5 100644 --- a/lua/lib/config.lua +++ b/lua/lib/config.lua @@ -70,6 +70,7 @@ function M.get_bindings() paste = keybindings.paste or 'p', prev_git_item = keybindings.prev_git_item or '[c', next_git_item = keybindings.next_git_item or ']c', + dir_up = keybindings.dir_up or '-', } end diff --git a/lua/lib/lib.lua b/lua/lib/lib.lua index 355d43dc..1e300e8c 100644 --- a/lua/lib/lib.lua +++ b/lua/lib/lib.lua @@ -252,6 +252,7 @@ local function set_mappings() [bindings.paste] = 'on_keypress("paste")'; [bindings.prev_git_item] = 'on_keypress("prev_git_item")'; [bindings.next_git_item] = 'on_keypress("next_git_item")'; + [bindings.dir_up] = 'on_keypress("dir_up")'; gx = "xdg_open()"; } @@ -366,4 +367,16 @@ function M.toggle_dotfiles() return M.refresh_tree() end +function M.dir_up(node) + if not node then + return M.change_dir('..') + else + local newdir = vim.fn.fnamemodify(node.absolute_path, ':h') + if newdir == M.Tree.cwd then + M.change_dir('..') + end + return M.set_index_and_redraw(newdir) + end +end + return M diff --git a/lua/nvim-tree.lua b/lua/nvim-tree.lua index dfeb4475..783334d0 100644 --- a/lua/nvim-tree.lua +++ b/lua/nvim-tree.lua @@ -73,6 +73,7 @@ local keypress_funcs = { refresh = lib.refresh_tree, prev_git_item = gen_go_to('prev_git_item'), next_git_item = gen_go_to('next_git_item'), + dir_up = lib.dir_up, preview = function(node) if node.entries ~= nil or node.name == '..' then return end return lib.open_file('preview', node.absolute_path) @@ -105,19 +106,6 @@ function M.on_keypress(mode) end end -function M.dir_up() - local node = lib.get_node_at_cursor() - if not node then - return lib.change_dir('..') - else - local newdir = vim.fn.fnamemodify(node.absolute_path, ':h') - if newdir == lib.Tree.cwd then - lib.change_dir('..') - end - lib.set_index_and_redraw(newdir) - end -end - function M.refresh() lib.refresh_tree() end