Skip to content

Commit b2cdee5

Browse files
committed
chore(mappings): generate on_attach from user's legacy mappings
1 parent c97c97b commit b2cdee5

File tree

3 files changed

+32
-9
lines changed

3 files changed

+32
-9
lines changed

lua/nvim-tree.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ local function setup_vim_commands()
316316
api.nvim_create_user_command("NvimTreeCollapseKeepBuffers", function()
317317
collapse_all.fn(true)
318318
end, { bar = true })
319+
api.nvim_create_user_command("NvimTreeGenerateOnAttach", legacy.generate_on_attach, {})
319320
end
320321

321322
function M.change_dir(name)

lua/nvim-tree/legacy.lua

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
local utils = require "nvim-tree.utils"
2-
local log = require "nvim-tree.log"
2+
local open_file = require "nvim-tree.actions.node.open-file"
33

44
local DEFAULT_KEYMAPS = require("nvim-tree.keymap").DEFAULT_KEYMAPS
55

@@ -358,13 +358,23 @@ local function build_on_attach(call_list)
358358
return nil
359359
end
360360

361-
M.on_attach_lua = "local Api = require('nvim-tree.api')\n\nlocal on_attach = function(bufnr)\n"
361+
M.on_attach_lua = [[
362+
local Api = require('nvim-tree.api')
363+
local Lib = require('nvim-tree.lib')
364+
365+
local on_attach = function(bufnr)
366+
]]
367+
362368
for _, el in pairs(call_list) do
363369
if el.action_cb then
364-
M.on_attach_lua = string.format("%s -- TODO action_cb\n", M.on_attach_lua)
370+
M.on_attach_lua = string.format(
371+
'%s vim.keymap.set("n", "%s", function()\n local node = Lib.get_node_at_cursor()\n -- my code\n end, { buffer = bufnr, noremap = true, silent = true, nowait = true, desc = "my description" })\n',
372+
M.on_attach_lua,
373+
el.key
374+
)
365375
elseif el.keymap then
366376
M.on_attach_lua = string.format(
367-
"%s vim.keymap.set('n', '%s', %s, { buffer = bufnr, noremap = true, silent = true, nowait = true, desc = '%s', })\n",
377+
"%s vim.keymap.set('n', '%s', %s, { buffer = bufnr, noremap = true, silent = true, nowait = true, desc = '%s' })\n",
368378
M.on_attach_lua,
369379
el.key,
370380
LEGACY_CALLBACKS[el.keymap.legacy_action],
@@ -373,7 +383,6 @@ local function build_on_attach(call_list)
373383
end
374384
end
375385
M.on_attach_lua = string.format("%send\n", M.on_attach_lua)
376-
log.raw("dev", "%s", M.on_attach_lua)
377386

378387
return function(bufnr)
379388
for _, el in pairs(call_list) do
@@ -401,7 +410,7 @@ function M.move_mappings_to_keymap(opts)
401410
opts.view.mappings.custom_only = nil
402411
end
403412
if list then
404-
local keymap_by_action = utils.key_by(DEFAULT_KEYMAPS, "legacy_action")
413+
local keymap_by_legacy_action = utils.key_by(DEFAULT_KEYMAPS, "legacy_action")
405414
if not custom_only then
406415
opts.remove_keymaps = {}
407416
end
@@ -414,8 +423,8 @@ function M.move_mappings_to_keymap(opts)
414423
if map.action ~= "" then
415424
if map.action_cb then
416425
action_cb = map.action_cb
417-
elseif keymap_by_action[map.action] then
418-
keymap = keymap_by_action[map.action]
426+
elseif keymap_by_legacy_action[map.action] then
427+
keymap = keymap_by_legacy_action[map.action]
419428
end
420429
end
421430

@@ -437,6 +446,19 @@ function M.move_mappings_to_keymap(opts)
437446
end
438447
end
439448

449+
function M.generate_on_attach()
450+
if #M.on_attach_lua > 0 then
451+
local name = "/tmp/my_on_attach.lua"
452+
local file = io.open(name, "w")
453+
io.output(file)
454+
io.write(M.on_attach_lua)
455+
io.close(file)
456+
open_file.fn("edit", name)
457+
else
458+
utils.notify.info "no custom mappings"
459+
end
460+
end
461+
440462
function M.migrate_legacy_options(opts)
441463
-- g: options
442464
local msg

scripts/generate_default_keymaps.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,5 @@ io.write "local LEGACY_CALLBACKS = {\n"
6767
for _, m in pairs(DEFAULT_KEYMAPS) do
6868
io.write(string.format(' %s = "%s",\n', m.legacy_action, m.callback))
6969
end
70-
io.write("}\n")
70+
io.write "}\n"
7171
io.close(file)

0 commit comments

Comments
 (0)