Skip to content

Commit cf62b9e

Browse files
committed
fix: mapset can only restore to current buffer
* nvim_buf_get_keymap is sufficient, does not require maparg
1 parent 090cc16 commit cf62b9e

File tree

1 file changed

+14
-18
lines changed

1 file changed

+14
-18
lines changed

lua/diffview/vcs/file.lua

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -366,31 +366,21 @@ function File:attach_buffer(force, opt)
366366
lhs_pat = string.gsub(lhs_pat, "%[", "%%%[")
367367
lhs_pat = string.gsub(lhs_pat, "%]", "%%%]")
368368

369-
-- force focus buffer
370-
-- vim.api.nvim_set_current_buf(self.bufnr)
371-
--
372-
-- if not focussed on corresponding buffer
373-
-- this function does not return correct buffer keymaps
374369
local buf_mappings = vim.api.nvim_buf_get_keymap(self.bufnr, mode)
375370

376371
for _, buf_km_dict in pairs(buf_mappings) do
377372
if buf_km_dict["lhs"] ~= nil then
378373
local result = string.find(buf_km_dict["lhs"], lhs_pat)
379374

380375
if result ~= nil and result ~= "" then
381-
-- get keymap associated with buffer
382-
local dict = vim.fn.maparg(name_lhs, mode, 0, 1)
383-
if dict ~= nil then
384-
-- save buffer keymap
385-
if dict.buffer == 1 then
386-
local obj = {
387-
bufnr = self.bufnr,
388-
mode = mode,
389-
abbr = 0,
390-
km_dict = dict,
391-
}
392-
table.insert(R, obj)
393-
end
376+
-- save buffer keymap
377+
if buf_km_dict.buffer == self.bufnr then
378+
local obj = {
379+
bufnr = self.bufnr,
380+
mode = mode,
381+
km_dict = buf_km_dict,
382+
}
383+
table.insert(R, obj)
394384
end
395385
-- found buffer keymap, so stop searching
396386
do
@@ -435,13 +425,19 @@ function File:detach_buffer()
435425
end
436426
end
437427

428+
local orig_bufnr = vim.fn.bufnr()
438429
-- restore buffer keymaps
439430
for _, dict in pairs(R) do
440431
if dict.bufnr == self.bufnr then
432+
-- switch to required buffer to restore keymap to
433+
vim.api.nvim_set_current_buf(self.bufnr)
441434
vim.fn.mapset(dict.mode, 0, dict.km_dict)
442435
end
443436
end
444437

438+
-- switch back to original buffer
439+
vim.api.nvim_set_current_buf(orig_bufnr)
440+
445441
-- Diagnostics
446442
if state.disable_diagnostics then
447443
if HAS_NVIM_0_10 then

0 commit comments

Comments
 (0)