现在的位置: 首页 > 综合 > 正文

emacs 使用 之 cedet

2013年10月15日 ⁄ 综合 ⁄ 共 3710字 ⁄ 字号 评论关闭

1. 利用  semantic-ia-complete-symbol 可以进行参数的跳转。

cedet 安装:

在准备写Emacs才是世界上最强大的IDE系列文章时,由于以前用的是cedet1.0pre6版本,速度比较慢,而且精确度也不高,所以就没有打算写它,昨天晚上在水木群里听一位网友介绍说cedet的cvs版本速度很快,而且精确度不错,所以晚上就down下cvs的版本试了一把,越试越感觉不错,就有了写cedet的想法。从头开始,先说安装吧。

cedet的安装挺简单,只要仔细看好cedet的说明就可以了,不过我昨天晚上没仔细看好说明,安装的时候碰到一个问题,所以我还是准备写一下安装过程。(如果你用apt-get, 或者emerge安装,首先要看下它们的版本,1.0pre6和其之前的版本都不要安装,语法分析会很慢的。)

首先下载cedet的cvs版本:

?View
Code
 BASH

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下:

    ?View
    Code
     BASH

    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下这样也可以):

    ?View
    Code
     BASH

    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里面:

?View
Code
 LISP

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中了):

?View
Code
 LISP

(require 'cedet)

4 semantic配置

先介绍一下最常用的semantic。

4.1 功能介绍

一般装插件的思路,都是先load然后enable某个minor mode。cedet基本上也遵循这个规则,不过有点区别是semantic定义了很多个mode,要是挨个去enable,用户可能就要骂娘了,所以cedet的作者Eric定义了几个方便使用的函数,这些函数会自动帮你enable某些minor mode,大概有这么几个:

?View
Code
 LISP

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外,还包括:

    抱歉!评论已关闭.