Skip to content

Commit b353afe

Browse files
committed
implement <C-c> keymap for closing file buffer
1 parent 55f8121 commit b353afe

File tree

6 files changed

+78
-83
lines changed

6 files changed

+78
-83
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
local M = {}
2+
---
3+
---@param mode string
4+
---@param filename string
5+
---@return nil
6+
function M.fn(filename)
7+
vim.cmd({ cmd = "bdelete", args = { filename } })
8+
end
9+
10+
function M.setup(opts) end
11+
12+
return M

lua/nvim-tree/actions/node/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ local M = {}
22

33
M.file_popup = require("nvim-tree.actions.node.file-popup")
44
M.open_file = require("nvim-tree.actions.node.open-file")
5+
M.close_file_buffer = require("nvim-tree.actions.node.close-file-buffer")
56
M.run_command = require("nvim-tree.actions.node.run-command")
67
M.system_open = require("nvim-tree.actions.node.system-open")
78

89
function M.setup(opts)
910
require("nvim-tree.actions.node.system-open").setup(opts)
1011
require("nvim-tree.actions.node.file-popup").setup(opts)
1112
require("nvim-tree.actions.node.open-file").setup(opts)
13+
require("nvim-tree.actions.node.close-file-buffer").setup(opts)
1214
end
1315

1416
return M

lua/nvim-tree/actions/tree/init.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function M.setup(opts)
1111
M.find_file.setup(opts)
1212
M.modifiers.setup(opts)
1313
M.open.setup(opts)
14-
-- M.close_file_buffer.setup(opts)
14+
M.close_file_buffer.setup(opts)
1515
M.toggle.setup(opts)
1616
M.resize.setup(opts)
1717
end

lua/nvim-tree/api.lua

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ Api.tree.is_visible = wrap(view.is_visible)
205205

206206
Api.tree.winid = wrap(view.winid)
207207

208-
209208
Api.tree.close_file_buffer = wrap(actions.tree.close_file_buffer.fn)
210209

211210
Api.fs.create = wrap_node_or_nil(actions.fs.create_file.fn)
@@ -233,12 +232,12 @@ local function edit(mode, node)
233232
local path = file_link and file_link.link_to or node.absolute_path
234233
actions.node.open_file.fn(mode, path)
235234
end
236-
--
235+
237236
---@param node Node
238-
local function close(node)
237+
local function close_file_buffer(node)
239238
local file_link = node:as(FileLinkNode)
240239
local path = file_link and file_link.link_to or node.absolute_path
241-
actions.node.close_file.fn(path)
240+
actions.node.close_file_buffer.fn(path)
242241
end
243242

244243
---@param mode string
@@ -260,7 +259,7 @@ local function open_or_expand_or_dir_up(mode, toggle_group)
260259
end
261260
end
262261

263-
Api.node.close.close = wrap_node(close)
262+
Api.node.close.close_file_buffer = wrap_node(close_file_buffer)
264263

265264
Api.node.open.edit = wrap_node(open_or_expand_or_dir_up("edit"))
266265
Api.node.open.drop = wrap_node(open_or_expand_or_dir_up("drop"))

