Emacs中使用Ebrowse来浏览C++代码

来源:互联网 发布:淘宝联系卖家客服不回 编辑:程序博客网 时间:2024/04/28 16:18

1 Ebrowse说明

 Ebrowse是一款类似cscope的工具,但是它只能专用于C++代码.Emacs可以使用它浏览C++中的类继承信息.  Ebrowse其实分为两个部分,一个部分是Emacs自带的ebrowse(windows中为ebrowse.exe)命令,该命令可以在shell中运行.另一部分则为Emacs编辑器中的ebrowse相关Lisp程序.  在使用Ebrowse前,需要使用ebrowse命令对源代码进行预处理生成数据库,随后Emacs才能通过读取数据库的内容来显示/操作源代码中的类,成员,全局函数,宏,类型等..

2 ebrowse命令

 使用ebrowse命令生成源代码数据库的方式很简单,只需要执行`ebrowse 源代码文件名`即可. 当然ebrowse命令也提供了许多命令选项.使用选项`–help`来显示帮助信息

选项说明–file=$file以$file中包含的内容作为待解析的文件列表,每行表示一个文件名–search=$paths为输入文件定义搜索路径,其中$paths根据操作系统的不同使用冒号或分号分隔不同路径–output-file=$file定义输出数据库的文件名–append不清除数据库文件的原始内容–no-structs-or-unions不记录struct和union的信息–no-regexps不记录正则表达式信息,这些正则信息有利于Emacs的Ebrowse相关命令来查找函数,变量等信息–verbose/–very-verbose显示处理源代码过程的详细信息

3 Tree-buffers

 使用C-x C-f打开ebrowse命令生成的文件时,会自动进入Tree-buffer,在其中提供了如下一些操作

3.1 操作

命令说明/查找类名n继续上一次查找q退出L v显示成员变量L V显示静态成员变量L d显示友函数L f显示成员函数L F显示静态成员函数L t显示类型类表T f切换显示类所对应的文件名s显示当前行的文件名,如果加了数字参数,则显示第N行的文件名-折叠树+展开树*展开所有的折叠C-k移除当前行及其子类C-x C-s / C-x C-w保存编辑过的类树x显示类树的统计信息M t給当前类加/去除MarkM a去除所有类的MarkC-u M a給所有类添加MarkSPC查看当前classRET定位到当前class

4 Member-buffers

 存在6中不同的member-buffers,分别用来表示

  • Instance variables

  • Instance functions

  • Static variables

  • Static member functions

  • Friend functions

  • Types

4.1 操作

命令说明L n显示下一个member列表L p显示上一个member列表L v显示成员变量L V显示静态成员变量L d显示友函数L f显示成员函数L F显示静态成员函数L t显示类型类表RET定位到当前member的定义处f定位到当前member的声明处SPC查看当前member的定义v查看当前member的声明D b显示/不显示继承来的memberD a是否显示member属性D l是否显示详细信息(长模式),短模式只显示member名,长模式显示member名和匹配member的正则表达式G v查找指定的memberG m查找指定的member,与上一个命令不同点在于补全的范围更大了G n继续上一次的查找F 系列命令FilterF a u是否显示public memberF a o是否显示protected memberF a i是否显示private memberF v是否显示virtual memberF i是否显示inline memberF c是否显示const memberF p是否显示pure virtual memberF r删除所有filterC 系列命令显示其他的Class内容C c切换到指定的class的member-bufferC b切换到基类(base)的member-bufferC d切换到子类(derived)的member-bufferC p显示同一继承层次中的前一个class的member-bufferC n显示同一继承层次中的后一个class的member-bufferq退出C-l刷新显示?显示mode帮助

4.2 member属性说明

  属性列表从左至右说明为:

  • T         member是template

  • C         member声明为extern "C"

  • v         member声明为virtual

  • i         member声明为inline

  • c         member是const的

  • 0         member是纯虚函数

  • m         member声明为mutable

  • e         member声明为explicit

  • t         member声明了throw list

5 查询tag

 ebrowse也提供了一些类似find-tag这样的命令,你可以在C++源代码buffer中执行如下一些命令.

5.1 操作

命令说明C-c C-m f定位到当前member的定义处C-c C-m F定位到当前member的声明出C-c C-m v查看当前member的定义C-c C-m V查询当前member的声明C-c C-m 4/5 f/F/v/V类似上面的命令,但是在另一个窗口/frame中显示C-c C-m -定位到上一个跳转点C-c C-m +定位到下一个跳转点C-c C-m p显示跳转列表,在列表上可以按SPC来定位,按v来查看位置C-c C-m s在文件集合中执行正则表达式查询C-c C-m u查询调用当前member的地方C-c C-m %在文件集合中执行正则表达式替换C-c C-m ,上面3个操作当找到第一个匹配条件时会停止,该命令重启上面的查询C-c C-m n跟上面的命令类似,重启上一次的匹配操作,担从文件集和中的下一个文件开始匹配C-c C-m l显示指定文件中的所有memberC-c C-m a显示所有符合给定正则表达式的memberC-c C-m <TAB>自动补全当前符号C-c C-m m显示包含光标所在member的member-buffer


本文出自 “暗日” 博客,请务必保留此出处http://darksun.blog.51cto.com/3874064/1352691

0 0