LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1158|回复: 10

用 Emacs 选择性地查看 C/C++ 源程序中的分支

[复制链接]
发表于 2005-12-6 15:01:46 | 显示全部楼层 |阅读模式
使用 Emacs,可以选择性地查看和修改 C/C++ 源程序中的分支,这些分支通常用 #ifdef 和 #endif 来定义。下图是一个非常简单的定义了分支的程序。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2005-12-6 15:02:42 | 显示全部楼层
这时执行 M-x cpp-highlight-buffer,就会得到如下图所示的界面。图中,True Face 确定了为真的分支的外观,False Face 确定了为假的分支的外观,Write 确定了是否可以改写某一个分支中的内容。可以用鼠标的中键(mouse-2)来作出选择,但在终端里无法使用鼠标,这时可以使用 T (True)、F (False) 和 W (Write) 来选择。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 15:04:17 | 显示全部楼层
现在按 T,输入符号名 ABC <RET>,再按 <TAB>,就得到了下图的界面,可以选择特定的外观。比如我不希望看到为真的分支的内容,就可以选择 invisible。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 15:05:03 | 显示全部楼层
可以为所有的分支定义属性。定义完成后,如下图所示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 15:05:46 | 显示全部楼层
然后,切到程序的 Buffer 再次执行 M-x cpp-highlight-buffer,就可以得到下面的结果了。是不是很方便啊。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 15:18:35 | 显示全部楼层
也可以在 cpp 的 Buffer 里执行操作。下面是常用的操作:

  1. a    应用修改
  2. r    重置修改
  3. s    将修改保存到 ~/.cpp.el 中
  4. l    加载 ~/.cpp.el
复制代码


其他更多的操作可以查看 Emacs 自带的 cpp.el 文件。
回复 支持 反对

使用道具 举报

发表于 2005-12-6 19:35:22 | 显示全部楼层
那么多键,有点晕
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 21:19:58 | 显示全部楼层
Post by graydream
那么多键,有点晕
呵呵,[T]rue 就表示按 T 键,和 Windows 里 True 是一样的
回复 支持 反对

使用道具 举报

发表于 2005-12-6 22:02:39 | 显示全部楼层
Post by herberteuler
呵呵,[T]rue 就表示按 T 键,和 Windows 里 True 是一样的

[color="Magenta"]非常好用,我试过了。想问下herberteuler这个。cpp.el文件应该编写,该摆在哪里才能让emacs认到呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-6 22:17:15 | 显示全部楼层
Post by mylynx
[color="Magenta"]非常好用,我试过了。想问下herberteuler这个。cpp.el文件应该编写,该摆在哪里才能让emacs认到呢?

似乎是 cpp.el 自动生成的,而不是人工写的。比如,那个例子的 .cpp.el 是这样的:
  1. (setq cpp-known-face 'invisible)
  2. (setq cpp-unknown-face 'highlight)
  3. (setq cpp-face-type 'light)
  4. (setq cpp-known-writable 't)
  5. (setq cpp-unknown-writable 't)
  6. (setq cpp-edit-list
  7.       '(("ABC"
  8.          (background-color . "magenta")
  9.          invisible t nil)))
复制代码

应该是用 S 保存的吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表