`
joerong666
  • 浏览: 418076 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在Emacs中使用CEDET

 
阅读更多

By:             潘云登

Date:          2009-7-8

Email:         intrepyd@gmail.com

Homepage:http://blog.csdn.net/intrepyd

Copyright: 该文章版权由潘云登所有。可在非商业目的下任意传播和复制。

对于商业目的下对本文的任何行为需经作者同意。 

 


写在前面

 

 

 

CEDETCollection of Emacs Development Environment Tools的缩写,用以将Emacs改装成高级的程序开发工具。它提供了丰富多彩的功能,如工程管理,智能补全,代码生成,UML图等等。这里,介绍一些平时编程中最常使用的三个功能:代码补全,查找定义和查找引用。

本文主要参考:CEDET主页,《A Gentle introduction to Cedet》,以及曹乐的《Emacs下用C/C++编程》。

 


安装 CEDET

 

 

CEDET主页上下载源码包,解压到任意地方,如~/.emacs.d/site-lisp。在终端下,进入解压后的文件夹,执行下面的命令,进行编译。

 

make EMACS=emacs

 

.emacs文件中加入如下内容,加载CEDET

 

(load-file "~/.emacs.d/site-lisp/cedet-1.0pre6/common/cedet.el")

 

 


配置 CEDET

 

 

这里,将要使用的三个功能是通过执行CEDET定义的不同命令来完成的,所以往.emacs配置文件中加入的主要是这些命令的按键绑定。另外,打开了一个代码折叠功能,对阅读较长文件略有帮助。现在,一并给出需要在.emacs中添加的内容,相关作用以注释形式给出,稍后再详细说明。

 

;;;; 具体说明可参考源码包下的INSTALL文件,或《A Gentle introduction to Cedet

;; Enabling Semantic (code-parsing, smart completion) features

;; Select one of the following:

;;(semantic-load-enable-minimum-features)

;;(semantic-load-enable-code-helpers)

;;(semantic-load-enable-gaudy-code-helpers)

(semantic-load-enable-excessive-code-helpers)

;;(semantic-load-enable-semantic-debugging-helpers)

 

;;;; 使函数体能够折叠或展开

;; Enable source code folding

(global-semantic-tag-folding-mode 1)

 

;; Key bindings

(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-cd" 'semantic-ia-fast-jump)

  (local-set-key "/C-cr" 'semantic-symref-symbol)

  (local-set-key "/C-cR" 'semantic-symref))

(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)

 

对于五种模式,后一种总是包含前一种的功能。其具体作用不甚了解,唯一可以观察到的是,当光标停留在函数调用上时,如printf能够显示函数原型。semantic-load-enable-gaudy-code-helperssemantic-load-enable-excessive-code-helpers的区别在于,前者将函数原型显示在缓冲区顶部,后者显示在状态栏。

    代码补全,使用semantic-ia-complete-symbolsemantic-ia-complete-symbol-menu命令,后者以弹出菜单形式显示所有可能的选项。这里的补全主要是针对函数名和变量名。

    查找定义和引用,分别使用semantic-ia-fast-jumpsemantic-symref-symbolsemantic-symref命令。semantic-symref-symbol请求输入要查找的符号,semantic-symref则查找光标所在处的符号。之前使用cscope完成此类工作(可参考《Cscopeemacs中的配置与使用》)。cscope常用来阅读大型工程的源码,如linux内核。相比之下,semantic更加轻便,无须额外的数据库文件,更适于平时的编程工作。它可以查找到库头文件中的函数声明。遗憾的是,无法查找到上层文件夹中的内容。目前没有找到解决办法,先将就用吧:)

 


更强大的代码补全

 

 

semantic的补全基于编程语义,emacs自带的hippie-expand则提供更为强大的编辑补全功能。这里,直接将曹乐的配置内容添加到.emacs文件中。

 

;;;;自动补齐策略

(defun my-indent-or-complete ()

   (interactive)

   (if (looking-at "//>")

          (hippie-expand nil)

          (indent-for-tab-command))

)

 

(global-set-key [(control tab)] 'my-indent-or-complete)

 

(autoload 'senator-try-expand-semantic "senator")

(setq hippie-expand-try-functions-list

          '(

              senator-try-expand-semantic

                   try-expand-dabbrev

                   try-expand-dabbrev-visible

                   try-expand-dabbrev-all-buffers

                   try-expand-dabbrev-from-kill

                   try-expand-list

                   try-expand-list-all-buffers

                   try-expand-line

        try-expand-line-all-buffers

        try-complete-file-name-partially

        try-complete-file-name

        try-expand-whole-kill

        )

)

分享到:
评论

相关推荐

    emacs 配置,cedet

    在本文中,我们将深入探讨如何配置Emacs,特别是关于 Cedet、ECB (Emacs Code Browser) 和 Yasnippet 的集成,以及如何进行键位自定义。 首先,Cedet(Common Emacs Development Environment Tools)是一套Emacs的...

    emacs+ecb+cedet源码包

    emacs ecb cedet源码包 包括: emacs-23.4.tar.gz emacs-24.3.tar.gz ecb-2.40.zip cedet-1.0.1.tar.gz cedet-1.1.tar.gz

    cedet&ecb&.emacs.rar

    cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb .emacs cedet ecb ....

    emacs配置 ecb, cedet, c++, dot emacs, speeder

    Emacs对于C++的支持主要来自于CEDET中的Semantic模块,它可以解析C++代码,提供代码补全、重构、错误检查等功能。此外,还有其他第三方模式如CC Mode,提供C++语言特定的缩进、高亮和快捷键。通过这些工具,Emacs...

    emacs-23.2-bin-i386 含cedet,auto-complete,doxymacs,yasnippet,cscope,ecb

    在这个"emacs-23.2-bin-i386"版本中,专为i386架构的Windows系统进行了优化,包含了多个增强功能的插件,旨在提升程序员的开发效率。 首先, Cedet(Code Environment Development Environment Tools)是一套集成...

    windows emacs23.1配置(包含cedet、ecb、distel及常用配置)

    2、适用于windows emacs23.1的cedet 3、ecb 4、distel(for erlang) 具有的功能: 1、隐藏工具栏、滚动条 2、自动保存会话(desktop) 3、颜色主题(color-theme) 4、启动时窗口最大化(maxtheme) 5、erlang-...

    emacs 23.1 cedet 1.0pre7 ecb 2.33 cscope ...

    EMACS 23.1 CEDET 1.0pre7 ECB 2.33 cscope 15.7 诸多其他插件及优化配置 使用方法: 覆盖Emacs安装目录下的site-lisp文件夹 然后在C盘根目录建立一个.emacs文件,文件的内容为: (require 'examyes-main)

    cedet

    - **Global CEDET**: 负责在整个Emacs会话中协调Cedet的各种组件,确保它们协同工作。 - **Speedbar**: 一个侧边栏界面,用于项目导航、文件浏览和搜索。 **2. Cedet的功能** - **自动完成**:基于Semantic的数据...

    emacs lisp with autocomplete cedet company doxymacs ecb yasnippet etc.

    Doxygen是一种流行的代码文档生成工具,Doxymacs使得在Emacs中编写和维护Doxygen注释更加方便,可以自动生成符合Doxygen格式的文档。 5. **ECB**(Emacs Code Browser):ECB提供了一个集成的代码浏览器,用于查看...

    cedet-1.1.tar.gz

    再者,Sidewalk是Cedet中的一个调试接口,它与GDB(GNU Debugger)或其他调试器配合,让Emacs成为一个功能强大的调试平台。通过Sidewalk,开发者可以在Emacs内直接设置断点、查看变量值、单步执行等,使调试过程更为...

    cedet-1.0&ecb-2.32

    为了在RedHat AS 5.4上使用这些工具,首先需要解压cedet-1.0.rar和ecb-2.32.rar文件,然后在Emacs中进行配置。关键步骤包括: 1. ** 安装**: 将解压后的文件复制到Emacs的load-path路径下,或者在~/.emacs文件中...

    linux emacs 配置文件

    本配置文件基于网上提供的其他配置文件进行修改。 支持: emacs 24 +cedet 1.1 +ecb 2.40 源配置文件下载地址: http://download.csdn.net/detail/karotte/3812760

    cedet configure file for emacs

    Alex Ott的cedet配置文件,通过这个,可以在emacs下支持代码自动补全等VC Assist之类的功能。

    cedet-1.0pre7.tar.gz

    安装并配置Cedet后,开发者可以在Emacs中享受到接近于现代IDE的开发体验,而不失Emacs的灵活性和可定制性。"cedet-1.0pre7"是Cedet的一个早期版本,尽管它可能不包含后来版本的一些改进和更新,但对于想要体验Cedet...

    emacs的完全配置(autocomplete cedet ecb yasnippet)

    emacs 的完全配置, 将emacs配置为IDE 代码补全,模板公功能。 函数跳转, 工程管理, 等等

    emacs 配置

    在配置Emacs时,避免使用像ECB(Emacs Code Browser)和CEDET这样的大型框架也是一项明智的选择。虽然这些框架提供了一揽子的代码分析和辅助功能,但它们可能会导致Emacs运行缓慢,而且对于新手来说配置复杂。通过...

    emacs配置IDE

    安装后,可以在Emacs中直接运行R命令,查看帮助文档,甚至进行调试。 2. `AUCTeX`: 这是Emacs中用于LaTeX写作的强大工具,它提供了自动完成、错误检查、预览等功能,极大地简化了LaTeX文档的编写过程。 3. `CEDET`...

    jdee-cedet-elib文件

    **elib** 是CEDET中的一个核心库,它提供了通用的数据结构和函数,支持CEDET和其他Emacs扩展的实现。elib包含了各种实用的功能,如缓冲区管理、文件操作、搜索和替换、对象和类的定义以及事件处理等。它是CEDET框架...

    my-lisp-emacs-23.2

    这些组件都是为了提高Emacs在编程和代码编辑中的效率和功能。 1. **auto-complete-1.3**: 这是Emacs的一个自动补全插件,它提供了智能提示功能,帮助用户快速输入代码。它可以根据当前上下文、历史记录和文件内容来...

    emacs 编程相关perl

    Emacs 是一款强大的文本编辑器,它以其高度可定制性和扩展性著称,尤其在编程社区中备受青睐。...在实际使用中,开发者可以根据自己的习惯和需求,选择和配置适合的工具和插件,以提高编程效率和代码质量。

Global site tag (gtag.js) - Google Analytics