gpt4 book ai didi

ruby-on-rails - 为 Ruby on Rails 项目生成 emacs 标签文件

转载 作者:数据小太阳 更新时间:2023-10-29 06:34:49 26 4
gpt4 key购买 nike

我正在使用以下命令为我的 Ruby on Rails 项目生成一个用于 emacs 的标签文件:

ctags -f TAGS --extra=-f --languages=-javascript --exclude=.git --exclude=log -e -R . $(rvm gemdir)/gems/

当我尝试查找标签(使用 M-.)时,一些标签工作正常,但对于许多其他标签,我会遇到如下错误:

tag-find-file-of-tag-noselect: File /Users/simao/Documents/sp/ofe/° ¡ not found

etags-goto-tag-location: Rerun etags: `^class Tools::FilteringSteps' not found in /Users/simao/Documents/sp/ofe/lib/geo_db.rb

您如何使用 emacs 为您的 RoR 项目生成标签?您以前遇到过这个问题吗?

这是 ctags --version 的输出

Exuberant Ctags 5.8, Copyright (C) 1996-2009 Darren Hiebert
Compiled: Mar 9 2012, 15:47:35
Addresses: <dhiebert@users.sourceforge.net>, http://ctags.sourceforge.net
Optional compiled features: +wildcards, +regex

我的 emacs 版本:

GNU Emacs 24.0.95.1 (x86_64-apple-darwin, NS apple-appkit-1038.36) of 2012-04-02

最佳答案

是的,是的,是的。 ;-)

为什么您首先要关心不使用 ctags? Ctags 是一个很棒的项目,它确实支持许多(比如 50 种)语言。但是对 Ruby 的支持非常薄弱,解析器状况不佳,而且已经 4 年没有更改了。

  • Ctags 不处理:模块 A::B
  • Ctags 不会标记(至少是部分)运算符方法,例如 ==
  • Ctags 不支持限定标签,-type=+
  • Ctags 不输出常量或属性的标签。

不幸的是,所有其他(我发现了 2 个)Ruby ctags 生成器要么已经过时(没有 Ruby 1.9+ 支持),要么非常慢。但是有一个解决办法!它被称为 ripper-tagshttps://github.com/tmm1/ripper-tags

gem install ripper-tags
cd your_project/
ripper-tags -R # for vim
ripper-tags -R -f TAGS # for emacs

该项目利用名为 Ripper 的内置 Ruby 解析器 API。它速度很快,并且按预期工作。它几乎与 ctags 一样快,但给出的结果最准确。警告:它不支持 Ruby 1.8。

如果您喜欢 ripper-tags 并且希望在安装 gem 时自动生成所有标签,您可以查看我的 gem-ripper-tags 来实现。不幸的是,它目前不支持 Emacs(已接受补丁 - 很容易做到)。更多信息:https://github.com/lzap/gem-ripper-tags

关于ruby-on-rails - 为 Ruby on Rails 项目生成 emacs 标签文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120720/

26 4 0