Skip to content

Commit 8f2a50f

Browse files
feat: add api.fs.copy.basename, default mapping ge (#2698)
* feat: add copy basename * fix: change keymap for copy basename * fix: use double quotes * fix: add missing help --------- Co-authored-by: Alexander Courtis <[email protected]>
1 parent c64becf commit 8f2a50f

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

doc/nvim-tree-lua.txt

+2
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ Show the mappings: `g?`
185185
`f` Live Filter: Start |nvim-tree-api.live_filter.start()|
186186
`g?` Help |nvim-tree-api.tree.toggle_help()|
187187
`gy` Copy Absolute Path |nvim-tree-api.fs.copy.absolute_path()|
188+
`ge` Copy Basename |nvim-tree-api.fs.copy.basename()|
188189
`H` Toggle Filter: Dotfiles |nvim-tree-api.tree.toggle_hidden_filter()|
189190
`I` Toggle Filter: Git Ignore |nvim-tree-api.tree.toggle_gitignore_filter()|
190191
`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.
22402241
vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start'))
22412242
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
22422243
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
2244+
vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename'))
22432245
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles'))
22442246
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore'))
22452247
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))

lua/nvim-tree/actions/fs/copy-paste.lua

+6
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,12 @@ function M.copy_filename(node)
295295
copy_to_clipboard(node.name)
296296
end
297297

298+
---@param node Node
299+
function M.copy_basename(node)
300+
local basename = vim.fn.fnamemodify(node.name, ":r")
301+
copy_to_clipboard(basename)
302+
end
303+
298304
---@param node Node
299305
function M.copy_path(node)
300306
local absolute_path = node.absolute_path

lua/nvim-tree/api.lua

+1
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ Api.fs.print_clipboard = wrap(actions.fs.copy_paste.print_clipboard)
163163
Api.fs.copy.node = wrap_node(actions.fs.copy_paste.copy)
164164
Api.fs.copy.absolute_path = wrap_node(actions.fs.copy_paste.copy_absolute_path)
165165
Api.fs.copy.filename = wrap_node(actions.fs.copy_paste.copy_filename)
166+
Api.fs.copy.basename = wrap_node(actions.fs.copy_paste.copy_basename)
166167
Api.fs.copy.relative_path = wrap_node(actions.fs.copy_paste.copy_path)
167168

168169
---@param mode string

lua/nvim-tree/keymap.lua

+1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ function M.default_on_attach(bufnr)
6868
vim.keymap.set('n', 'f', api.live_filter.start, opts('Live Filter: Start'))
6969
vim.keymap.set('n', 'g?', api.tree.toggle_help, opts('Help'))
7070
vim.keymap.set('n', 'gy', api.fs.copy.absolute_path, opts('Copy Absolute Path'))
71+
vim.keymap.set('n', 'ge', api.fs.copy.basename, opts('Copy Basename'))
7172
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts('Toggle Filter: Dotfiles'))
7273
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts('Toggle Filter: Git Ignore'))
7374
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts('Last Sibling'))

0 commit comments

Comments
 (0)