Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Enable deferring tags file registration (VimEnter)

By default the plug-in initializes the &tags option as soon as possible
so that the global tags file is available when using "vim -t some_tag".
If you don't use "vim -t" and want to defer registering the global tags
file until the interface has been initialized you can now set the global
variable g:easytags_register_late = 1.

This commit is based on a pull request from Daniel Hahler, I added the
option to enable either mode of initialization (I guess Daniel doesn't
use "vim -t some_tag", but I certainly do :-). Here's the original
commit message:

    Move calling RegisterTagsFile to `au VimEnter`.

    Calling RegisterTagsFile on VimEnter instead of when including the
    plugin appears to make it behave better when (re)setting 'tags' in
    vimrc.

    I do not remember if this is related to using tplugin only.
  • Loading branch information...
commit 3466f613e926645ac6fd6474cf0404adc416477b 1 parent fffde42
@blueyed blueyed authored committed
Showing with 19 additions and 4 deletions.
  1. +19 −4 plugin/easytags.vim
View
23 plugin/easytags.vim
@@ -1,10 +1,10 @@
" Vim plug-in
" Author: Peter Odding <peter@peterodding.com>
-" Last Change: March 19, 2011
+" Last Change: April 11, 2011
" URL: http://peterodding.com/code/vim/easytags/
" Requires: Exuberant Ctags (http://ctags.sf.net)
" License: MIT
-" Version: 2.2.2
+" Version: 2.2.3
" Support for automatic update using the GLVS plug-in.
" GetLatestVimScripts: 3114 1 :AutoInstall: easytags.zip
@@ -50,6 +50,10 @@ if !exists('g:easytags_include_members')
let g:easytags_include_members = 0
endif
+if !exists('g:easytags_register_late')
+ let g:easytags_register_late = 0
+endif
+
function! s:InitEasyTags(version)
" Check that the location of Exuberant Ctags has been configured or that the
" correct version of the program exists in one of its default locations.
@@ -152,8 +156,13 @@ function! s:RegisterTagsFile()
endif
endfunction
-" Let Vim know about the global tags file created by this plug-in.
-call s:RegisterTagsFile()
+" By default this plug-in initializes the &tags option as soon as possible so
+" that the global tags file is available when using "vim -t some_tag". If you
+" don't use "vim -t" and want to defer registering the global tags file until
+" the interface has been initialized you can set g:easytags_register_late=1.
+if !g:easytags_register_late
+ call s:RegisterTagsFile()
+endif
" The :UpdateTags and :HighlightTags commands. {{{1
@@ -164,6 +173,12 @@ command! -bar HighlightTags call xolox#easytags#highlight()
augroup PluginEasyTags
autocmd!
+ if g:easytags_register_late
+ " This is the alternative way of registering the global tags file using
+ " the automatic command event "VimEnter". Apparently this makes the
+ " easytags plug-in behave better when used together with tplugin?
+ autocmd VimEnter * call s:RegisterTagsFile()
+ endif
if g:easytags_always_enabled
" TODO Also on FocusGained because tags files might be updated externally?
autocmd BufReadPost,BufWritePost * call xolox#easytags#autoload()

3 comments on commit 3466f61

@blueyed

Thanks for pulling it.

I was not aware that "-t" would stop working this way (at least would not be fully setup).

Is it possible to do both and remove the option for this? Like calling it on load and when entering Vim?
This way it would be setup for "-t", then vimrc might reset it, and then it gets re-fixed when entering Vim.

Is there something like "do this after any config" maybe?
I could imagine shipping this code in "after/plugin/easytags.vim"..

@xolox
Owner

Is it possible to do both and remove the option for this? Like calling it on load and when entering Vim?
This way it would be setup for "-t", then vimrc might reset it, and then it gets re-fixed when entering Vim.

Yes this seems like a better approach, I always like keeping the list of options as short as possible :-). I should have realized yesterday that I could just call s:RegisterTagsFile() twice because it's idempotent anyway...

Is there something like "do this after any config" maybe?

Not that I'm aware of. However, I was always under the impression that vimrc scripts are loaded before any plug-ins, otherwise it would be impossible to disable plug-ins by setting e.g. g:loaded_easytags = 1 in a vimrc script. Take this with a grain of salt though; I've never used tplugin and it might interact with Vim's plug-in loading in funky ways.

@xolox
Owner

I just committed c1635d6 which changes the tags file registration as you've suggested. Thanks for your input!

Please sign in to comment.
Something went wrong with that request. Please try again.