告诉Ctags不要解析评论中的内容

时间:2014-03-24 14:15:15

标签: php vim ctags exuberant-ctags

当我生成我的ctags文件时,它似乎也在解析注释内容。例如,使用Vim的插件Tagbar,我可以在函数列表中看到不存在的函数,例如:

  • 只是

这里发生的事情是ctags会进行评论并找到类似的内容:

“这个函数是......”,认为“是”是一个函数,然后在标记文件中为它添加一个条目。

我想知道是否有一种简单的方法可以告诉ctags不要解析评论中的内容。

我发现显然在5.8.0之后会发布fix for this但我不确定这是否已经发布,我的ctags版本是5.8.0。

这与PHP项目有关,但我想如果答案可以涵盖适用于任何编程语言的解决方案(如果可能的话),那将会很好。

示例:

以下对函数的注释会生成标记“is”并将其列为函数:

/**
 * This function is run to set certain preferences
 */

2 个答案:

答案 0 :(得分:1)

ctags 5.8中存在一个错误。幸运的是,在它发布一天后,jafl提交了修订版729以解决问题。不幸的是,从那时起就没有发布过。

幸运的是,该项目已被分为" Universal Ctags。"以下是如何从源代码安装它。

# Get rid of 5.8.
sudo apt-get remove exuberant-ctags

# autoconf is needed to assemble the configure files
sudo apt-get install autoconf autoconf-doc

git clone https://github.com/universal-ctags/ctags.git universal-ctags

cd universal-ctags

./autogen.sh
./configure
make

sudo make install

答案 1 :(得分:0)

Excrant Ctags已经内置了多种语言。其中每个都有一个针对该语言定制的自定义解析器。当然,在标记文件中包含注释/注释掉的代码段是没有意义的。如果发生这种情况,它就是语言解析器中的一个错误,必须在ctags代码中修复。

请注意,Exuberant Ctags还支持通过正则表达式扩展新语言。有了这些,排除注释可能非常困难/缓慢/不可能(因为可能需要考虑大量的前置上下文,并且语言语法可能无法完全表示为regexp),并且您必须忍受这一点,或者应用变通办法,比如在处理之前预先处理来自源的注释。