Emacs中用于C,C ++和JAVA的Eclipse样式函数完成?

时间:2008-09-24 19:18:24

标签: emacs autocomplete intellisense

如何在Emacs中为C,C ++和JAVA获取Eclipse样式函数完成? 我喜欢Emacs文本编辑器的强大功能,但缺乏“intellisense”功能 让我使用Eclipse。

9 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:8)

我只能回答你的问题,因为他没有多少使用Eclipse。但!如果对您在emacs缓冲区中输入或查看的所有进行了非常好的快速启发式分析,并且您在所有地方完成智能完成,而不仅仅是在代码中?

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

答案 2 :(得分:7)

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

Java Development Environment for Emacs (JDEE)

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

答案 3 :(得分:6)

CEDET包提供了C / C ++&的完成功能。 Java(以及其他一些语言)。要进行初始自定义,您可以使用我用于处理C ++项目的my config

答案 4 :(得分:3)

现在,我正在使用Auto Complete用于Emacs。作为当前的Visual Studio和ex-Eclipse用户,我可以说它可以很好地与两个应用程序相媲美。它仍然不如微软的C#IntelliSense,但有些人会说C ++很难解析。

它充分利用了({3}}来自SemanticCedet软件包的功能,我发现与Smart Complete相比,它的使用效果更好。它完成了C ++成员,局部变量等。这非常好。但是,它不能完成重载方法(它只显示一次没有参数的功能,但这是我认为的Cedet的限制),以及其他各种各样的事情。它可能在将来有所改善!

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

答案 5 :(得分:2)

在网上搜索我在etags中找到了描述complete-tab的{​​{3}} 。默认情况下它绑定到M-Tab。这种绑定可能是你的问题

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

该链接还指向CEDET,因为它具有更好的符号完成支持。

答案 6 :(得分:1)

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

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

答案 7 :(得分:0)

我在CEDET上编写了一个可能提供的特定于C ++的包 你想要什么。它提供了类似Eclipse的函数参数提示。 函数参数提示支持重载函数 并完成。 套餐位于:

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

请务必查看精彩的屏幕截图:

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

答案 8 :(得分:0)

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

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

就我个人而言,我使用CMake进行所有C和C ++工作,所以我写了一些CMake code来通过目录本地变量将这些信息传递给emacs。它有效,但我正在考虑编写一个从emacs调用cmake的软件包,这样就可以减少入侵。