@@ -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+
132145local 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
245258end
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 )
305323end
306324
307325function M .generate_on_attach ()
0 commit comments