@@ -373,12 +373,25 @@ function File:attach_buffer(force, opt)
373
373
local result = string.find (buf_km_dict [" lhs" ], lhs_pat )
374
374
375
375
if result ~= nil and result ~= " " then
376
+ local rhs = " "
377
+ if buf_km_dict .rhs ~= nil then
378
+ rhs = buf_km_dict .rhs
379
+ else
380
+ rhs = buf_km_dict .callback
381
+ end
376
382
-- save buffer keymap
377
383
if buf_km_dict .buffer == self .bufnr then
378
384
local obj = {
379
385
bufnr = self .bufnr ,
380
386
mode = mode ,
381
- km_dict = buf_km_dict ,
387
+ lhs = name_lhs ,
388
+ rhs = rhs ,
389
+ opts = {
390
+ buffer = self .bufnr ,
391
+ desc = buf_km_dict [" desc" ],
392
+ silent = buf_km_dict [" silent" ],
393
+ noremap = buf_km_dict [" noremap" ],
394
+ },
382
395
}
383
396
table.insert (R , obj )
384
397
end
@@ -425,19 +438,13 @@ function File:detach_buffer()
425
438
end
426
439
end
427
440
428
- local orig_bufnr = vim .fn .bufnr ()
429
441
-- restore buffer keymaps
430
442
for _ , dict in pairs (R ) do
431
443
if dict .bufnr == self .bufnr then
432
- -- switch to required buffer to restore keymap to
433
- pcall (api .nvim_set_current_buf , self .bufnr )
434
- pcall (vim .fn .mapset , dict .mode , 0 , dict .km_dict )
444
+ vim .keymap .set (dict .mode , dict .lhs , dict .rhs , dict .opts )
435
445
end
436
446
end
437
447
438
- -- switch back to original buffer
439
- pcall (api .nvim_set_current_buf , orig_bufnr )
440
-
441
448
-- Diagnostics
442
449
if state .disable_diagnostics then
443
450
if HAS_NVIM_0_10 then
0 commit comments