2013-10-31 499 views
2

嗨我工作在一個非常龐大和複雜的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工作得很好。

編輯: 我不是我的系統管理員,我無法輕鬆安裝軟件包。目前,我沒有叮噹聲。話雖如此,我很有能力從源代​​碼進行編譯,並可以通過這種方式獲得許多軟件包。

回答

2

您是否試過ac-source-gtagsauto-complete包一起?您還可以結合多個來源,如documentation中所述...

0

我發現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) 
)))