lua/nvim-tree/commands.lua

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -103,25 +103,6 @@ local CMDS = {
103103
})
104104
end,
105105
},
106-
{
107-
name = "NvimTreeCloseFileBuffer",
108-
opts = {
109-
desc = "nvim-tree: close file buffer",
110-
-- bang = true,
111-
-- bar = true,
112-
nargs = 1,
113-
bar = true,
114-
},
115-
command = function(c)
116-
-- vim.print(api.node)
117-
api.node.close.close(c.args)
118-
-- api.tree.find_file({
119-
-- open = true,
120-
-- focus = true,
121-
-- update_root = c.bang,
122-
-- })
123-
end,
124-
},
125106
{
126107
name = "NvimTreeResize",
127108
opts = {

lua/nvim-tree/keymap.lua

Lines changed: 59 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -44,64 +44,65 @@ function M.default_on_attach(bufnr)
4444
end
4545

4646
-- BEGIN_DEFAULT_ON_ATTACH
47-
vim.keymap.set("n", "<C-]>", api.tree.change_root_to_node, opts("CD"))
48-
vim.keymap.set("n", "<C-e>", api.node.open.replace_tree_buffer, opts("Open: In Place"))
49-
vim.keymap.set("n", "<C-k>", api.node.show_info_popup, opts("Info"))
50-
vim.keymap.set("n", "<C-r>", api.fs.rename_sub, opts("Rename: Omit Filename"))
51-
vim.keymap.set("n", "<C-t>", api.node.open.tab, opts("Open: New Tab"))
52-
vim.keymap.set("n", "<C-v>", api.node.open.vertical, opts("Open: Vertical Split"))
53-
vim.keymap.set("n", "<C-x>", api.node.open.horizontal, opts("Open: Horizontal Split"))
54-
vim.keymap.set("n", "<BS>", api.node.navigate.parent_close, opts("Close Directory"))
55-
vim.keymap.set("n", "<CR>", api.node.open.edit, opts("Open"))
56-
vim.keymap.set("n", "<Tab>", api.node.open.preview, opts("Open Preview"))
57-
vim.keymap.set("n", ">", api.node.navigate.sibling.next, opts("Next Sibling"))
58-
vim.keymap.set("n", "<", api.node.navigate.sibling.prev, opts("Previous Sibling"))
59-
vim.keymap.set("n", ".", api.node.run.cmd, opts("Run Command"))
60-
vim.keymap.set("n", "-", api.tree.change_root_to_parent, opts("Up"))
61-
vim.keymap.set("n", "a", api.fs.create, opts("Create File Or Directory"))
62-
vim.keymap.set("n", "bd", api.marks.bulk.delete, opts("Delete Bookmarked"))
63-
vim.keymap.set("n", "bt", api.marks.bulk.trash, opts("Trash Bookmarked"))
64-
vim.keymap.set("n", "bmv", api.marks.bulk.move, opts("Move Bookmarked"))
65-
vim.keymap.set("n", "B", api.tree.toggle_no_buffer_filter, opts("Toggle Filter: No Buffer"))
66-
vim.keymap.set("n", "c", api.fs.copy.node, opts("Copy"))
67-
vim.keymap.set("n", "C", api.tree.toggle_git_clean_filter, opts("Toggle Filter: Git Clean"))
68-
vim.keymap.set("n", "[c", api.node.navigate.git.prev, opts("Prev Git"))
69-
vim.keymap.set("n", "]c", api.node.navigate.git.next, opts("Next Git"))
70-
vim.keymap.set("n", "d", api.fs.remove, opts("Delete"))
71-
vim.keymap.set("n", "D", api.fs.trash, opts("Trash"))
72-
vim.keymap.set("n", "E", api.tree.expand_all, opts("Expand All"))
73-
vim.keymap.set("n", "e", api.fs.rename_basename, opts("Rename: Basename"))
74-
vim.keymap.set("n", "]e", api.node.navigate.diagnostics.next, opts("Next Diagnostic"))
75-
vim.keymap.set("n", "[e", api.node.navigate.diagnostics.prev, opts("Prev Diagnostic"))
76-
vim.keymap.set("n", "F", api.live_filter.clear, opts("Live Filter: Clear"))
77-
vim.keymap.set("n", "f", api.live_filter.start, opts("Live Filter: Start"))
78-
vim.keymap.set("n", "g?", api.tree.toggle_help, opts("Help"))
79-
vim.keymap.set("n", "gy", api.fs.copy.absolute_path, opts("Copy Absolute Path"))
80-
vim.keymap.set("n", "ge", api.fs.copy.basename, opts("Copy Basename"))
81-
vim.keymap.set("n", "H", api.tree.toggle_hidden_filter, opts("Toggle Filter: Dotfiles"))
82-
vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("Toggle Filter: Git Ignore"))
83-
vim.keymap.set("n", "J", api.node.navigate.sibling.last, opts("Last Sibling"))
84-
vim.keymap.set("n", "K", api.node.navigate.sibling.first, opts("First Sibling"))
85-
vim.keymap.set("n", "L", api.node.open.toggle_group_empty, opts("Toggle Group Empty"))
86-
vim.keymap.set("n", "M", api.tree.toggle_no_bookmark_filter, opts("Toggle Filter: No Bookmark"))
87-
vim.keymap.set("n", "m", api.marks.toggle, opts("Toggle Bookmark"))
88-
vim.keymap.set("n", "o", api.node.open.edit, opts("Open"))
89-
vim.keymap.set("n", "O", api.node.open.no_window_picker, opts("Open: No Window Picker"))
90-
vim.keymap.set("n", "p", api.fs.paste, opts("Paste"))
91-
vim.keymap.set("n", "P", api.node.navigate.parent, opts("Parent Directory"))
92-
vim.keymap.set("n", "q", api.tree.close, opts("Close"))
93-
vim.keymap.set("n", "r", api.fs.rename, opts("Rename"))
94-
vim.keymap.set("n", "R", api.tree.reload, opts("Refresh"))
95-
vim.keymap.set("n", "s", api.node.run.system, opts("Run System"))
96-
vim.keymap.set("n", "S", api.tree.search_node, opts("Search"))
97-
vim.keymap.set("n", "u", api.fs.rename_full, opts("Rename: Full Path"))
98-
vim.keymap.set("n", "U", api.tree.toggle_custom_filter, opts("Toggle Filter: Hidden"))
99-
vim.keymap.set("n", "W", api.tree.collapse_all, opts("Collapse"))
100-
vim.keymap.set("n", "x", api.fs.cut, opts("Cut"))
101-
vim.keymap.set("n", "y", api.fs.copy.filename, opts("Copy Name"))
102-
vim.keymap.set("n", "Y", api.fs.copy.relative_path, opts("Copy Relative Path"))
103-
vim.keymap.set("n", "<2-LeftMouse>", api.node.open.edit, opts("Open"))
104-
vim.keymap.set("n", "<2-RightMouse>", api.tree.change_root_to_node, opts("CD"))
47+
vim.keymap.set("n", "<C-]>", api.tree.change_root_to_node, opts("CD"))
48+
vim.keymap.set("n", "<C-e>", api.node.open.replace_tree_buffer, opts("Open: In Place"))
49+
vim.keymap.set("n", "<C-k>", api.node.show_info_popup, opts("Info"))
50+
vim.keymap.set("n", "<C-r>", api.fs.rename_sub, opts("Rename: Omit Filename"))
51+
vim.keymap.set("n", "<C-t>", api.node.open.tab, opts("Open: New Tab"))
52+
vim.keymap.set("n", "<C-v>", api.node.open.vertical, opts("Open: Vertical Split"))
53+
vim.keymap.set("n", "<C-x>", api.node.open.horizontal, opts("Open: Horizontal Split"))
54+
vim.keymap.set("n", "<BS>", api.node.navigate.parent_close, opts("Close Directory"))
55+
vim.keymap.set("n", "<C-c>", api.node.close.close_file_buffer, opts("Close file buffer (if any exist)"))
56+
vim.keymap.set("n", "<CR>", api.node.open.edit, opts("Open"))
57+
vim.keymap.set("n", "<Tab>", api.node.open.preview, opts("Open Preview"))
58+
vim.keymap.set("n", ">", api.node.navigate.sibling.next, opts("Next Sibling"))
59+
vim.keymap.set("n", "<", api.node.navigate.sibling.prev, opts("Previous Sibling"))
60+
vim.keymap.set("n", ".", api.node.run.cmd, opts("Run Command"))
61+
vim.keymap.set("n", "-", api.tree.change_root_to_parent, opts("Up"))
62+
vim.keymap.set("n", "a", api.fs.create, opts("Create File Or Directory"))
63+
vim.keymap.set("n", "bd", api.marks.bulk.delete, opts("Delete Bookmarked"))
64+
vim.keymap.set("n", "bt", api.marks.bulk.trash, opts("Trash Bookmarked"))
65+
vim.keymap.set("n", "bmv", api.marks.bulk.move, opts("Move Bookmarked"))
66+
vim.keymap.set("n", "B", api.tree.toggle_no_buffer_filter, opts("Toggle Filter: No Buffer"))
67+
vim.keymap.set("n", "c", api.fs.copy.node, opts("Copy"))
68+
vim.keymap.set("n", "C", api.tree.toggle_git_clean_filter, opts("Toggle Filter: Git Clean"))
69+
vim.keymap.set("n", "[c", api.node.navigate.git.prev, opts("Prev Git"))
70+
vim.keymap.set("n", "]c", api.node.navigate.git.next, opts("Next Git"))
71+
vim.keymap.set("n", "d", api.fs.remove, opts("Delete"))
72+
vim.keymap.set("n", "D", api.fs.trash, opts("Trash"))
73+
vim.keymap.set("n", "E", api.tree.expand_all, opts("Expand All"))
74+
vim.keymap.set("n", "e", api.fs.rename_basename, opts("Rename: Basename"))
75+
vim.keymap.set("n", "]e", api.node.navigate.diagnostics.next, opts("Next Diagnostic"))
76+
vim.keymap.set("n", "[e", api.node.navigate.diagnostics.prev, opts("Prev Diagnostic"))
77+
vim.keymap.set("n", "F", api.live_filter.clear, opts("Live Filter: Clear"))
78+
vim.keymap.set("n", "f", api.live_filter.start, opts("Live Filter: Start"))
79+
vim.keymap.set("n", "g?", api.tree.toggle_help, opts("Help"))
80+
vim.keymap.set("n", "gy", api.fs.copy.absolute_path, opts("Copy Absolute Path"))
81+
vim.keymap.set("n", "ge", api.fs.copy.basename, opts("Copy Basename"))
82+
vim.keymap.set("n", "H", api.tree.toggle_hidden_filter, opts("Toggle Filter: Dotfiles"))
83+
vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("Toggle Filter: Git Ignore"))
84+
vim.keymap.set("n", "J", api.node.navigate.sibling.last, opts("Last Sibling"))
85+
vim.keymap.set("n", "K", api.node.navigate.sibling.first, opts("First Sibling"))
86+
vim.keymap.set("n", "L", api.node.open.toggle_group_empty, opts("Toggle Group Empty"))
87+
vim.keymap.set("n", "M", api.tree.toggle_no_bookmark_filter, opts("Toggle Filter: No Bookmark"))
88+
vim.keymap.set("n", "m", api.marks.toggle, opts("Toggle Bookmark"))
89+
vim.keymap.set("n", "o", api.node.open.edit, opts("Open"))
90+
vim.keymap.set("n", "O", api.node.open.no_window_picker, opts("Open: No Window Picker"))
91+
vim.keymap.set("n", "p", api.fs.paste, opts("Paste"))
92+
vim.keymap.set("n", "P", api.node.navigate.parent, opts("Parent Directory"))
93+
vim.keymap.set("n", "q", api.tree.close, opts("Close"))
94+
vim.keymap.set("n", "r", api.fs.rename, opts("Rename"))
95+
vim.keymap.set("n", "R", api.tree.reload, opts("Refresh"))
96+
vim.keymap.set("n", "s", api.node.run.system, opts("Run System"))
97+
vim.keymap.set("n", "S", api.tree.search_node, opts("Search"))
98+
vim.keymap.set("n", "u", api.fs.rename_full, opts("Rename: Full Path"))
99+
vim.keymap.set("n", "U", api.tree.toggle_custom_filter, opts("Toggle Filter: Hidden"))
100+
vim.keymap.set("n", "W", api.tree.collapse_all, opts("Collapse"))
101+
vim.keymap.set("n", "x", api.fs.cut, opts("Cut"))
102+
vim.keymap.set("n", "y", api.fs.copy.filename, opts("Copy Name"))
103+
vim.keymap.set("n", "Y", api.fs.copy.relative_path, opts("Copy Relative Path"))
104+
vim.keymap.set("n", "<2-LeftMouse>", api.node.open.edit, opts("Open"))
105+
vim.keymap.set("n", "<2-RightMouse>", api.tree.change_root_to_node, opts("CD"))
105106
-- END_DEFAULT_ON_ATTACH
106107
end
107108

0 commit comments

Comments
 (0)