From b10e1ddfe6d26e3e33d956b13c14c29b22847dd6 Mon Sep 17 00:00:00 2001 From: Rami Elwan Date: Fri, 8 Mar 2024 20:19:02 +0100 Subject: [PATCH 1/4] feat: add copy basename --- lua/nvim-tree/actions/fs/copy-paste.lua | 6 ++++++ lua/nvim-tree/api.lua | 1 + lua/nvim-tree/keymap.lua | 1 + 3 files changed, 8 insertions(+) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index 87f9bbb545b..633a46081a2 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -295,6 +295,12 @@ function M.copy_filename(node) copy_to_clipboard(node.name) end +---@param node Node +function M.copy_basename(node) + local basename = vim.fn.fnamemodify(node.name, ':r') + copy_to_clipboard(basename) +end + ---@param node Node function M.copy_path(node) local absolute_path = node.absolute_path diff --git a/lua/nvim-tree/api.lua b/lua/nvim-tree/api.lua index c3f4722c37d..9587b813a87 100644 --- a/lua/nvim-tree/api.lua +++ b/lua/nvim-tree/api.lua @@ -163,6 +163,7 @@ Api.fs.print_clipboard = wrap(actions.fs.copy_paste.print_clipboard) Api.fs.copy.node = wrap_node(actions.fs.copy_paste.copy) Api.fs.copy.absolute_path = wrap_node(actions.fs.copy_paste.copy_absolute_path) Api.fs.copy.filename = wrap_node(actions.fs.copy_paste.copy_filename) +Api.fs.copy.basename = wrap_node(actions.fs.copy_paste.copy_basename) Api.fs.copy.relative_path = wrap_node(actions.fs.copy_paste.copy_path) ---@param mode string diff --git a/lua/nvim-tree/keymap.lua b/lua/nvim-tree/keymap.lua index 0b0797a8dd6..5e36d92a909 100644 --- a/lua/nvim-tree/keymap.lua +++ b/lua/nvim-tree/keymap.lua @@ -72,6 +72,7 @@ function M.default_on_attach(bufnr) vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling')) + vim.keymap.set('n', 'l', api.fs.copy.basename, opts('Copy Basename')) vim.keymap.set('n', 'L', api.node.open.toggle_group_empty, opts('Toggle Group Empty')) vim.keymap.set('n', 'M', api.tree.toggle_no_bookmark_filter, opts('Toggle Filter: No Bookmark')) vim.keymap.set('n', 'm', api.marks.toggle, opts('Toggle Bookmark')) From da6a781b3845ce53a58259a603cfd02e18c1eb73 Mon Sep 17 00:00:00 2001 From: Rami Elwan Date: Sat, 9 Mar 2024 09:49:31 +0100 Subject: [PATCH 2/4] fix: change keymap for copy basename --- lua/nvim-tree/keymap.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nvim-tree/keymap.lua b/lua/nvim-tree/keymap.lua index 5e36d92a909..1999c73d262 100644 --- a/lua/nvim-tree/keymap.lua +++ b/lua/nvim-tree/keymap.lua @@ -68,11 +68,11 @@ function M.default_on_attach(bufnr) vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start')) vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help')) vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) + vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename')) vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles')) vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling')) vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts('First Sibling')) - vim.keymap.set('n', 'l', api.fs.copy.basename, opts('Copy Basename')) vim.keymap.set('n', 'L', api.node.open.toggle_group_empty, opts('Toggle Group Empty')) vim.keymap.set('n', 'M', api.tree.toggle_no_bookmark_filter, opts('Toggle Filter: No Bookmark')) vim.keymap.set('n', 'm', api.marks.toggle, opts('Toggle Bookmark')) From 5db62d5a9f1cc27630380d04b393bde9bf3249e1 Mon Sep 17 00:00:00 2001 From: Rami Elwan Date: Sun, 10 Mar 2024 13:25:05 +0100 Subject: [PATCH 3/4] fix: use double quotes --- lua/nvim-tree/actions/fs/copy-paste.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lua/nvim-tree/actions/fs/copy-paste.lua b/lua/nvim-tree/actions/fs/copy-paste.lua index 633a46081a2..efb2b1ef16a 100644 --- a/lua/nvim-tree/actions/fs/copy-paste.lua +++ b/lua/nvim-tree/actions/fs/copy-paste.lua @@ -297,7 +297,7 @@ end ---@param node Node function M.copy_basename(node) - local basename = vim.fn.fnamemodify(node.name, ':r') + local basename = vim.fn.fnamemodify(node.name, ":r") copy_to_clipboard(basename) end From 3d0f6e58bb3e82821ba307003c9c8e98f4d584b5 Mon Sep 17 00:00:00 2001 From: Rami Elwan Date: Sun, 10 Mar 2024 13:31:49 +0100 Subject: [PATCH 4/4] fix: add missing help --- doc/nvim-tree-lua.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/nvim-tree-lua.txt b/doc/nvim-tree-lua.txt index 426846d5dce..93a3f6f63b9 100644 --- a/doc/nvim-tree-lua.txt +++ b/doc/nvim-tree-lua.txt @@ -185,6 +185,7 @@ Show the mappings: `g?` `f` Live Filter: Start |nvim-tree-api.live_filter.start()| `g?` Help |nvim-tree-api.tree.toggle_help()| `gy` Copy Absolute Path |nvim-tree-api.fs.copy.absolute_path()| +`ge` Copy Basename |nvim-tree-api.fs.copy.basename()| `H` Toggle Filter: Dotfiles |nvim-tree-api.tree.toggle_hidden_filter()| `I` Toggle Filter: Git Ignore |nvim-tree-api.tree.toggle_gitignore_filter()| `J` Last Sibling |nvim-tree-api.node.navigate.sibling.last()| @@ -2240,6 +2241,7 @@ You are encouraged to copy these to your own |nvim-tree.on_attach| function. vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start')) vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help')) vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path')) + vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename')) vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles')) vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore')) vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))