最近,研究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/