Pergunta

Estou usando o plug-in "taglist" do vim para navegar pelos arquivos de origem em meu projeto, mas me deparei com um problema peculiar ao trabalhar com arquivos C ++ (ao contrário de C; isso pode acontecer com outras linguagens como Java) .

Para cada função em um arquivo, ele exibirá duas tags: uma totalmente qualificada, a outra não, ou seja:

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

e assim por diante. Isso é compreensível, já que meu arquivo ctags é gerado com --extra= + q, que conforme declarado na página de manual para ctags,

Inclui [s] uma entrada de tag extra de classe qualificada para cada tag que é membro de uma classe (para linguagens para as quais esta informação é extraída; atualmente C ++, Eiffel e Java). A forma real da tag qualificada depende do idioma do qual a tag foi derivada (usando uma forma que seja mais natural para como as chamadas qualificadas são especificadas no idioma). Para C ++, está no formato "classe :: membro"; para Eiffel e Java, está no formato "class.member". Isso pode permitir a localização mais fácil de tags específicas quando ocorrem várias ocorrências de um nome de tag no arquivo de tags. Observe, no entanto, que isso pode potencialmente mais do que o dobro do tamanho do arquivo de tag.

Esta configuração é, portanto, útil para mim quando estou usando Ctrl +] para navegar e assim por diante, então prefiro mantê-la, mas prefiro que as versões qualificadas sejam removidas do menu taglist. Procurei uma resposta, mas não encontrei nada relacionado a esse problema; surpreendente, pois acho que OmniCPPComplete recomenda o uso de --extra= + q, portanto, espero que muitos programadores C ++ o usem.

A seguir estão minhas configurações de ctags e lista de tags. Qualquer ajuda apreciada!

~ / .ctags:

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

~ / .vimrc (configurações da lista de tags extraídas)

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'
Foi útil?

Solução

A resposta estava bem na minha cara!Eu não tinha percebido que o taglist estava realmente executando seus próprios ctags todas as vezes, não apenas usando meu arquivo de tags.Tudo que eu precisei fazer foi desabilitar explicitamente essas configurações específicas de C ++ no comando ctags do taglist assim:

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

Esperamos que esta postagem seja útil para qualquer pessoa que tenha o mesmo problema!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top