@@ -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