C、C++ 和 JAVA 的 Emacs 中的 Eclipse 样式函数完成?

Posted

技术标签:

【中文标题】C、C++ 和 JAVA 的 Emacs 中的 Eclipse 样式函数完成?【英文标题】:Eclipse Style Function Completions in Emacs for C, C++ and JAVA? 【发布时间】:2010-09-12 20:33:39 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

Java Development Environment for Emacs (JDEE)

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

【讨论】:

【参考方案6】:

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

【讨论】:

不要忘记将 M-/ 绑定到 'hippie-expand 提供了更多的补全可能性。【参考方案7】:

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

M-x 加载库完成 M-x 全局设置键 C-RET 完成 RET

【讨论】:

【参考方案8】:

在网上搜索我发现 http://www.emacswiki.org/cgi-bin/wiki/EmacsTags#toc7 在 etags 中描述 complete-tab。默认绑定到M-Tab。这个绑定对你来说可能是个问题

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

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

【讨论】:

【参考方案9】:

你试过 eclipse 的 emacs 插件吗?

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

【讨论】:

以上是关于C、C++ 和 JAVA 的 Emacs 中的 Eclipse 样式函数完成?的主要内容,如果未能解决你的问题,请参考以下文章

利用emacs调试C++程序教程

跳转emacs中的java方法

Emacs C++ Auto Complete

如何告诉 emacs 在 C++ 模式下打开 .h 文件?

emacs简单入门

emacs上的C ++自动标题