Skip to content

Commit 4ec73bb

Browse files
committed
legacy generate api handles overrides
1 parent 3ca305c commit 4ec73bb

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

lua/nvim-tree/keymap-legacy.lua

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,19 @@ local LEGACY_MAPPINGS = {
129129
}
130130
-- stylua: ignore end
131131

132+
local function all_mapped_keys(list)
133+
local mapped_keys = {}
134+
for _, map in pairs(list) do
135+
if map.action ~= "" then
136+
local keys = type(map.key) == "table" and map.key or { map.key }
137+
for _, key in ipairs(keys) do
138+
table.insert(mapped_keys, key)
139+
end
140+
end
141+
end
142+
return mapped_keys
143+
end
144+
132145
local function all_unmapped_keys(list, remove_keys)
133146
local unmapped_keys = vim.deepcopy(remove_keys)
134147
for _, map in pairs(list) do
@@ -244,23 +257,27 @@ local function generate_legacy_default_mappings()
244257
return mappings
245258
end
246259

247-
local function generate_legacy_active_mappings(list, defaults, unmapped_keys, remove_defaults)
260+
local function generate_legacy_active_mappings(list, defaults, unmapped_keys, mapped_keys, remove_defaults)
248261
local filtered_defaults
249262

250-
--
251-
-- remove explicitly unmapped defaults
252-
--
253263
if remove_defaults then
264+
--
265+
-- unmap all defaults
266+
--
254267
filtered_defaults = {}
255268
else
269+
--
270+
-- unmap defaults by removal and override
271+
--
272+
local to_unmap = vim.fn.extend(unmapped_keys, mapped_keys)
256273
filtered_defaults = vim.tbl_filter(function(m)
257274
if type(m.key) == "table" then
258275
m.key = vim.tbl_filter(function(k)
259-
return not vim.tbl_contains(unmapped_keys, k)
276+
return not vim.tbl_contains(to_unmap, k)
260277
end, m.key)
261278
return #m.key > 0
262279
else
263-
return not vim.tbl_contains(unmapped_keys, m.key)
280+
return not vim.tbl_contains(to_unmap, m.key)
264281
end
265282
end, vim.deepcopy(defaults))
266283
end
@@ -295,13 +312,14 @@ function M.generate_legacy_on_attach(opts)
295312
return
296313
end
297314

315+
local mapped_keys = all_mapped_keys(list)
298316
local unmapped_keys = all_unmapped_keys(list, remove_keymaps)
299317

300318
opts.on_attach = generate_on_attach_function(list, unmapped_keys, remove_defaults)
301319
M.on_attach_lua = generate_on_attach_lua(list, unmapped_keys, remove_defaults)
302320

303321
M.legacy_default = generate_legacy_default_mappings()
304-
M.legacy_active = generate_legacy_active_mappings(list, M.legacy_default, unmapped_keys, remove_defaults)
322+
M.legacy_active = generate_legacy_active_mappings(list, M.legacy_default, unmapped_keys, mapped_keys, remove_defaults)
305323
end
306324

307325
function M.generate_on_attach()

0 commit comments

Comments
 (0)