comments - ¿Cómo agregar comentarios a un archivo de configuración de Ctags exuberantes?
warnings exuberant-ctags (4)
¿Qué personaje puedo usar para poner comentarios en un archivo .ctags
Ctags exuberantes?
Me gustaría agregar comentarios con explicaciones, y quizás deshabilitar algunas expresiones regulares.
¡Pero no puedo encontrar ningún personaje de comentario que ctags-exuberante acepte!
Sigo recibiendo la advertencia:
ctags: Warning: Ignoring non-option in /home/joey/.ctags
Lo que es mejor que un error, pero sigue siendo un poco molesto.
He intentado #
//
/* ... */
y ;
Como comentarios, pero ctags trata de analizarlos todos!
Aquí hay un archivo de ejemplo con algunos comentarios de los que ctags se quejarán:
# 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/
Como señala @joeytwiddle, los comentarios no son compatibles con el analizador, pero hay una solución alternativa.
Ejemplo de archivo .ctags
:
--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://.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.
Dado que los comentarios no funcionan, ¿qué pasa con un archivo .ctags.readme
...
Para la mayoría de las cosas, realmente no necesita un comentario, por ejemplo, realmente no necesita el comentario a continuación.
# Define tags for the Coffeescript language
--langdef=coffee
--langmap=coffee:.coffee
Sin embargo, puedo ver que es posible que desee agregar comentarios que expliquen algunas expresiones regulares, por lo que para cada línea que lo necesite absolutamente, puede copiarla y pegarla en el archivo .ctags.readme
como un archivo de .ctags.readme
:
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/
```
Mantener .ctags.readme
y .ctags
Podría tener un bloque en la parte inferior del archivo ctags separado con un salto de línea y luego eliminar este bloque final.
Si solo tiene un salto de línea en su archivo .ctags
, este sed eliminará todas las líneas después del salto de línea.
Luego haga un poco de grep para las líneas --regex
para agregar las líneas de .ctags.readme
a .ctags
.
sed -i ''/^/s*$/,$d'' .ctags
grep "^--regex" .ctags.readme >> .ctags
Puede usar ''#'' como el inicio del comentario si está usando Universal-ctag ( https://ctags.io ).
Usted no puede Miré a través del código fuente (gracias a apt-get source). No hay controles para que las líneas ignoren. El código relevante está en parseFileOptions () en options.c
Pero a veces los comentarios son una necesidad, por lo que como solución alternativa, puse un comentario como una expresión regular, de forma tal que es poco probable que coincida con algo.
--regex-coffee=/^(COMMENT: Disable next line when using prop tag)//1/X,XXX/
La ^
ayuda a que la coincidencia falle rápidamente, mientras que la envoltura (
)
es solo para efectos visuales.
Su comentario debe ser una expresión regular válida, para evitar advertencias en stderr. (Eso significa que deben evitarse las /
s sin escape, y si usa cualquier [
]
(
o )
s deben estar emparejados). Consulte la solución de Tom para evitar estas restricciones.