Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
easytags.vim 2.4.11: Vim(let):E713: Cannot use empty key for Dictionary #16
Can anyone help for the following issue? Thanks.
" If you like one of the existing styles you can link them:
" You can also define your own style if you want:
" set this if you use symlinks
I think the error happens because the plug-in is trying to read a corrupt tags file. If you can reproduce the issue, please execute the Vim command
I think I find the problem. ctags somehow cannot generate tags for my .vimrc file now. it produces something like this:
$ cat tags
By the way, I am trying to read the Error Message:
Does it mean that the error happens at line 5 in function canonicalize and backtracked to xolox#easytags#autoload. If that is right, I cannot understand the error because function canonicalize is just about file names.
The error message starts on the left with the function at the bottom of the call stack and ends at the right with the function in which the actual error was encountered:
The output of Exuberant Ctags is parsed from
The plug-in should be doing this automatically already, given your configuration (see the function
Thanks for your help. :)
Does 'not found in 'runtimepath': "autoload/xolox/shell.vim" ' tell anything to help?
It seems the tags generated are correct.
I nailed down the problem to the following key mapping:
I just need to comment out this line,
any idea about this problem? Thanks for your help!
The easytags plug-in also uses the CursorHold automatic command: Every time the automatic command fires the plug-in checks for changes and runs Exuberant Ctags. The 'updatetime' option is global so when
I'm not sure if there is a sane way to fix this. What I can do is add a check to easytags so that if the 'updatetime' is very low, it will give a warning and temporarily disable execution.
The easytags plug-in updates your tags files like this:
To answer your question: The easytags plug-in uses
I suspect that the unsorted tags error only happens when Vim tries to read the tags file while its being written. In this case I may be able to fix this problem permanently by writing a new tags file to ~/.vim/tags/filetype.tmp and renaming it to ~/.vim/tags/filetype when done.
Thanks for the updates. I just tried it out. It works great except 1 problem:
I tried to debug it, but I can get it fixed in an hour. I am sure you can figure it out much quicker than I do.
and I found a small typo to fix:
On Sep 4, 2011, at 8:03 AM, xolox wrote:
added a commit
Sep 5, 2011
Sorry about that, it was an unrelated change (see issue #15) that was not backwards compatible and maybe a bit of a surprise. In the commit above (fae8ddd) I've restored the former behavior when
One more question about the performance of easytags. I have a kernel project which generates tags of about 10M size. I have eliminated all possible events as the following config.
I noticed that you have the vim-shell plugin which can run cmd in the background. But it does not help this situation.
My guess is, if I do not want to get instant highlight update, the other work to update tags should be all done in the background and return to the UI without noticeable delay.
On Sep 5, 2011, at 2:59 PM, xolox wrote:
The plug-in is slowing Vim down in your case because every time you save a file the plug-in updates the tags file, in effect reading+filtering+sorting+writing the whole 10 MB every time... Right now my plug-in doesn't have a good way to deal with this problem and solving it is kind of tricky. There are two basic options:
If the first option is not useful to you and you're okay with compiling a binary that wraps Exuberant Ctags, I may decide to publish the wrapper code (even though it's still kind of a mess). I hope this helps!
I got another solution for this performance issue: using remote server to update tags.
Basically, a new vim window is opened to do the work asynchronously. This will update the tags without blocking current vim window. Part of the code snippets are attached for your reference.
let g:easytags_servername = "EASYTAGSREMOTE"
let g:easytags_update_interval = 60
if v:servername != g:easytags_servername
On Sep 15, 2011, at 5:22 PM, Peter Odding wrote: