如何使RSense自动完成并跳转到rails项目的定义?

我从netbeans切换到emacs,我对这个改变很满意。 我最缺少的是自动完成并跳转到定​​义。 为了得到这个,我安装了Rsense。 它适用于gems代码,但我不能根据我定义的方法跳转到Rails项目的定义,也不能自动完成。

我试图将项目的加载路径添加到Rsense的load_path配置中,但它仍然无效。

有谁知道如何使这个工作?

您可以使用标签浏览文件并直接跳转到函数定义。 我使用Exuberant Ctags(它得到了Ruby支持)。 你可以从这里下载。

我假设您正在使用Windows。 让标签最初在Windows上工作是一件痛苦的事情,特别是如果你是第一次使用emacs。

这些是我遵循的步骤:

  1. 从这里安装Cygwin。
  2. 在环境变量PATH包含cygwin \ bin \文件夹。 比如这里
  3. 安装exhuberant ctags。 请注意,emacs可能有时会内置ctags。 稍后您将必须使用cygwin中的ctags命令来创建标记。 那时你可能会遇到一些错误,如果它使用emacs中的ctags而不是繁琐的ctag。
  4. 安装ctags后,将其添加到环境变量PATH中。
  5. 如果您有一个文件数量相对较少的小项目(<500)。 所以你只需要一个全局TAGS文件。 对于那个开放的cygwin,将目录更改为项目的根目录,然后输入命令ctags -R -e 检查其他方法
  6. 您的标签文件将被创建。 它将命名为“TAGS”,并将出现在项目的根目录中。
  7. 接下来打开emacs,浏览代码。 如果遇到某个function并希望跳转到其定义,请将光标放在function名称上并按M-. 然后你的迷你缓冲区应显示Find tag (default ):按Enter键瞧! 你神奇地转移到function定义! 注意:您可能必须在第一次使用M-.时指定TAGS文件M-. 这需要在emacs启动后只执行一次。 您还可以修改.emacs文件以在启动时自动接收TAGS文件。

有关emacs中与标签相关的命令的更多信息,请参阅此处和此内容 。

到现在为止,我一直在使用rtags来跳转到定义。 它并不完美,但它在很多情况下都能解决问题。