26

如何在 Emacs 中为 C、C++ 和 JAVA 获取 Eclipse 风格的函数完成?我喜欢 Emacs 文本编辑器的强大功能,但缺少“智能感知”功能让我不得不使用 Eclipse。

4

9 回答 9

18

M-/是基于当前缓冲区内容的快速而肮脏的自动完成。它不会为您提供 Eclipse 中的所有功能,但功能却出奇的强大。

于 2008-09-24T21:31:50.103 回答
8

我只能作为一个没有太多使用 Eclipse 的人来回答你的问题。但!如果对您在 emacs 缓冲区中键入或查看的所有内容进行了非常好的快速启发式分析,并且您可以智能完成所有这些内容,而不仅仅是在代码中?

Mx 加载库完成
Mx 全局设置键 C-RET 完成 RET
于 2008-09-24T20:07:25.533 回答
7

当我做java开发时,我曾经使用过:

Emacs 的 Java 开发环境 (JDEE)

当您显式调用 jdee 提供的函数时,JDEE 将提供方法名称补全。它在 jdee 模式下具有此功能的键盘绑定。

于 2008-10-03T16:07:33.430 回答
6

CEDET包为 C/C++ 和 Java(以及一些其他语言)提供了补全。要进行初始自定义,您可以使用用于处理 C++ 项目的配置

于 2008-11-04T08:57:47.750 回答
3

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

它利用了(我相信)来自Cedet的Semantic包的强大功能,与Smart Complete相比,我发现它使用起来感觉更好。完成了C++成员、局部变量等,很不错。但是,它归结为无法完成重载方法(它只显示一次没有参数的函数,但我相信这是 Cedet 的限制),以及其他各种事情。不过未来可能会有所改善!

顺便说一句,我在这里可能是错的,但我认为您需要为班级成员完成设置一个 EDE 项目(就像您通常使用 Semantic 一样)。我只在有一个 EDE 项目时使用过它,所以我认为这是真的。

于 2009-05-22T20:16:49.853 回答
2

搜索我发现的网络http://www.emacswiki.org/cgi-bin/wiki/EmacsTags#toc7complete-tab在 etags 中描述。它是M-Tab默认绑定的。此绑定可能对您来说是个问题

此外,etags 有一些限制,这可能会惹恼你......

该链接还指出 CEDET 具有更好的符号完成支持。

于 2008-09-24T19:39:47.707 回答
1

您是否尝试过 Eclipse 的 emacs 插件?

http://people.csail.mit.edu/adonovan/hacks/eclipse-emacs.html

于 2008-09-24T19:28:52.273 回答
0

auto-complete-clang是你想要的。使用实际的 C++ 编译器进行补全不会出错。

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

就个人而言,我将 CMake 用于所有 C 和 C++ 工作,因此我编写了一些CMake 代码以通过目录局部变量将该信息传递给 emacs。它可以工作,但我正在考虑编写一个从 emacs 调用 cmake 的包,这样可以减少入侵。

于 2014-08-14T14:09:07.217 回答
0

我在 CEDET 之上编写了一个特定于 C++ 的包,它可能会提供您想要的东西。它提供了一个类似 Eclipse 的函数参数提示。函数参数提示和完成都支持重载函数。包位于此处:

https://github.com/abo-abo/function-args

请务必查看漂亮的屏幕截图:

https://raw.github.com/abo-abo/function-args/master/doc/screenshot-1.png

于 2013-07-01T15:16:24.583 回答