2010-10-20 38 views
8

我設置的emacs 23.1.50.1與CEDET 1.0和2.40 ECB(在http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.el由Alex Otts設置大量的啓發和他的溫和簡介CEDET(http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html),感謝亞歷克斯)。它工作得很好,但我需要更多地瞭解如何在處理多個項目時處理代碼完成和符號引用。Emacs/CEDET。多個項目和代碼完成

我創建了這樣一個簡單的義德項目:

(ede-cpp-root-project "test" 
         :file "~/src/sw/anchor" 
         :include-path '("/Common") 
         :system-include-path '("~/include")) 

當這個項目被加載時,將語義只尋找在項目配置中指定的各種目錄的完成?

我跟着http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackend要使用cscope作爲後端的semanticdb。我可以在沒有emacs拋出任何錯誤的情況下運行semanticdb-enable-cscope-in​​-buffer,但是我不知道語義是否使用我的數據庫。我是否可以在我的項目定義中添加對cscope.out的引用,以便更好地控制哪些文件在當前上下文中搜索引用?

幾個奇怪的現象:

當我試圖打開一個新的源文件出現錯誤「應用:在搜索程序:沒有這樣的文件或目錄,全球」,並沒有任何反應。如果我嘗試再次打開它,一切都很好。

當我嘗試通過在錨文件指向加載一個項目,我得到這個錯誤:「如果:錯誤類型參數:類-P,義德-CPP-根」

+0

對於「應用:在搜索程序:沒有這樣的文件或目錄,全球」的錯誤,你複製亞歷克斯奧特的設置是使用「(semanticdb啓用-GNU的全球數據庫...)」的一部分? – Dingo 2010-10-20 22:20:15

+0

我做了,但我懷疑我不需要它。它說「GNU全球支持」的事實,應該讓我懷疑問題在那裏:)。謝謝。 – anr78 2010-10-21 05:55:05

回答

5

當你得到錯誤的配置,最好的辦法是:

M-x toggle-debug-on-error RET 

並獲得指向問題區域的堆棧跟蹤。通常這對於識別配置問題很有幫助。

CEDET將嘗試與單個項目中的每個文件相關聯,以及所有在該緩衝區操作命令將被限制在該項目的邊界。對於Cscope的支持,它也將使用EDE識別根目錄,這將有助於找到cscope.out中的文件,而且是關係到完成和參考工具兩者。

的異常,當然,是該系統包括路徑通常是在/ usr /包括或任何。這是對GCC支持計算的默認系統包含路徑的擴充。在你的一個C文件中,你可以這樣做:

M-x semantic-c-describe-environment RET 

並且應該顯示Semantic會嘗試使用什麼。

。如果被用於代碼完成cscope的仔細檢查,你可以檢查:

M-x semanticdb-find-test-translate-path RET 

和檢查清單一些Cscope的事情的結束。

+0

謝謝埃裏克,答案和軟件。這些命令確實非常有用。目前,semantic-c-describe-environment沒有提及cscope,semanticdb-find-test-translate-path指出:*# anr78 2010-10-21 06:03:18

+0

Right,cscope支持不會計算CScope知道的標籤數量,而且它不是「內部」抽象的「項目」的一部分,因此C環境不知道它。 – Eric 2010-10-22 00:35:38