Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add comments to an Exuberant Ctags config file?

What character can I use to put comments in an Exuberant Ctags .ctags file?

I would like to add comments with explanations, and perhaps to disable some regexps.

But I can't find any comment character which ctags-exuberant accepts!
I keep getting the warning:

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

which is better than an error, but still a little annoying.

I have tried # // /* ... */ and ; as comments, but ctags tries to parse them all!

Here is an example file with some comments which ctags will complain about:

# 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/
like image 628
joeytwiddle Avatar asked Jun 10 '12 23:06

joeytwiddle


Video Answer


3 Answers

You can't! I looked through the source code (thanks to apt-get source). There are no checks for lines to ignore. The relevant code is in parseFileOptions() in options.c

But sometimes comments are a neccessity, so as a workaround I put a comment in as a regexp, in such as way that it is unlikely to ever match anything.

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

The ^ helps the match to fail quickly, whilst the ( ) wrapper is purely for visual effect.

Your comment should be a valid regexp, to avoid warnings on stderr. (That means unescaped /s must be avoided, and if you use any [ ] ( or )s they should be paired up.) See Tom's solution to avoid these restrictions.

like image 92
joeytwiddle Avatar answered Oct 24 '22 04:10

joeytwiddle


As @joeytwiddle points out, comments are not supported by the parser, but there is a work-around.

Example .ctags 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.
like image 26
Tom Hale Avatar answered Oct 24 '22 04:10

Tom Hale


You can use '#' as the start of comment if you are using Universal-ctag(https://ctags.io).

like image 4
Masatake YAMATO Avatar answered Oct 24 '22 05:10

Masatake YAMATO