From a5ae0a5a18e266f8a62b3e256208afcbb20fe5b5 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Mon, 5 May 2025 15:15:44 +0100 Subject: [PATCH] Handle quickfix autocmd changing buffer To keep things fast we turn off gitgutter in the current buffer during quickfix commands, e.g. :vimgrep, and turn it back on afterwards. However the user may have a quickfix autocmd which makes a different buffer the current one, e.g. :cwindow. Previously this caused an error because gitgutter expected the current buffer to remain current; now we explicitly enable the original current buffer. Fixes #904. --- plugin/gitgutter.vim | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugin/gitgutter.vim b/plugin/gitgutter.vim index bb7d50c..b2e9691 100644 --- a/plugin/gitgutter.vim +++ b/plugin/gitgutter.vim @@ -341,8 +341,18 @@ augroup gitgutter autocmd BufFilePre * call s:on_buffilepre(expand('')) autocmd BufFilePost * call s:on_buffilepost(expand('')) - autocmd QuickFixCmdPre *vimgrep* let b:gitgutter_was_enabled = gitgutter#utility#getbufvar(expand(''), 'enabled') | GitGutterBufferDisable - autocmd QuickFixCmdPost *vimgrep* if b:gitgutter_was_enabled | GitGutterBufferEnable | endif | unlet b:gitgutter_was_enabled + autocmd QuickFixCmdPre *vimgrep* + \ if gitgutter#utility#getbufvar(expand(''), 'enabled') | + \ let s:gitgutter_was_enabled = expand('') | + \ else | + \ let s:gitgutter_was_enabled = 0 | + \ endif | + \ GitGutterBufferDisable + autocmd QuickFixCmdPost *vimgrep* + \ if s:gitgutter_was_enabled | + \ call gitgutter#buffer_enable(s:gitgutter_was_enabled) | + \ endif | + \ unlet s:gitgutter_was_enabled augroup END " }}}