2012-06-10 7 views
25

Quale carattere posso utilizzare per inserire commenti in un file esuberante Ctags .ctags?Come aggiungere commenti a un file di configurazione di Curt esuberante?

Vorrei aggiungere commenti con spiegazioni e forse disabilitare alcune espressioni regolari.

Ma non riesco a trovare nessun carattere di commento accettato da ctags-esuberante!
Continuo a ricevere l'avvertimento:

ctags: Warning: Ignoring non-option in /home/joey/.ctags 

che è meglio di un errore, ma ancora un po 'fastidioso.

Ho provato #///* ... */ e ; come commenti, ma ctags tenta di analizzarli tutti!

Ecco un esempio di file con alcuni commenti che ctags si lamentano:

# Add some more rules for Javascript 
--langmap=javascript:+.jpp 
--regex-javascript=/^[ \t]*var ([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\1/v,variable/ 
--regex-javascript=/^[ \t]*this\.([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]*=.*$/\1/e,export/ 
--regex-javascript=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/ 
--regex-javascript=/^\<function\>[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)/\1/f,function/ 

# Define tags for the Coffeescript language 
--langdef=coffee 
--langmap=coffee:.coffee 
--regex-coffee=/^class @?([a-zA-Z_$][0-9a-zA-Z_$]*)(extends [a-zA-Z_$][0-9a-zA-Z_$]*)?$/\1/c,class/ 
--regex-coffee=/^[ \t]*(@|this\.)([a-zA-Z_$][0-9a-zA-Z_$]*).*$/\2/e,export/ 
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*[-=]>.*$/\1/f,function/ 
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=.*[-=]>.*$/\1/f,function/ 
--regex-coffee=/^[ \t]*([a-zA-Z_$][0-9a-zA-Z_$]*)[ \t]+=[^->\n]*$/\1/v,variable/ 
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/ 

risposta

3

Come sottolinea @joeytwiddle, i commenti non sono supportati dal parser, ma c'è un work-around.

Esempio .ctags di file:

--regex-C=/$x/x/x/e/ The ctags parser currently doesn't support comments 
--regex-C=/$x/x/x/e/ This is a work-around which works with '/' characters 
--regex-C=/$x/x/x/e/ http://stackoverflow.com/questions/10973224/how-to-add-comments-to-an-exuberant-ctags-config-file 
--regex-C=/$x/x/x/e/ 
--regex-C=/$x/x/x/e/ You can add whatever comment text you want here. 
30

Non è possibile! Ho guardato attraverso il codice sorgente (grazie a apt-get source). Non ci sono controlli per le righe da ignorare. Il codice pertinente è in parseFileOptions() in options.c

Ma a volte i commenti sono una necessità, quindi come soluzione temporanea inserisco un commento come regexp, in modo tale che è improbabile che possa mai corrispondere a qualsiasi cosa.

--regex-coffee=/^(COMMENT: Disable next line when using prop tag)/\1/X,XXX/ 

Il ^ aiuta la partita a fallire rapidamente, mentre la () involucro è puramente per effetto visivo.

Il tuo commento dovrebbe essere un'espressione regolare valida, per evitare avvisi su stderr. (Ciò significa che i codici senza caratteri / s devono essere evitati e, se si utilizza qualsiasi []( o ) s, è necessario associarli.) Consultare la soluzione di Tom per evitare queste restrizioni.

+3

+1 per guardare attraverso il codice sorgente. La soluzione hackish è piuttosto brutta, preferirei vivere con gli avvertimenti. –

+3

FWIW: questo è un problema noto: http://sourceforge.net/p/ctags/bugs/352/ – jwfearn

+0

Possiamo suggerire il supporto per i commenti sul team di sviluppo? – nowox

0

Dato che i commenti non funzionano, che dire di un file .ctags.readme ...

Per la maggior parte delle cose che in realtà non c'è bisogno di un commento, ad esempio, non hai davvero bisogno del commento qui sotto.

# Define tags for the Coffeescript language 
--langdef=coffee 
--langmap=coffee:.coffee 

Vedo però che si potrebbe desiderare di aggiungere commenti che spiegano alcuni mente flessione regex, quindi per ogni linea che assolutamente bisogno è possibile copiare incollarlo nel file .ctags.readme come un file Markdown:

Forgive me father for I have regexed 
It was purely because I wanted some lovely coffee properties 
``` 
--regex-coffee=/^[ \t]*@?([a-zA-Z_$][0-9a-zA-Z_$]*):.*$/\1/p,property/ 
``` 

Si potrebbe avere un blocco nella parte inferiore del file ctags separato con un'interruzione di riga, quindi eliminare questo blocco finale.

Se avete solo la rottura di una riga nel file .ctags questa sed eliminerà tutte le linee dopo la linea di rompere

sed -i '/^\s*$/,$d' .ctags 

Poi fare qualche semplice grep per aggiungere le linee da .ctags.readme in .ctags.

grep --regex .ctags.readme >> .ctags 
1

È possibile utilizzare '#' come l'inizio di commento, se si sta utilizzando Universal-CTAG (https://ctags.io).