emacs完美的c++自动补全

[来源] 达内    [编辑] 达内   [时间]2012-06-19

emacs完美的c++自动补全

 1.CVS cedet的最新代码,1.04代码补全很慢。

    cvs -z3 -d:pserver::/cvsroot/cedet co -P cedet

    2.命令行运行

    touch `find -name "Makefile"`//(注意是左引号)

    make bootstrap

    3.命令行运行

    g++ -E -v -P dummy.cpp会找到很多头文件,dummy.cpp是个空文件,然后

    4.在.emacs加入

 

 (eval-after-load "semantic-c" ;;e:/emacs/home 是我的 $HOME
'(dolist (d (list "/usr/include/c++/4.1.0"
"/usr/include/c++/4.1.0/x86_64-suse-linux"
"/usr/include/c++/4.1.0/backward"
"/usr/local/include"
"/usr/lib64/gcc/x86_64-suse-linux/4.1.0/include"
"/usr/lib64/gcc/x86_64-suse-linux/4.1.0/../../../../x86_64-suse-linux/include"
"/usr/include"
))
(semantic-add-system-include d)))
;;下面配置一下semantic分析结果文件的存放目录。注意这个目录是要自己建立的。
(setq semanticdb-default-save-directory
(expand-file-name "~/.emacs.d/semanticdb"))
;;头文件的查找目录定义好了,下面对 c-mode 做一些小小的定义:
(add-hook 'c-mode-common-hook
'(lambda()
(require 'cedet)
(ede-minor-mode t)
;;;;以下3个按机器适用的强劲程度排列,最下面的对机器需求最低。三选一。
;; (semantic-load-enable-gaudy-code-helpers)
;; (semantic-load-enable-code-helpers)
(semantic-load-enable-minimum-features)
;;;;这三个按键绑定按个人喜欢启用,除了第一个可以修改成自己喜欢的按键之外,另外两个都没有修改的意义。
;;;;反正主要的补全就靠 semantic-complete-analyze-inline了,以后偷摸骗抢都靠它了。
;;;;semantic-complete-self-inset也是调用semantic-complete-analyze-inline的。
(local-set-key (kbd "M-/") 'semantic-complete-analyze-inline)
(local-set-key "." 'semantic-complete-self-insert)
(local-set-key ">" 'semantic-complete-self-insert)
(c-toggle-auto-hungry-state 1)
(c-set-style "K&R")))

 

    OK,在代码中可以尝试一下了。M-/补全,或者在结构体后输入。或->也会有代码提示出来,非常方便。

资源下载