使用Emacs和标签自动完成

问题描述:

嗨我工作在一个非常庞大和复杂的C代码库(复杂不是一个好方法)。代码库使Linux内核变得更加灵活。我已经设置了emacs来完成我想要的大部分工作。我在函数和变量上得到了自动完成,但是有些东西不起作用(全向完成)。使用Emacs和标签自动完成

我使用cedet v2,xgtags,auto-complete,yastnippet,cscope和一些其他工具,所有这些工具都通过emacs-24上的el-get安装。当我在一个较小的项目上工作时,C中的omni-completion会工作,所以当我访问该对象时,我将得到一个结构成员的列表。但是,在非常大的“项目”中,访问结构时omni-completion不起作用。正如我所说,我完成功能和变量,但不是结构。

我的解释是,自动完成使用它的解析器,它无法处理代码库的大小和复杂性。但是,gtags或etags可以处理它。

有没有办法让自动完成外观gtags(xgtags)数据库?我的gtags工作得很好。

编辑: 我不是我的系统管理员,我无法轻松安装软件包。目前,我没有叮当声。话虽如此,我很有能力从源代​​码进行编译,并可以通过这种方式获得许多软件包。

您是否试过ac-source-gtagsauto-complete包一起?您还可以结合多个来源,如documentation中所述...

使用铛+ automplete也是一种选择:

http://truongtx.me/2013/03/06/emacs-ccpp-autocomplete-with-clang/

编辑:我看你已经编辑了问题表明你没有铛。无论如何,我都会在这里留下这个答案,以防其他人发现它有用。

我发现cedet确实是不可思议的。 我会建议只使用一种工具,它可以做所有事情 https://github.com/Andersbakken/rtags 它强调了错误输入以及使用智能完成。只需在获得所需的emacs包后将其添加到init文件中

(require 'rtags) 
(require 'popup) 
(require 'rtags-ac) 
(setq rtags-completions-enabled t) 
(rtags-enable-standard-keybindings c-mode-base-map) 
(add-hook 'c++-mode-hook 
      (lambda() 
      (setq ac-sources '(ac-source-rtags) 
)))