后读了堪称伟大的文章“一个温柔的介绍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])