後讀了堪稱偉大的文章「一個溫柔的介紹CEDET」的書面亞歷克斯·奧特。我做了一些實驗用於C++項目在我的Emacs 24.3和「https://git.code.sf.net/p/cedet/git」(也emacs的23.1和穩定cedet1.1)最新CEDET。除了「semantic-analysis-proto-impl-toggle」中的一個小小的「跳到功能實現」問題外,我對此非常滿意。 我的項目是非常簡單(只有2個文件):在DIRemacs的CEDET「語義分析,原IMPL撥動」不能跳轉到適當的工具
1)頭文件 「y.hpp」 「〜/ emacs的/測試/ ZZ1 /」
class y{
public:
int y1(int);//error here! semantic can't found implement in y.cpp
};
2)實現文件「Y的.cpp」,在目錄 「〜/ emacs的/測試/ zz2所示/」
#include "y.hpp"
int y::y1(int b) // semantic can found definition in y.hpp
{
return 0;
}
我CEDET配置是基於亞歷克斯OOT的 「minimial-CEDET-config.el」(https://gist.github.com/alexott/3930120)和只添加以下兩行:
(語義附加系統包括 「〜/ emacs的/測試/ ZZ1 /」「C++ - 模式)
(語義附加系統包括 「〜/ emacs的/測試/ ZZ2 /」 「C++ - 模式)
我檢查我的語義數據庫高速緩存,發現所有的數據庫文件被正確地創建, 這是緩存DB部分信息爲y.hpp在ZZ1:
("y1" function
(:prototype-flag t
:arguments
(("" variable (:type "int") (reparse-symbol arg-sub-list) [27 31]))
:type "int")
(reparse-symbol classsubparts) [20 32])
這部分zz2中y.cpp的緩存數據庫中的信息:
("y1" function
(:parent "y"
:arguments
(("b" variable (:type "int") (reparse-symbol arg-sub-list) [28 34]))
:type "int")
nil [18 50])