Exumerant Ctag在Ruby中不能很好地工作,你可以看到ruby.c代码中有很多漏洞,基本上它无法识别很多情况。其中最重要的一点是:
class SomeModule::SomeClass
end
Ctag生成:
SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c
这是错误的。正确且预期的条目为:
SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c
这是非常有限的。有一些ctag的补丁是不起作用的,例如https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch,但是看看ctag的ruby代码库,这真的需要完全重写。
所以我一直在玩另一个选项,那就是https://github.com/rdoc/rdoc-tags,它工作得更好,但速度很慢。我是说真的很慢。在我的项目上生成标签使用ctag是2秒,但使用这个工具是一个小时。真的。
我发现了一个老项目,它自己解析Ruby并生成标签,但它只适用于Ruby1.8。它比ctag慢,但也没那么差。
因此,我正在寻找一些替代方案。你知道有没有其他可用的ruby ctag生成器,可以给你提供正确的输出,而且速度很快?
谢谢!
Ruby :我发现了一个非常好的项目,可以和 1.9+一起工作,而且很准确,很快。我推荐这样做:
发布于 2013-06-27 16:59:53
开箱即用的丰富的ctag并不能做很多有用的事情:
模块A::B
‘==’
—type=+
提供补丁,但它仅适用于5.5版,不再起作用。
其他项目:
发布于 2013-06-27 17:10:30
Ripper-tags的努力确实解决了这里所描述的一切。它基于官方的Ruby解析器,解析器速度也很快。https://github.com/tmm1/ripper-tags
gem install ripper-tags
cd your_project/
ripper-tags -R
它也支持Emacs。
发布于 2016-02-01 16:03:43
将以下内容添加到~/.ctag中
--regex-ruby=/(^|;)[ \t]*(class|module)[ \t]+([A-Z][[:alnum:]_]+(::[A-Z][[:alnum:]_]+)+)/\3/c,class,constant/
因此,您可以:
交易对象:module A::B
的
点击此处查看更多信息:https://github.com/bltavares/dot-files/blob/master/ctags
https://stackoverflow.com/questions/17338779
复制相似问题