Emacs 中使用 Cscope (xcscope.el)

 

Emacs 中使用 Cscope (xcscope.el)
 
 

Emacs 中使用 Cscope (xcscope.el)

Created: Fang lungang(方伦钢) 10/30/2006 Modified: Fang lungang 02/29/2008 08:48>

有几种 Emacs 插件都提供了 Cscope 接口。我试用后最终选择了 xcscope.el 。尽管它是为XEmacs 开发的,但是它和 GNU Emacs 结合很好。

使用 xcscope.el 很简单,常用的功能都能在菜单栏找到(然后再记住相应的快捷键)。

0. 准备

你的系统中必须装有 Cscope ,并且 Emacs 能够找到它,即必须把 cscope 加入到 PATH 中。

1. 安装

把 xcscope.el 放到 emacs 的 load-path 下,然后在 .emacs 中加入下面的语句即可:

(require 'xcscope)

默认情况下, 好像 Emacs每次调用 Cscope 时都会检查是否有文件被改动过。如果有的话,就会自动重新编译 cscope 数据库 (cscope.out)。这个功能相当实用。

但是如果工程十分庞大,即使是判断文件更新与否也很费时,可以告诉 Emacs 别自动更新 cscope.out:

(setq cscope-do-not-update-database t)

2 使用

2.1 创建文件列表

cscope 要根据文件列表(cscope.files)来创建数据库(cscope.out)以供以后的查询使用,所以第一步是创建文件列表。cscope.files 的格式是每行一个文件(包含与cscope.files 的相对路径)。

比较简单的源码,你可以手工创建 cscope.files ,例如用 find 命令:

find . -name '*.c' -type f > cscope.files

但我推荐用网上的一个 BASH 脚本 “cscope-indexer",调用命令为:

cscope-indexer [-r]

可选参数表示递归检索子目录。

因为是开源的脚本,你还可以根据自己的需要修改 cscope-indexer。例如我现在看的代码中有许多后缀为 '.x' 的源文件,我就把脚本中下列行稍作修改:

egrep -i '/.([chly](xx|pp)*|cc|hh)$' | /

改成

egrep -i '/.([chly](xx|pp)*|cc|hh|x)$' | /

2.2 为 Emacs 指定 cscope.file 的位置

应该是这样的吧 :),我从来没做过这一步。Emacs 默认会从当前目录往上找,遇到第一个 cscope.files 停止。

2.3 享用

打开 C/C++ 文件,菜单栏上会多出来一项 cscope,用鼠标在下拉列表中选择就行了。具体的操作我就不说了,实在是太简单了。如果想用快捷键, xcscope.el 注释中有详细的文档。只想提醒一下,程序文件中cscope 的快捷键是 cscope buffer 中相应的快捷键加上 'C-c s' ('C-c' 表示是mode 相关,'s' 代表 'scope' or 'search' ?)。例如

*cscope* buffer 中按字母 'n' 看下一个 symbol,在源文件中则需要按 C-c s n

2.3.1 两个特别有用的键

*cscope* buffer 中:'?' ——显示最常用的几个键

源文件 buffer 中:'C-c s b' 和 'C-c s u'。作用?自己试试就知道了。

我的扩展

xcscope.el 没有保存搜索历史的功能。在看大项目的代码时,不太方便。一方面是因为搜索一次可能要花几秒、十几秒的时间;另一方面,记性不好的,例如我,容易忘了查了哪些函数。所以我修改了 xcscope.el ,加上了在搜索历史中前进后退的功能。

另外,有时候虽然查询的结果很多,但我们只关心其中的一部分。所以我给它加上了过滤结果的功能。其实就是调用 keep-linesflush-lines 。做的比较粗糙,能凑合着用而已 :) 。

这两个 patch 我都提交到 sourceforge 上去了( http://sourceforge.net/tracker/?group_id=4664&atid=304664 )。基准版本是 cscope15.6 所带的 xcscope.el

创建于: 2006-10-30 23:55:02,修改于: 2008-02-29 08:54:56,已浏览7096次,有评论4条
 
 

 

 
网友评论
 
网友:mslk 时间:2008-04-05 23:30:38 IP地址:61.54.142.★
 
 
 
这里下载win32版本的cscope.exe
http://sourceforge.net/project/showfiles.php?group_id=196604 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值