-
Notifications
You must be signed in to change notification settings - Fork 109
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
easytags.vim 2.4.11: Vim(let):E713: Cannot use empty key for Dictionary #16
Comments
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. |
I have to add --language-force=vim option for ctags to generate tags for the .vimrc. How can I configure this. |
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! http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle |
One more thing, I notice easy tag use --sort=no option to generate ctags. why is that? I ask because (1) sort should be good for searching, especially for large tag data (2) sometimes, vim shows up message about unsorted tags error. |
The 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. |
Just now I committed three changes based on your feedback (thanks for that!). If you're satisfied with these changes, please close this issue, otherwise maybe you have suggestions? |
Thanks for the updates. I just tried it out. It works great except 1 problem: My Settings: 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:
|
Some users want the plug-in to use existing project specific tags files but fall back to the global tags file or a file type specific tags file if a project specific tags file does not exist. Other users want the plug-in to automatically create project specific tags files. Both are reasonable options to have. I hope with this change we can all be happy :-) (see also issue #15 and issue #16 on GitHub).
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 |
It works well now. Thanks for the update :) |
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! |
Hi Peter 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. .vimrclet g:easytags_servername = "EASYTAGSREMOTE" let g:easytags_update_interval = 60 if v:servername != g:easytags_servername .funcfunc! g:EasyTagsRemoteUpdate(event)
endf On Sep 15, 2011, at 5:22 PM, Peter Odding wrote:
|
Can anyone help for the following issue? Thanks.
Error Message:
easytags.vim 2.4.11: Vim(let):E713: Cannot use empty key for Dictionary (at function xolox#easytags#autoload..xolox#easytags#update..103_filter_merge_tags..103_find_tagged_files..103_canonicalize, line 5)
Configuration:
set tags=./tags;,$HOME/.vim/vimtags
let g:easytags_always_enabled = 1
let g:easytags_file = '
/.vim/vimtags/easytags'/.vim/vimtags/"let g:easytags_dynamic_files = 1
let g:easytags_by_filetype = "
let g:easytags_auto_highlight = 1
if has("autocmd")
autocmd FileType cpp,python,java let g:easytags_include_members = 1
endif
" If you like one of the existing styles you can link them:
highlight link cMember Special
" You can also define your own style if you want:
highlight cMember gui=italic
" set this if you use symlinks
let g:easytags_resolve_links = 1
The text was updated successfully, but these errors were encountered: