1. 利用 semantic-ia-complete-symbol 可以进行参数的跳转。
cedet 安装:
在准备写Emacs才是世界上最强大的IDE系列文章时,由于以前用的是cedet1.0pre6版本,速度比较慢,而且精确度也不高,所以就没有打算写它,昨天晚上在水木群里听一位网友介绍说cedet的cvs版本速度很快,而且精确度不错,所以晚上就down下cvs的版本试了一把,越试越感觉不错,就有了写cedet的想法。从头开始,先说安装吧。
cedet的安装挺简单,只要仔细看好cedet的说明就可以了,不过我昨天晚上没仔细看好说明,安装的时候碰到一个问题,所以我还是准备写一下安装过程。(如果你用apt-get, 或者emerge安装,首先要看下它们的版本,1.0pre6和其之前的版本都不要安装,语法分析会很慢的。)
首先下载cedet的cvs版本:
1 2 |
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 |
然后编译:
-
linux下:
1 2 3 4 5 6 7 8 9 10 11 12 13
cd cedet touch `find . -name Makefile` (非cvs版本不需要这个) a) make 或 b) make EMACS=<your favorite emacs> 或 c) make MAKEINFO=/usr/local/bin/makeinfo 或 d) make MAKEINFO=echo 如果编译过程中发生类似找不到loaddef文件,custom-autoload以及其他奇怪的错误,执行: a) make clean-autoloads b) make clean-all 然后再重新编译。编译错误还有可能是make版本引起的,请使用GNU make,或者使用windows下的安装方法。
-
windows下(当然linux下这样也可以):
1 2 3 4 5 6
emacs -q --no-site-file -l cedet-build.el -f cedet-build 或 在emacs中打开cedet-build.el文件,然后 M-x eval-buffer M-x cedet-build-in-default-emacs 编译过程中如果发生超过emacs堆栈大小的错误,退出emacs再重新编译即可。
说完安装,再说一下简单的使用,把下面的代码贴到你的.emacs里面:
1 2 3 4 5 6 7 8 9 10 11 12 |
(add-to-list 'load-path "path-of-cedet/common") (require 'cedet) (require 'semantic-ia) ;; Enable EDE (Project Management) features (global-ede-mode 1) (semantic-load-enable-excessive-code-helpers) (semantic-load-enable-semantic-debugging-helpers) ;; Enable SRecode (Template management) minor-mode. (global-srecode-minor-mode 1) |
现在开始享受cedet吧。
1 前言
网上关于如何用emacs+cedet做C++
IDE的文章已经很多了,可是大都只列出了配置文件和效果,没有讲清楚具体的配置过程;一篇讲得比较具体的文章(http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html ,这篇文章是被cedet官方推荐的)还是英文的。刚接触cedet的用户经常照抄了别人的配置却发现不能补全,而且配置文件是别人的想改还无法下手。本文中我尽量详细解释各个语句的作用,希望能给初次接触的人提供点帮助。
cedet于2010年2月26日发布了1.0pre7,强烈建议以前用过cedet觉得速度慢而放弃的同学试试1.0pre7,这个版本速度比以前有很大很大提高。
2 简介
cedet是一堆完全用elisp实现的emacs工具的集合,主要有:
2.1 EDE
用来管理项目,它可以把emacs模拟得像一个IDE那样,把一堆文件作为一个project来管理。
2.2 Semantic
Semantic应该是cedet里用得最多的组件了,代码间跳转和自动补全这两大功能都是通过semantic来实现的。
2.3 SRecode
SRecode是一个模板系统,通过一些预定义的模板,可以很快地插入一段代码。个人觉得这个功能跟msf-abbrev和yasnippet的功能有些类似。
2.4 Cogre
全称叫”Connected Graph Editor”,主要和图形相关,比如可以用它来为C++类生成UML图。
2.5 Speedbar
Speedbar可以单独创建一个frame,用于显示目录树,函数列表等等。这个组件已经包含在emacs官方发布包中。
2.6 EIEIO
EIEIO是一个底层库,它为elisp加入了OO支持。cedet的其它组件都依赖于EIEIO。
3 安装
安装就不多说了,这儿详细说明了如何下载安装。
要注意的是通过cvs下载必须要编译后才能用,而官方发布后的包可以直接解压不编译也是能用。
安装完后首先当然要load它(确保安装的路径已经在load-path中了):
(require 'cedet) |
4 semantic配置
先介绍一下最常用的semantic。
4.1 功能介绍
一般装插件的思路,都是先load然后enable某个minor mode。cedet基本上也遵循这个规则,不过有点区别是semantic定义了很多个mode,要是挨个去enable,用户可能就要骂娘了,所以cedet的作者Eric定义了几个方便使用的函数,这些函数会自动帮你enable某些minor mode,大概有这么几个:
1 2 3 4 5 |
(semantic-load-enable-minimum-features) (semantic-load-enable-code-helpers) (semantic-load-enable-guady-code-helpers) (semantic-load-enable-excessive-code-helpers) (semantic-load-enable-semantic-debugging-helpers) |
简单介绍一下各个函数的功能:
4.1.1 semantic-load-enable-minimum-features
这个函数开启了最基本的三个特性:
-
semantic-idle-scheduler-mode
enable这个mode让cedet在emacs空闲的时候自动分析buffer内容,比如正在编辑的buffer内容改变后。这个mode一般应该是需要enable的,如果没有enable这个mode,那只有手工触发才会让cedet重新分析。
-
semanticdb-minor-mode
semanticdb是semantic用来保存分析后的内容的,所以也是应该enable的。
-
semanticdb-load-ebrowse-caches
这个feature我不是很确定,大概的意思好像是semantic可以利用ebrowse的结果。这个feature大概就是把ebrowse生成的文件load给semantic使用。(要是谁了解这个feature具体意义请告诉我下)
4.1.2 semantic-load-enable-code-helpers
这个函数除enable semantic-load-enable-minimum-features外,还包括: