diff options
| author | Peter Odding <peter@peterodding.com> | 2014-07-08 23:05:49 +0200 | 
|---|---|---|
| committer | Peter Odding <peter@peterodding.com> | 2014-07-08 23:05:49 +0200 | 
| commit | 1a09c983e5c2799598fd3eed28dd5e9e5eefbf73 (patch) | |
| tree | 31f031df98546569036892e41cd1cd7ab38d4e3a /plugin | |
| parent | 110673aeb7b401f942c31154e013c19c684fcc11 (diff) | |
| parent | 4aafe1c60ce836cb41270152ba54ba14c48e3dde (diff) | |
| download | vim-easytags-1a09c983e5c2799598fd3eed28dd5e9e5eefbf73.tar.gz | |
Merge pull request #84: Asynchronous tags file updates! \o/
This is part 1/2 of speeding up the vim-easytags plug-in. Refer to the
pull request for details: https://github.com/xolox/vim-easytags/pull/84
In part 2/2 I want to speed up the dynamic syntax highlighting.
Potentially related open issues on GitHub (probably missed a few):
 - https://github.com/xolox/vim-easytags/issues/32
 - https://github.com/xolox/vim-easytags/issues/41
 - https://github.com/xolox/vim-easytags/issues/68
Diffstat (limited to 'plugin')
| -rw-r--r-- | plugin/easytags.vim | 24 | 
1 files changed, 19 insertions, 5 deletions
| diff --git a/plugin/easytags.vim b/plugin/easytags.vim index 5b22d23..324fa81 100644 --- a/plugin/easytags.vim +++ b/plugin/easytags.vim @@ -1,6 +1,6 @@  " Vim plug-in  " Author: Peter Odding <peter@peterodding.com> -" Last Change: August 19, 2013 +" Last Change: June 29, 2014  " URL: http://peterodding.com/code/vim/easytags/  " Requires: Exuberant Ctags (http://ctags.sf.net) @@ -41,12 +41,12 @@ if !exists('g:easytags_by_filetype')  endif  if !exists('g:easytags_events') -  let g:easytags_events = [] +  let g:easytags_events = ['BufWritePost']    if !exists('g:easytags_on_cursorhold') || g:easytags_on_cursorhold      call extend(g:easytags_events, ['CursorHold', 'CursorHoldI'])    endif    if exists('g:easytags_always_enabled') && g:easytags_always_enabled -    call extend(g:easytags_events, ['BufReadPost', 'BufWritePost', 'FocusGained', 'ShellCmdPost', 'ShellFilterPost']) +    call extend(g:easytags_events, ['BufReadPost', 'FocusGained', 'ShellCmdPost', 'ShellFilterPost'])    endif  endif @@ -99,7 +99,7 @@ call xolox#easytags#register(1)  command! -bar -bang -nargs=* -complete=file UpdateTags call xolox#easytags#update(0, <q-bang> == '!', [<f-args>])  command! -bar HighlightTags call xolox#easytags#highlight() -command! -bang TagsByFileType call xolox#easytags#by_filetype(<q-bang> == '!') +command! -bang TagsByFileType call xolox#easytags#update#convert_by_filetype(<q-bang> == '!')  " Automatic commands. {{{1 @@ -111,7 +111,9 @@ augroup PluginEasyTags    autocmd VimEnter * call xolox#easytags#register(1)    " Define the automatic commands to perform updating/highlighting.    for s:eventname in g:easytags_events -    execute 'autocmd' s:eventname '* call xolox#easytags#autoload(' string(s:eventname) ')' +    if s:eventname !~? 'cursorhold' +      execute 'autocmd' s:eventname '* call xolox#easytags#autoload(' string(s:eventname) ')' +    endif    endfor    " Define an automatic command to register file type specific tags files?    if !empty(g:easytags_by_filetype) @@ -120,8 +122,20 @@ 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 +" CursorHoldI events which is rate limited so that our event handler is never +" called more than once every interval. +if index(g:easytags_events, 'CursorHold') >= 0 +  call xolox#misc#cursorhold#register({'function': 'xolox#easytags#autoload', 'arguments': ['CursorHold'], 'interval': xolox#misc#option#get('easytags_updatetime_min', 4000)/1000}) +endif +  " }}}1  " Make sure the plug-in is only loaded once. | 
