如何在Exuberant Ctags配置文件中添加注释?

时间:2012-06-10 23:37:07

标签: comments warnings ctags exuberant-ctags

我可以使用哪个字符将评论放入Exuberant Ctags .ctags文件中?

我想添加带有解释的注释,也许是为了禁用一些正则表达式。

但我找不到ctags-exuberant接受的任何评论字符!
我一直收到警告:

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

这比错误更好,但仍然有点烦人。

我已尝试# // /* ... */;作为评论,但ctags尝试解析所有内容!

这是一个示例文件,其中包含一些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/

4 个答案:

答案 0 :(得分:30)

你不能!我查看了源代码(感谢apt-get source)。没有检查要忽略的行。相关代码位于options.c中的parseFileOptions()

但有时评论是必要的,所以作为一种解决方法,我将评论作为正则表达式,以便它不可能匹配任何东西。

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

^可帮助匹配快速失败,而( )包装器纯粹是为了视觉效果。

您的评论应该是有效的正则表达式,以避免在stderr上发出警告。 (这意味着必须避免使用未转义的/,如果您使用任何[ ] (),则应将其配对。)请参阅Tom's避免这些限制的解决方案。

答案 1 :(得分:7)

正如@joeytwiddle指出的那样,解析器不支持注释,但有一个解决方法。

示例.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://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.

答案 2 :(得分:2)

您可以使用&#39;#&#39;如果您使用的是Universal-ctag(https://ctags.io),请作为评论的开始。

答案 3 :(得分:1)

鉴于评论不起作用,.ctags.readme文件......

怎么样?

对于大多数事情,您实际上并不需要评论,例如你真的不需要下面的评论。

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

但是我可以看到你可能想要添加注释来解释一些弯曲正则表达式的注释,因此对于绝对需要它的每一行,你可以将它作为markdown文件复制粘贴到.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/
```

保持.ctags.readme.ctags同步

你可以在ctags文件的底部有一个用换行符分隔的块,然后删除这个最后一个块。

如果您的.ctags文件中只有一个换行符,则此sed将删除换行符后的所有行。

然后对--regex行进行一些点击,将.ctags.readme中的行追加到.ctags

sed -i '/^\s*$/,$d' .ctags
grep "^--regex" .ctags.readme >> .ctags