Domanda

Sto usando il plug-in "taglist" di vim per navigare tra i file sorgenti nel mio progetto, ma ho riscontrato un problema peculiare nel lavorare con i file C ++ (al contrario di C; questo può accadere con altri linguaggi come Java) .

Per ogni funzione in un file, verranno visualizzati due tag: uno completamente qualificato, l'altro no, ad esempio:

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

e così via. Questo è comprensibile, poiché il mio file ctags viene generato con --extra= + q, che come indicato nella pagina di manuale per ctags,

Includere [s] una voce di tag qualificata in più per ogni tag che è un membro di una classe (per i linguaggi per i quali vengono estratte queste informazioni; attualmente C ++, Eiffel e Java). La forma effettiva del tag qualificato dipende dalla lingua da cui è stato derivato il tag (utilizzando una forma più naturale per il modo in cui le chiamate qualificate vengono specificate nella lingua). Per C ++, è nella forma "class :: member"; per Eiffel e Java, è nella forma "class.member". Ciò può consentire una posizione più semplice di un tag specifico quando si verificano più occorrenze di un nome di tag nel file di tag. Nota, tuttavia, che questo potrebbe potenzialmente più del doppio delle dimensioni del file di tag.

Questa impostazione è quindi utile per me quando utilizzo Ctrl +] per navigare e così via, quindi preferirei mantenerla, ma preferirei che le versioni qualificate fossero rimosse nel menu della taglist. Ho cercato una risposta ma non ho trovato nulla relativo a questo problema; sorprendente perché penso che OmniCPPComplete consiglia l'uso di --extra= + q, quindi mi aspetto che molti programmatori C ++ lo utilizzino.

Di seguito sono riportati i miei ctag e le impostazioni dell'elenco di tag. Qualsiasi aiuto apprezzato!

~ / .ctags:

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

~ / .vimrc (impostazioni della taglist estratte)

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'
È stato utile?

Soluzione

La risposta mi stava fissando in faccia!Non mi ero reso conto che la taglist stava effettivamente eseguendo i propri ctag ogni volta, non solo usando il mio file di tag.Tutto quello che dovevo fare era disabilitare esplicitamente quelle impostazioni specifiche del C ++ nel comando ctags della taglist così:

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

Speriamo che questo post possa tornare utile a chiunque abbia lo stesso problema!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top