2011-11-03 57 views
3

因此,在我轉換到emacs的過程中,我發現放棄Visual Studio 2010 for C++非常困難。試圖爲emacs設置cedet並沒有讓它變得更容易。所以我用由Alex奧特溫柔的引進和我的初始化文件類似於提供的一個:Emacs CEDET語義完成「找不到類型......」

(load-file "~/.emacs.d/plugins/cedet/common/cedet.el") 
(global-ede-mode 1)  
(semantic-load-enable-excessive-code-helpers) 
(require 'semanticdb) 
(global-semanticdb-minor-mode 1) 
(setq semantic-ectag-program "C:/devel/ctags/ctags58/ctags.exe") 
(semantic-load-enable-secondary-exuberent-ctags-support) 
(require 'semantic-ia) 
(require 'semantic-gcc) 
(setq-mode-local c-mode semanticdb-find-default-throttle 
          '(local unloaded system recursive)) 
(ede-enable-generic-projects) 
(global-srecode-minor-mode 1) 

都好,很正常,但是當我嘗試打開它有一個頭(array_loader.h)一個CPP文件同一個目錄,並嘗試爲register_reader做代碼完成()方法:

array_loader al; al.register_reader(); 

我得到「無法找到類型‘array_loader人’」。矛盾的是,自動完成模式可以無縫工作。他們是否干涉?

我剛剛使用bazaar檢出1.1 beta版,然後字節編譯它。我沒有設置項目,因爲我的所有項目都是基於cmake的,並且它們沒有包含文件的單一路徑。我的項目的每個子庫都有相同目錄中的標題。有沒有辦法解析CMakeLists.txt並將這些信息提供給ede或semantic?即使沒有這個基本的例子應該工作。難道我做錯了什麼?

回答

3

好,以防任何人再有這個問題,我設法建立我的CEDET初始化文件來解決它由亞歷克斯·奧特所示:

https://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el

而且我確定我的cmake的項目,並使用遞歸找到通過我的cmake項目文件夾來查找標題。 項目外部的cpp文件雖然在同一個文件夾中找到的標題中定義,但仍無法找到類/方法的簽名,這仍然很奇怪。 semanticcdb節流閥設置如下:

(setq-mode-local cpp-mode semanticdb-find-default-throttle 
         '(project local unloaded system recursive))