semantic是CEDIT的核心,支持语义理解的代码分析。
安装了semantic layer之后,只要在spacemacs中打开过某个文件,就会自动建立tag,
tag目录在~/.emacs.d/.cache/semanticdb/
比如这里就有个tag文件:
~/.emacs.d/.cache/semanticdb/!home!dean!work!gitlab!gitlab.com!mystudy!mongodb!code!simple!src!helper!semantic.cache
;; Object semanticdb-project-database-file ;; SEMANTICDB Tags save file (semanticdb-project-database-file "semanticdb-project-database-file" :tables (list (semanticdb-table "semanticdb-table" :major-mode c++-mode :tags '( ("helper/logger.h" include nil nil [1 27]) ("InitLog" function (:type "void") nil [29 1018])) :file "logger.cc" :pointmax 1019 :fsize 1018 :lastmodtime '(22645 60456 254615 422000) :unmatched-syntax nil)) :file "!home!dean!work!gitlab!gitlab.com!mystudy!mongodb!code!simple!src!helper!semantic.cache" :semantic-tag-version "2.0" :semanticdb-version "2.2")
现在进入main.cc文件中,里面有一行调用InitLog函数的代码,将光标移动到上面,然后按下快捷键
C-c , J, 执行的是semantic-complete-jump函数。
在mini buffer中回车确认查找的是InitLog函数
然后就自动跳入源代码了。