最近,研究emacs的使用,期间遇到很多配置方面的问题,在http://www.emacer.com上面寻找到一些相关的教程,但中间仍然出现了很多难以预料的问题,在这里,把我用的的相应配置过程记录一下,一是为自己以后备用,二来为那些和我一样挣扎的新手提供一些帮助,废话少说,进入正文。
我使用的系统是ubuntu 9.10, 在这里我主要是配置cedet和ecb的相关内容,内容全部在.emacs 文件中(.emacs文件一般在/home/你的用户名 目录下,一般是隐藏的,按ctrl+h可以查看隐藏文件)。
1 安装前的准备
1.1 Emacs已经安装好,且版本号必须高于或等于21.(我用的是Emacs23.1)
1.2 安装Cedet套件:
1.2.1 首先下载cedet的cvs版本(请先安装cvs)
cvs -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet login
cvs -z3 -d:pserver:anonymous@cedet.cvs.sourceforge.net:/cvsroot/cedet co -P
cedet
1.2.2 编译Cedet
进入到cedet
$ cd cedet-1.0pre6
编译:
$ make EMACS=emacs
如果这里没有安装texinfo, 会出现makeinfo命令未找到的出错. 请把texinfo安装就行了.
更多的编译过程, 请参阅cedet目录下的INSTALL文件.
1.2.4 配置Cedet
打开.emacs, 在最后加入:
(load-file “/home/你的用户名/cedet/common/cedet.el”)
(require ’semantic-ia)
(require ‘eldoc)
(require ’semantic-gcc)
(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
更多的配置, 请参阅cedet目录下的INSTALL文件.
到此, Cedet套件已安装好, 接下来安装Ecb.
注1:XEmacs用户及Java-coder请参阅: http://ecb.sourceforge.net/docs/Requirements.html#Requirements
2 安装Ecb
2.1 下载Ecb
cvs -z3 -d:pserver:anonymous@ecb.cvs.sourceforge.net:/cvsroot/ecb co -P ecb
2.2 添加Ecb目录到load-path变量
你可以在.emacs文件最后添加以下代码, 也可以在site-list/site-start.el文件下添加:
(add-to-list ‘load-path
“/path/to/your/ecb/installation/directory”)
注意:上面那行代码里的” “里面是指你解码完的那个目录. 例如我的是/home/zneil/ecb
2.3 加载Ecb
在.emacs文件最后加上以下代码:
(require ‘ecb)
(require ‘ecb-autoloads)
重启Emacs, 打开一个C/CPP文件, 选择tool->start code browser, 试一下效果吧.
当然, 做到这一步, 仅仅只是让Emacs看起来像个IDE, 实际上还有很多功能, 例如像Smart Completion, Symbol References, Code Generation, UML Diagrams等功能都要动手配置.emacs文件才可以完成.
以下的配置可以利用DECET让你更好的编写代码:(这些代码必须放在加载CEDET之后和ECB之前)
(require ’semantic-ia)
(require ’semantic-gcc)
;; Enable template insertion menu
(global-srecode-minor-mode 1)
(setq-mode-local c-mode semanticdb-find-default-throttle
‘(project unloaded system recursive))
(defun my-semantic-hook ()
(imenu-add-to-menubar “TAGS”))
(add-hook ’semantic-init-hooks ‘my-semantic-hook)
(require ’semanticdb)
(global-semanticdb-minor-mode 1)
(defun my-cedet-hook ()
(local-set-key [(control return)] ’semantic-ia-complete-symbol)
(local-set-key “\C-c?” ’semantic-ia-complete-symbol-menu)
(local-set-key “\C-c>” ’semantic-complete-analyze-inline)
(local-set-key “\C-cp” ’semantic-analyze-proto-impl-toggle))
(add-hook ‘c-mode-common-hook ‘my-cedet-hook)
(defun my-c-mode-cedet-hook ()
(local-set-key “.” ’semantic-complete-self-insert)
(local-set-key “>” ’semantic-complete-self-insert))
(add-hook ‘c-mode-common-hook ‘my-c-mode-cedet-hook)
更多的信息请参阅:
http://ecb.sourceforge.net/
http://cedet.sourceforge.net/