From 6c7a66349ec7c1c92cb5f77afd44330189815d46 Mon Sep 17 00:00:00 2001 From: Peter Odding Date: Sun, 29 Jun 2014 19:54:08 +0200 Subject: Disable automatic tags file updates during :vimgrep This change is related to pull request #83 however that pull request wasn't merged here (and won't be merged at all) because it was based on the old/dead `async-cleanup' feature branch (see pull request #49 on GitHub) instead of the new `async-take-two' feature branch (see pull request #84 on GitHub). This change set implements the equivalent on the new feature branch (without introducing another option). --- autoload/xolox/easytags.vim | 12 ++++++++++++ plugin/easytags.vim | 7 ++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/autoload/xolox/easytags.vim b/autoload/xolox/easytags.vim index 4de7b1f..9524570 100644 --- a/autoload/xolox/easytags.vim +++ b/autoload/xolox/easytags.vim @@ -408,6 +408,18 @@ function! xolox#easytags#async_callback(response) " {{{2 endif endfunction +function! xolox#easytags#disable_automatic_updates() " {{{2 + let s:easytags_auto_update_save = xolox#misc#option#get('easytags_auto_update', 1) + let g:easytags_auto_update = 0 +endfunction + +function! xolox#easytags#restore_automatic_updates() " {{{2 + if exists('s:easytags_auto_update_save') + let g:easytags_auto_update = s:easytags_auto_update_save + unlet s:easytags_auto_update_save + else +endfunction + " Public API for definition of file type specific dynamic syntax highlighting. {{{1 function! xolox#easytags#define_tagkind(object) " {{{2 diff --git a/plugin/easytags.vim b/plugin/easytags.vim index a20b85c..4da7962 100644 --- a/plugin/easytags.vim +++ b/plugin/easytags.vim @@ -1,6 +1,6 @@ " Vim plug-in " Author: Peter Odding -" Last Change: June 22, 2014 +" Last Change: June 29, 2014 " URL: http://peterodding.com/code/vim/easytags/ " Requires: Exuberant Ctags (http://ctags.sf.net) @@ -122,6 +122,11 @@ augroup PluginEasyTags " After reloading a buffer the dynamic syntax highlighting is lost. The " following code makes sure the highlighting is refreshed afterwards. autocmd BufReadPost * unlet! b:easytags_last_highlighted + " During :vimgrep each searched buffer triggers an asynchronous tags file + " update resulting in races for the tags file. To avoid this we temporarily + " disable automatic tags file updates during :vimgrep. + "autocmd QuickFixCmdPre *vimgrep* call xolox#easytags#disable_automatic_updates() + "autocmd QuickFixCmdPost *vimgrep* call xolox#easytags#restore_automatic_updates() augroup END " Use vim-misc to register an event handler for Vim's CursorHold and -- cgit v1.2.3