Skip to content

Commit c82d1b0

Browse files
committed
NvimTreeCreateOnAttach -> NvimTreeMappingsToOnAttach, simplify on_attach
1 parent 9375eef commit c82d1b0

File tree

2 files changed

+62
-80
lines changed

2 files changed

+62
-80
lines changed

lua/nvim-tree.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ local function setup_vim_commands()
320320
api.nvim_create_user_command("NvimTreeCollapseKeepBuffers", function()
321321
collapse_all.fn(true)
322322
end, { bar = true })
323-
api.nvim_create_user_command("NvimTreeCreateOnAttach", actions.create_on_attach, {})
323+
api.nvim_create_user_command("NvimTreeMappingsToOnAttach", actions.mappings_to_on_attach, {})
324324
end
325325

326326
function M.change_dir(name)

lua/nvim-tree/actions/init.lua

Lines changed: 61 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -395,75 +395,71 @@ function M.setup(opts)
395395
log.raw("config", "%s\n", vim.inspect(M.mappings))
396396
end
397397

398-
local LEGACY_TO_ON_ATTACH = {
399-
edit = { inject = true, fn = "Api.node.open.edit" },
400-
edit_in_place = { inject = true, fn = "Api.node.open.replace_tree_buffer" },
401-
edit_no_picker = { inject = true, fn = "Api.node.open.no_window_picker" },
402-
cd = { inject = true, fn = "Api.tree.change_root_to_node" },
403-
vsplit = { inject = true, fn = "Api.node.open.vertical" },
404-
split = { inject = true, fn = "Api.node.open.horizontal" },
405-
tabnew = { inject = true, fn = "Api.node.open.tab" },
406-
prev_sibling = { inject = true, fn = "Api.node.navigate.sibling.prev" },
407-
next_sibling = { inject = true, fn = "Api.node.navigate.sibling.next" },
408-
parent_node = { inject = true, fn = "Api.node.navigate.parent" },
409-
close_node = { inject = true, fn = "Api.node.navigate.parent_close" },
410-
preview = { inject = true, fn = "Api.node.open.preview" },
411-
first_sibling = { inject = true, fn = "Api.node.navigate.sibling.first" },
412-
last_sibling = { inject = true, fn = "Api.node.navigate.sibling.last" },
413-
toggle_git_ignored = { inject = false, fn = "Api.tree.toggle_gitignore_filter" },
414-
toggle_dotfiles = { inject = false, fn = "Api.tree.toggle_hidden_filter" },
415-
toggle_custom = { inject = false, fn = "Api.tree.toggle_custom_filter" },
416-
refresh = { inject = true, fn = "Api.tree.reload" },
417-
create = { inject = true, fn = "Api.fs.create" },
418-
remove = { inject = true, fn = "Api.fs.remove" },
419-
trash = { inject = true, fn = "Api.fs.trash" },
420-
rename = { inject = true, fn = "Api.fs.rename" },
421-
full_rename = { inject = true, fn = "Api.fs.rename_sub" },
422-
cut = { inject = true, fn = "Api.fs.cut" },
423-
copy = { inject = true, fn = "Api.fs.copy.node" },
424-
paste = { inject = true, fn = "Api.fs.paste" },
425-
copy_name = { inject = true, fn = "Api.fs.copy.filename" },
426-
copy_path = { inject = true, fn = "Api.fs.copy.relative_path" },
427-
copy_absolute_path = { inject = true, fn = "Api.fs.copy.absolute_path" },
428-
prev_diag_item = { inject = true, fn = "Api.node.navigate.diagnostics.next" },
429-
prev_git_item = { inject = true, fn = "Api.node.navigate.git.next" },
430-
next_diag_item = { inject = true, fn = "Api.node.navigate.diagnostics.prev" },
431-
next_git_item = { inject = true, fn = "Api.node.navigate.git.prev" },
432-
dir_up = { inject = true, fn = "Api.tree.change_root_to_parent" },
433-
system_open = { inject = true, fn = "Api.node.run.system" },
434-
live_filter = { inject = false, fn = "Api.live_filter.start" },
435-
clear_live_filter = { inject = false, fn = "Api.live_filter.clear" },
436-
close = { inject = true, fn = "Api.tree.close" },
437-
collapse_all = { inject = false, fn = "Api.tree.collapse_all" },
438-
expand_all = { inject = true, fn = "Api.tree.expand_all" },
439-
search_node = { inject = false, fn = "Api.tree.search_node" },
440-
run_file_command = { inject = true, fn = "Api.node.run.cmd" },
441-
toggle_file_info = { inject = true, fn = "Api.node.show_info_popup" },
442-
toggle_help = { inject = false, fn = "Api.tree.toggle_help" },
443-
toggle_mark = { inject = true, fn = "Api.marks.toggle" },
444-
bulk_move = { inject = false, fn = "Api.marks.bulk.move" },
398+
local ACTION_TO_API = {
399+
edit = "Api.node.open.edit",
400+
edit_in_place = "Api.node.open.replace_tree_buffer",
401+
edit_no_picker = "Api.node.open.no_window_picker",
402+
cd = "Api.tree.change_root_to_node",
403+
vsplit = "Api.node.open.vertical",
404+
split = "Api.node.open.horizontal",
405+
tabnew = "Api.node.open.tab",
406+
prev_sibling = "Api.node.navigate.sibling.prev",
407+
next_sibling = "Api.node.navigate.sibling.next",
408+
parent_node = "Api.node.navigate.parent",
409+
close_node = "Api.node.navigate.parent_close",
410+
preview = "Api.node.open.preview",
411+
first_sibling = "Api.node.navigate.sibling.first",
412+
last_sibling = "Api.node.navigate.sibling.last",
413+
toggle_git_ignored = "Api.tree.toggle_gitignore_filter",
414+
toggle_dotfiles = "Api.tree.toggle_hidden_filter",
415+
toggle_custom = "Api.tree.toggle_custom_filter",
416+
refresh = "Api.tree.reload",
417+
create = "Api.fs.create",
418+
remove = "Api.fs.remove",
419+
trash = "Api.fs.trash",
420+
rename = "Api.fs.rename",
421+
full_rename = "Api.fs.rename_sub",
422+
cut = "Api.fs.cut",
423+
copy = "Api.fs.copy.node",
424+
paste = "Api.fs.paste",
425+
copy_name = "Api.fs.copy.filename",
426+
copy_path = "Api.fs.copy.relative_path",
427+
copy_absolute_path = "Api.fs.copy.absolute_path",
428+
prev_diag_item = "Api.node.navigate.diagnostics.next",
429+
prev_git_item = "Api.node.navigate.git.next",
430+
next_diag_item = "Api.node.navigate.diagnostics.prev",
431+
next_git_item = "Api.node.navigate.git.prev",
432+
dir_up = "Api.tree.change_root_to_parent",
433+
system_open = "Api.node.run.system",
434+
live_filter = "Api.live_filter.start",
435+
clear_live_filter = "Api.live_filter.clear",
436+
close = "Api.tree.close",
437+
collapse_all = "Api.tree.collapse_all",
438+
expand_all = "Api.tree.expand_all",
439+
search_node = "Api.tree.search_node",
440+
run_file_command = "Api.node.run.cmd",
441+
toggle_file_info = "Api.node.show_info_popup",
442+
toggle_help = "Api.tree.toggle_help",
443+
toggle_mark = "Api.marks.toggle",
444+
bulk_move = "Api.marks.bulk.move",
445445
}
446446

447-
function M.create_on_attach()
447+
function M.mappings_to_on_attach()
448448
local keymaps = {}
449449
local max_key = 0
450+
local max_fn = 0
450451

451452
for _, m in ipairs(M.mappings) do
452-
if LEGACY_TO_ON_ATTACH[m.action] then
453-
if type(m.key) == "table" then
454-
for _, k in ipairs(m.key) do
455-
table.insert(keymaps, {
456-
key = k,
457-
action = LEGACY_TO_ON_ATTACH[m.action],
458-
})
459-
max_key = math.max(#k, max_key)
460-
end
461-
else
453+
if ACTION_TO_API[m.action] then
454+
local keys = type(m.key) == "table" and m.key or { m.key }
455+
for _, k in ipairs(keys) do
456+
local fn = ACTION_TO_API[m.action]
462457
table.insert(keymaps, {
463-
key = m.key,
464-
action = LEGACY_TO_ON_ATTACH[m.action],
458+
key = k,
459+
fn = fn,
465460
})
466-
max_key = math.max(#m.key, max_key)
461+
max_key = math.max(#k, max_key)
462+
max_fn = math.max(#fn, max_fn)
467463
end
468464
end
469465
end
@@ -472,28 +468,14 @@ function M.create_on_attach()
472468
local Api = require("nvim-tree.api")
473469
474470
local function on_attach(bufnr)
475-
local function map(key, fn)
476-
vim.keymap.set("n", key, function()
477-
fn()
478-
end, { buffer = bufnr, noremap = true })
479-
end
480-
481-
local function map_inject_node(key, fn)
482-
vim.keymap.set("n", key, function(node)
483-
fn(node)
484-
end, { buffer = bufnr, noremap = true })
485-
end
471+
local opts = { buffer = bufnr, noremap = true, silent = true, nowait = true, }
486472
487473
]]
488474

489-
local fmt_inject = string.format("%%s map_inject_node(%%-%d.%ds %%s)\n", max_key + 3, max_key + 3)
490-
local fmt_no_inject = string.format("%%s map (%%-%d.%ds %%s)\n", max_key + 3, max_key + 3)
475+
local fmt =
476+
string.format("%%s vim.keymap.set('n', %%-%d.%ds %%-%d.%ds, opts)\n", max_key + 3, max_key + 3, max_fn, max_fn)
491477
for _, m in ipairs(keymaps) do
492-
if m.action.inject then
493-
out = string.format(fmt_inject, out, "'" .. m.key .. "',", m.action.fn)
494-
else
495-
out = string.format(fmt_no_inject, out, "'" .. m.key .. "',", m.action.fn)
496-
end
478+
out = string.format(fmt, out, "'" .. m.key .. "',", m.fn)
497479
end
498480
out = out .. [[
499481
end

0 commit comments

Comments
 (0)