31

我可以使用什么字符在 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

4 回答 4

32

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

但有时评论是必需的,因此作为一种解决方法,我将评论作为正则表达式放入其中,这样它就不可能匹配任何东西。

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

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

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

于 2012-06-18T09:35:36.313 回答
9

正如@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.
于 2016-08-12T11:17:32.280 回答
4

如果您使用的是 Universal-ctag ( https://ctags.io ),则可以使用 '#' 作为评论的开头。

于 2017-07-01T02:22:15.157 回答
1

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

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

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

但是,我可以看到您可能想要添加注释来解释一些令人费解的正则表达式,因此对于绝对需要它的每一行,您可以将其.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 将删除换行符后的所有行。

然后对这些行做一些 grepping--regex以将这些行附加.ctags.readme.ctags.

sed -i '/^\s*$/,$d' .ctags
grep "^--regex" .ctags.readme >> .ctags
于 2017-06-15T22:19:10.090 回答