使用Emacs和标记自动完成

使用Emacs和标记自动完成,emacs,autocomplete,elisp,emacs24,cedet,Emacs,Autocomplete,Elisp,Emacs24,Cedet,嗨,我在一个非常大和复杂的C代码库上工作(复杂的不是很好的方式)。代码库使linux内核相形见绌,这给了您一个想法。我已经建立了emacs来做我想做的大部分事情。我得到函数和变量的自动补全功能,但有些功能不起作用(全向补全) 我使用cedet v2、xgtags、auto complete、yastnippet、cscope和其他一些工具,所有这些工具都是通过emacs-24上的el get安装的。当我在一个较小的项目中工作时,C语言中的omni completion会起作用,因此当我访问对象时

嗨,我在一个非常大和复杂的C代码库上工作(复杂的不是很好的方式)。代码库使linux内核相形见绌,这给了您一个想法。我已经建立了emacs来做我想做的大部分事情。我得到函数和变量的自动补全功能,但有些功能不起作用(全向补全)

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

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

是否有一种方法可以使自动完成查找gtags(xgtags)数据库?我的gtags确实工作得很好

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

使用clang+AutoComplete也是一种选择:


编辑:我看你已经编辑了这个问题,表明你没有叮当声。我将这个答案留在这里,以防其他人发现它有用。

您是否尝试过
自动完成
软件包附带的
ac source gtags
?您还可以结合多种来源,如…

中所述。我发现cedet确实令人印象深刻。 我建议只使用一种工具,它可以完成所有工作 它在您键入以及使用智能补全时为错误加下划线。在获得所需的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)
)))