折腾半年多了,总算是找到个比较合适的方式。
我的选择是cedet+ecb+global
gnu-global是一个兼容tag工具,看名字就知道它打算怎么干活的了。gtags是emacs下与global交互的插件
首先一次去下载上面三个的源码,global是gtags,
cedet官网http://cedet.sourceforge.net/
ecb官网http://ecb.sourceforge.net/
然后ubuntu下不要使用sudo apt-get install 来的global,版本问题可能会和你下载gtags不兼容,有个参数不识别。
下载地址http://www.gnu.org/s/global/download.html
下载后解压,$./configure
$make
$sudo make install
然后源码包里有个gtags.el这是我们的emacs插件
把cedet,ecb,gtags插件放到你保存插件的位置,我的都在~/emacs/下面,然后每个插件有自己单独的目录。
;;配置cedet
(add-to-list 'load-path "~/emacs/cedet-1.0pre7/common")
(add-to-list 'load-path "~/emacs/cedet-1.0pre7/contrib")
;;(load-file "~/emacs/cedet-1.0pre7/common/cedet.el")
(require 'cedet)
(require 'semantic-ia)
(global-ede-mode 1) ; Enable the Project management system
(semantic-load-enable-code-helpers) ; Enable prototype help and smart completion
(global-srecode-minor-mode 1) ; Enable template insertion menu
(require 'semantic-tag-folding nil 'noerror)
(global-semantic-tag-folding-mode 1)
(global-set-key [f12] 'semantic-ia-fast-jump)
(global-set-key [S-f12]
(lambda ()
(interactive)
(if (ring-empty-p (oref semantic-mru-bookmark-ring ring))
(error "Semantic Bookmark ring is currently empty"))
(let* ((ring (oref semantic-mru-bookmark-ring ring))
(alist (semantic-mrub-ring-to-assoc-list ring))