@@ -129,6 +129,19 @@ local LEGACY_MAPPINGS = {
129
129
}
130
130
-- stylua: ignore end
131
131
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
+
132
145
local function all_unmapped_keys (list , remove_keys )
133
146
local unmapped_keys = vim .deepcopy (remove_keys )
134
147
for _ , map in pairs (list ) do
@@ -244,23 +257,27 @@ local function generate_legacy_default_mappings()
244
257
return mappings
245
258
end
246
259
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 )
248
261
local filtered_defaults
249
262
250
- --
251
- -- remove explicitly unmapped defaults
252
- --
253
263
if remove_defaults then
264
+ --
265
+ -- unmap all defaults
266
+ --
254
267
filtered_defaults = {}
255
268
else
269
+ --
270
+ -- unmap defaults by removal and override
271
+ --
272
+ local to_unmap = vim .fn .extend (unmapped_keys , mapped_keys )
256
273
filtered_defaults = vim .tbl_filter (function (m )
257
274
if type (m .key ) == " table" then
258
275
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 )
260
277
end , m .key )
261
278
return # m .key > 0
262
279
else
263
- return not vim .tbl_contains (unmapped_keys , m .key )
280
+ return not vim .tbl_contains (to_unmap , m .key )
264
281
end
265
282
end , vim .deepcopy (defaults ))
266
283
end
@@ -295,13 +312,14 @@ function M.generate_legacy_on_attach(opts)
295
312
return
296
313
end
297
314
315
+ local mapped_keys = all_mapped_keys (list )
298
316
local unmapped_keys = all_unmapped_keys (list , remove_keymaps )
299
317
300
318
opts .on_attach = generate_on_attach_function (list , unmapped_keys , remove_defaults )
301
319
M .on_attach_lua = generate_on_attach_lua (list , unmapped_keys , remove_defaults )
302
320
303
321
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 )
305
323
end
306
324
307
325
function M .generate_on_attach ()
0 commit comments