Emacs、CEDET和C++/C++11支持

10

我通常在Linux环境(Ubuntu)下使用Emacs进行开发,因为我喜欢这个编辑器。但有时候也会使用Eclipse,只是觉得它比较慢。

由于我想要类似IDE的功能,所以我尝试了安装cedet,看起来有点用。

  1. 我发现cedet从未找到基类成员。例如,在gcc中,std::vector 的基类中有 std::vector::size,但它无法找到。
  2. 似乎不太准确: 如果我做类似“myvector."的事情,它会给我一些像size_type这样的完成选项。
  3. 无法使用c++11的auto,似乎不起作用。
  4. srecode-getset即使是基本用法也会出错。

我的配置没有任何错误,基于alexott cedet config

我的问题是:

  1. 补全仍然不太准确吗?(想想“vector."给出像“size_type"这样的东西)。
  2. 对于C++ / C++11,CEDET的状态如何?auto应该工作吗?我做错了什么吗?

我尝试使用捆绑的Ubuntu版本和来自bzr存储库的最新版本。CEDET似乎是一个非常有用的工具,但我想知道它是否需要更多的开发。

提前感谢。


虽然CEDET可以做很多事情,但它仍需要大量的工作,特别是对于C++而言,因为它只是其支持的语言之一,也可能是最复杂的语言。如果了解bison和elisp的人能够做出更多贡献,那将是非常好的。 - abo-abo
很遗憾,我不熟悉Bison :-( 但如果能更准确一些,这将非常棒。 - Germán Diago
2
我开发了一个项目https://github.com/abo-abo/function-args,它利用了CEDET。我希望能够支持C++默认函数参数,但目前尚未实现。 - abo-abo
1
据我所知,使用Bison创建C ++语法将是一个未解决的问题 - 即使使用GLR解析器也是如此。这只是一个需要考虑的问题... - jheriko
3个回答

2

不要依赖CEDET进行自动补全,您可能想考虑Emacs中的另一种自动补全提供程序。

Auto-complete-clang和auto-complete-clang-async都与clang一起工作以获取补全,并使用auto-complete包来显示它们。Company-clang类似,但使用company包来显示补全。

还有一个名为irony的C、C ++和ObjC的小型模式,它使用clang获取补全并可以使用多个前端来显示补全。这可能具有设置最佳文档。

所有这些都可在Marmalade上获得,以便在Emacs 24的软件包管理器中使用。


CLang和LLVM并非“自由”的,就像言论自由一样。它们可能有些影响。 - Makketronix

0

size_type 实际上是 vector 的成员类型,所以这并不像听起来那么疯狂。当然,语法是 myvector::size_type,而不是用句号。


0

我知道这可能不是一个很充分的答案(虽然我更愿意在评论中提到,但我点数不够),但有一个Eclipse插件可以提供emacs功能,叫做emacs+。 这个链接应该对您的Eclipse安装管理器友好(在Indigo上,我可以将其复制并粘贴到Help->Install New Software->Work With)。因为Eclipse对您很有吸引力,所以这可以间接地缓解您的问题...


我之前尝试过,但不幸的是它并不像Emacs那样好用。只有一些组合键,但无法真正感受到不用移动手到鼠标上的感觉,这对我来说非常重要。 - Germán Diago
有很多编辑器选择可以在不用移动手到鼠标的情况下工作。每个编辑器都有自己的缺点和特点。就我个人而言,我认为任何不支持块标记(而不是字符串标记)的编辑器都是可恶的。例如vi、Kedit、X2、THE、SlickEdit等等。我甚至让eclipse基本上不需要使用鼠标。 - Wes Miller

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