Pregunta

Estoy usando el complemento "taglist" de vim para navegar por los archivos fuente en mi proyecto, pero me he encontrado con un problema peculiar al trabajar con archivos C ++ (a diferencia de C; esto puede suceder con otros lenguajes como Java) .

Para cada función en un archivo, mostrará dos etiquetas: una completamente calificada, la otra no, es decir:

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

y así sucesivamente. Esto es comprensible, ya que mi archivo ctags se genera con --extra= + q, que como se indica en la página de manual de ctags,

Incluya [s] una entrada de etiqueta calificada por clase adicional para cada etiqueta que sea miembro de una clase (para los lenguajes para los que se extrae esta información; actualmente C ++, Eiffel y Java). La forma real de la etiqueta calificada depende del idioma del que se derivó la etiqueta (utilizando una forma que sea más natural para cómo se especifican las llamadas calificadas en el idioma). Para C ++, tiene el formato "clase :: miembro"; para Eiffel y Java, tiene el formato "class.member". Esto puede permitir una ubicación más fácil de etiquetas específicas cuando ocurren múltiples ocurrencias de un nombre de etiqueta en el archivo de etiqueta. Sin embargo, tenga en cuenta que esto podría potencialmente duplicar el tamaño del archivo de etiqueta.

Por lo tanto, esta configuración me resulta útil cuando uso Ctrl +] para navegar, etc., por lo que preferiría mantenerla, pero prefiero que las versiones calificadas se eliminen en el menú de la lista de lemas. Busqué una respuesta pero no encontré nada relacionado con este problema; sorprendente, ya que creo que OmniCPPComplete recomienda el uso de --extra= + q, por lo que esperaría que muchos programadores de C ++ lo usen.

A continuación se muestran mis configuraciones de ctags y taglist. ¡Cualquier ayuda apreciada!

~ / .ctags:

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

~ / .vimrc (configuración de taglist extraída)

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

Solución

¡La respuesta me estaba mirando a la cara!No me había dado cuenta de que taglist estaba ejecutando sus propios ctags cada vez, no solo usando mi archivo de etiquetas.Todo lo que tenía que hacer era deshabilitar explícitamente esas configuraciones específicas de C ++ en el comando ctags de taglist así:

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

¡Esperamos que esta publicación sea útil para cualquier otra persona que tenga el mismo problema!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top