Emacs中针对C、C++和JAVA的Eclipse风格函数自动补全?

26

如何在Emacs中获得C、C++和JAVA的Eclipse风格的函数自动补全功能? 我喜欢Emacs文本编辑器的强大功能,但缺乏“智能感知”功能使我只能使用Eclipse。

9个回答

18

M-/ 是基于当前缓冲区内容的一种快速且简单的自动完成方式。它可能无法提供您在 Eclipse 中得到的所有功能,但其实际效果令人惊讶。


1
不要忘记将 M-/ 绑定到 'hippie-expand,这将提供更多的自动完成选项。 - Trey Jackson

8

作为一个没有多少使用Eclipse经验的人,我只能回答你的问题。但是!如果有一种非常好的快速启发式分析,可以分析你在emacs缓冲区中输入或查看的所有内容,然后你可以在任何地方得到智能自动补全提示,而不仅仅是在代码中。

M-x load-library completion
M-x global-set-key C-RET complete RET

7

在我进行Java开发时,我曾经使用过:

Emacs的Java开发环境(JDEE)

JDEE会在您显式调用jdee提供的函数时提供方法名称完成。它在jdee-mode中具有此功能的键盘绑定。


6

CEDET包提供了C/C++和Java(以及其他一些语言)的自动完成功能。要进行初始定制,您可以使用我的配置文件来处理C++项目。


3

我现在正在使用Emacs的自动完成。作为一名Visual Studio和前Eclipse用户,我可以说它能够与这两个应用程序相媲美。虽然它还不如Microsoft的C# IntelliSense那么好,但有些人会说C++是出了名难以解析。

它利用了(我认为是)Semantic包来自Cedet,我发现与Smart Complete相比,它更加好用。它可以自动补全C++成员、局部变量等等。它做得很不错。但是,它无法完成重载方法(它只显示一次函数而没有参数,但我认为这是Cedet的限制),还有其他各种问题。但它未来可能会有所改进!

顺便说一下,我可能错了,但我认为您需要设置一个EDE项目才能使类成员完成工作(就像您通常使用Semantic一样)。 我只在拥有EDE项目时使用过它,所以我认为这是正确的。


2
通过搜索网络,我找到了http://www.emacswiki.org/cgi-bin/wiki/EmacsTags#toc7,其中描述了etags中的complete-tab。它默认绑定为M-Tab。这个绑定可能会给您带来麻烦。
此外,etags有一些限制,可能会让您感到烦恼...
该链接还指向CEDET,它具有更好的符号完成支持。

1

0

0

auto-complete-clang 是你想要的。使用实际的 C++ 编译器进行自动补全是没有错的选择。

它唯一的问题是无法知道要传递给编译器的 -I-D 标志。对于 Emacs,有一些包可以让你声明项目,然后你可以使用它们。

个人而言,我在所有的 C 和 C++ 工作中都使用 CMake,所以我编写了一些 CMake 代码 通过目录本地变量将信息传递给 Emacs。它可以工作,但我正在考虑编写一个从 Emacs 调用 cmake 的包,以减少干扰。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接