【发布时间】:2013-06-27 08:54:34
【问题描述】:
Exumerant Ctags 不适用于 Ruby,你可以看到 ruby.c 代码中有很多 hacks 并且基本上它无法识别很多情况。其中最重要的是这一点:
class SomeModule::SomeClass
end
Ctags 生成:
SomeModule someclass.rb /^class SomeModule::SomeClass$/;" c
这是错误的。正确且预期的条目是:
SomeClass someclass.rb /^class SomeModule::SomeClass$/;" c
这是非常有限的。有一些适用于 ctags 的补丁不起作用,例如https://github.com/xtao/overlay/blob/master/dev-util/ctags/files/ctags-5.5.4-ruby-classes.patch 但是查看 ctags ruby 代码库,这确实需要完全重写。
所以我一直在使用其他选项 https://github.com/rdoc/rdoc-tags,它效果更好,但速度很慢。我的意思是真的很慢。使用 ctags 在我的项目上生成标签需要 2 秒,但使用此工具一小时。真的。
我发现了一个旧项目,它自己解析 Ruby 并生成标签,但它仅适用于 Ruby 1.8。它比 ctags 慢,但还不错。
所以我正在寻找一些替代方案。您是否知道任何其他可以为您提供正确输出且速度很快的 ruby ctags 生成器?
谢谢!
编辑:我发现了非常好的项目,该项目适用于 Ruby 1.9+,并且准确且快速。我推荐它:
【问题讨论】:
-
或者,如果您知道快速且有效的 Ruby 解析器|词法分析器,它易于使用,那么我可以编写自己的标签生成器。应该适用于 Ruby 1.8-2.0。
-
关于使用
class SomeModule::SomeClass的旁注:它不会创建以SomeModule作为父级的词法范围,您应该避免使用它 - 请参阅 stackoverflow.com/questions/15119724/…