2012-06-10 11 views
25

¿Qué carácter puedo usar para poner comentarios en un archivo Exuberante Ctags .ctags?¿Cómo agregar comentarios a un archivo de configuración Exuberante Ctags?

Me gustaría agregar comentarios con explicaciones, y quizás para deshabilitar algunas expresiones regulares.

¡Pero no puedo encontrar ningún caracter de comentario que ctags-exuberante acepte!
me siguen dando la advertencia:

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

que es mejor que un error, pero aún un poco molesto.

He intentado #///* ... */ y ; como comentarios, pero ctags intenta analizarlos todos!

Aquí es un ejemplo de archivo con algunos comentarios, que se quejan de ctags:

# 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/ 

Respuesta

3

Como @joeytwiddle señala, los comentarios no son compatibles con el analizador sintáctico, pero hay una solución alternativa.

Ejemplo .ctags archivo:

--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

No se puede! Miré a través del código fuente (gracias a apt-get source). No hay controles para ignorar las líneas. El código relevante está en parseFileOptions() en options.c

Pero a veces los comentarios son necesarios, así que como solución temporal pongo un comentario como una expresión regular, de tal manera que es poco probable que coincida alguna vez.

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

El ^ ayuda al partido a fallar rápidamente, mientras que el () envoltorio es puramente para el efecto visual.

Su comentario debe ser una expresión regular válida, para evitar advertencias en stderr. (Eso significa que debe evitarse el / s no guardado, y si usa []( o ) s deben emparejarse). Consulte la solución de Tom para evitar estas restricciones.

+3

+1 para consultar el código fuente. La solución hackish es bastante fea, preferiría vivir con las advertencias. –

+3

FWIW: Este es un problema conocido: http://sourceforge.net/p/ctags/bugs/352/ – jwfearn

+0

¿Podemos sugerir el soporte para comentarios en el equipo de desarrollo? – nowox

0

Teniendo en cuenta que los comentarios no funcionan, ¿qué pasa con un archivo .ctags.readme ...

Para la mayoría de las cosas que en realidad no necesita comentario, por ejemplo, Realmente no necesitas el comentario a continuación.

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

puedo ver sin embargo, que es posible que desee agregar comentarios que explican alguna mente expresiones regulares flexión, por lo que para cada línea que tiene absoluta necesidad de que se puede copiar y pegar en el archivo .ctags.readme como un archivo de rebajas:

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/ 
``` 

Puede tener un bloque en la parte inferior del archivo ctags separado con un salto de línea, luego elimine este bloque final.

Si sólo tiene el descanso de una línea en su archivo .ctags esta sed borrará de todas las líneas después de la línea de romper

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

entonces algunos grepping sencilla para añadir las líneas de .ctags.readme en .ctags.

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

Puede usar '#' como el inicio de comentario si está utilizando Universal-CTAG (https://ctags.io).

Cuestiones relacionadas