문제

I'm using vim's "taglist" plugin to navigate source files in my project, but I've come across an issue peculiar to working with C++ files (as opposed to C; this may happen with other languages such as Java).

For each function in a file, it will display two tags: one fully qualified, the other not, ie:

initialise [()]
ClassName::initialise [()]
update [()]
ClassName::update [()]

and so forth. This is understandable, as my ctags file is generated with --extra=+q, which as stated in the manpage for ctags,

Include[s] an extra class-qualified tag entry for each tag which is a member of a class (for languages for which this information is extracted; currently C++, Eiffel, and Java). The actual form of the qualified tag depends upon the language from which the tag was derived (using a form that is most natural for how qualified calls are specified in the language). For C++, it is in the form "class::member"; for Eiffel and Java, it is in the form "class.member". This may allow easier location of a specific tags when multiple occurrences of a tag name occur in the tag file. Note, however, that this could potentially more than double the size of the tag file.

This setting is therefore useful to me when I'm using Ctrl+] to navigate and so forth, so I'd prefer to keep it in, but I'd rather the qualified versions were stripped in the taglist menu. I've searched for an answer but not found anything related to this problem; surprising as I think OmniCPPComplete recommends use of --extra=+q so I'd expect many C++ programmers would be using it.

Following are my ctags and taglist settings. Any help appreciated!

~/.ctags:

--c++-kinds=+p
--fields=+iaS
--extra=+q

~/.vimrc (taglist settings extracted)

let Tlist_GainFocus_On_ToggleOpen = 1
let Tlist_Process_File_Always = 1
let Tlist_File_Fold_Auto_Close = 0
let Tlist_Enable_Fold_Column = 0
let Tlist_Use_Right_Window = 1
let Tlist_Show_One_File = 1
let Tlist_Ctags_Cmd = 'ctags'
도움이 되었습니까?

해결책

The answer was staring me in the face! I hadn't realised taglist was actually running its own ctags every time, not just using my tags file. All I needed to do was explicitly disable those C++ specific settings in taglist's ctags command thus:

let Tlist_Ctags_Cmd = 'ctags --extra=-q --c++-kinds=-p'

Hopefully this post will come in handy to anyone else who has the same issue!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top