如何使RSense自动完成并跳转到rails项目的定义?
我从netbeans切换到emacs,我对这个改变很满意。 我最缺少的是自动完成并跳转到定义。 为了得到这个,我安装了Rsense。 它适用于gems代码,但我不能根据我定义的方法跳转到Rails项目的定义,也不能自动完成。
我试图将项目的加载路径添加到Rsense的load_path配置中,但它仍然无效。
有谁知道如何使这个工作?
您可以使用标签浏览文件并直接跳转到函数定义。 我使用Exuberant Ctags(它得到了Ruby支持)。 你可以从这里下载。
我假设您正在使用Windows。 让标签最初在Windows上工作是一件痛苦的事情,特别是如果你是第一次使用emacs。
这些是我遵循的步骤:
- 从这里安装Cygwin。
- 在环境变量
PATH
包含cygwin \ bin \文件夹。 比如这里 - 安装exhuberant ctags。 请注意,emacs可能有时会内置ctags。 稍后您将必须使用cygwin中的
ctags
命令来创建标记。 那时你可能会遇到一些错误,如果它使用emacs中的ctags而不是繁琐的ctag。 - 安装ctags后,将其添加到环境变量
PATH
中。 - 如果您有一个文件数量相对较少的小项目(<500)。 所以你只需要一个全局TAGS文件。 对于那个开放的cygwin,将目录更改为项目的根目录,然后输入命令
ctags -R -e
检查其他方法 - 您的标签文件将被创建。 它将命名为“TAGS”,并将出现在项目的根目录中。
- 接下来打开emacs,浏览代码。 如果遇到某个function并希望跳转到其定义,请将光标放在function名称上并按
M-.
然后你的迷你缓冲区应显示Find tag (default
按Enter键瞧! 你神奇地转移到function定义! 注意:您可能必须在第一次使用): M-.
时指定TAGS文件M-.
这需要在emacs启动后只执行一次。 您还可以修改.emacs文件以在启动时自动接收TAGS文件。
有关emacs中与标签相关的命令的更多信息,请参阅此处和此内容 。
到现在为止,我一直在使用rtags来跳转到定义。 它并不完美,但它在很多情况下都能解决问题。