Merge pull request #56 from kristijanhusak/feature/go-to-git-items

Add mappings for jumping to previous or next git item.
This commit is contained in:
Kiyan Yazdani
2020-07-22 14:01:44 +02:00
committed by GitHub
5 changed files with 51 additions and 12 deletions

View File

@@ -51,6 +51,14 @@ let g:lua_tree_bindings = {
\ 'toggle_ignored': 'I',
\ 'preview': '<Tab>',
\ 'cd': '<C-]>',
\ 'create': 'a',
\ 'remove': 'd',
\ 'rename': 'r',
\ 'cut': 'x',
\ 'copy': 'c',
\ 'paste': 'p',
\ 'prev_git_item': '[c',
\ 'next_git_item': ']c',
}
" Disable default mappings by plugin
@@ -97,6 +105,8 @@ highlight LuaTreeFolderIcon guibg=blue
- type `c` to add/remove file/directory to copy clipboard
- type `p` to paste from clipboard. Cut clipboard has precedence over copy (will prompt for confirmation)
- 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
- if the file is a directory, `<CR>` will open the directory otherwise it will open the file in the buffer near the tree
- if the file is a symlink, `<CR>` will follow the symlink (if the target is a file)
- `<C-v>` will open the file in a vertical split

View File

@@ -145,6 +145,8 @@ INFORMATIONS *nvim-tree-info*
- type 'p' to paste from clipboard. Cut clipboard has precedence over copy
(will prompt for confirmation)
- 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
- if the file is a directory, '<CR>' will open the directory
- otherwise it will open the file in the buffer near the tree
@@ -178,6 +180,8 @@ default keybindings will be applied to undefined keys.
\ cut: 'x',
\ copy: 'c',
\ paste: 'p',
\ prev_git_item: '[c',
\ next_git_item: ']c',
\ }
|Features| *nvim-tree-features*

View File

@@ -58,6 +58,8 @@ function M.get_bindings()
cut = keybindings.cut or 'x',
copy = keybindings.copy or 'c',
paste = keybindings.paste or 'p',
prev_git_item = keybindings.prev_git_item or '[c',
next_git_item = keybindings.next_git_item or ']c',
}
end

View File

@@ -213,6 +213,8 @@ local function set_mappings()
[bindings.cut] = 'on_keypress("cut")';
[bindings.copy] = 'on_keypress("copy")';
[bindings.paste] = 'on_keypress("paste")';
[bindings.prev_git_item] = 'on_keypress("prev_git_item")';
[bindings.next_git_item] = 'on_keypress("next_git_item")';
gx = "xdg_open()";
}

View File

@@ -1,5 +1,6 @@
local luv = vim.loop
local lib = require'lib.lib'
local config = require'lib.config'
local colors = require'lib.colors'
local renderer = require'lib.renderer'
local fs = require'lib.fs'
@@ -28,6 +29,18 @@ function M.open()
end
end
local function gen_go_to(mode)
local icon_state = config.get_icon_state()
local flags = mode == 'prev_git_item' and 'b' or ''
local icons = table.concat(vim.tbl_values(icon_state.icons.git_icons), '\\|')
return function()
return icon_state.show_git_icon and vim.fn.search(icons, flags)
end
end
local go_to_prev_git_item = gen_go_to('prev_git_item')
local go_to_next_git_item = gen_go_to('next_git_item')
function M.on_keypress(mode)
local node = lib.get_node_at_cursor()
if not node then return end
@@ -55,6 +68,14 @@ function M.on_keypress(mode)
return lib.toggle_ignored()
end
if mode == 'prev_git_item' then
return go_to_prev_git_item()
end
if mode == 'next_git_item' then
return go_to_next_git_item()
end
if node.name == ".." then
return lib.change_dir("..")
elseif mode == "cd" and node.entries ~= nil then