使emacs自动完成Ruby方法

问题描述:

有没有一种方法可以使emacs像Eclipse和NetBeans一样使用ruby方法自动完成?那就是如果我输入File。并在Eclipse中按下CTRL-space,我将得到一个File方法列表。与变量相同。我已经安装了自动完成插件,ruby-mode,rinari和cedet,但到目前为止它将完成本地变量和方法名称,但不会是本地变量和方法名称。使emacs自动完成Ruby方法

我认为你需要像RSense之类的东西。你可能也喜欢更一般的auto complete mode

+0

我已经安装了自动完成功能,但似乎没有办法以我想要的方式做红宝石补全。我会看看RSense。 – 2010-04-18 20:21:47

+0

RSense看起来很有前景,但似乎也不适用于RVM。 – 2012-01-31 00:54:00

我对ruby并不熟悉,但如果通过“本地方法”,您指的是某些系统库中的内容,则有几个选项可用于扩展CEDET以完成此项工作。

如果ruby文件中包含所有代码,并且ruby支持某种“include”或“import”语句,那么您需要将该位置添加到ruby的include路径中。这可能需要更改ruby源代码以添加新的系统包含路径。你可以在semantic-c.el中看到例子。您可能还需要重写semantic-tag-include-filename函数以将include转换为可找到的文件名。

如果没有包含,并且只有一些ruby解释器知道所有这些东西,那么您需要编写一个完整的ruby“全知”数据库,类似于semanticdb-el.el。它需要一种方法来查询各种事情的红宝石,并将它们作为答案返回。

任何此类增强功能都将受到CEDET贡献区域的红宝石支持的欢迎。

+0

对于emacs和ruby来说,我都是新手来写这样的东西。我希望有一个预先制定的解决方案。 – 2010-04-17 05:03:43

Ruby是一种解释型语言,很难做某些事情,比如自动完成。你如何知道对象类型是什么,如果没有定义?因此,预制解决方案是有限的或不存在的。即使Netbean/Eclipse中的自动完成功能也只能用于类方法(如果我没有弄错的话)。

+0

Ruby有类型,它们只是迟到的,所以ide完成必须猜测 – 2012-09-25 17:48:46