【发布时间】:2013-08-05 14:29:33
【问题描述】:
我正在使用 emacs (24.3.1) 以及 cc-mode 和 hideshow 进行编程 c++。我正在处理一个项目,其中编码样式要求头文件中存在的任何关键字都必须在源文件中重复。如果标准不允许这样做,则必须将关键字放在 cmets 中。让我给你举个例子:
/* virtual */ void MyAwesomeFunction( int arg, int optarg /* = 0 */ ){
// stuff
}
显然有一个注释开始行。 hideshow 似乎无法处理这种格式。当我调用hs-hide-all 时,所有代码块都正确折叠,如果我从函数内的任何位置调用hs-hide-block,情况也是如此。但是,如果我调用 hs-hide-block whith pointbeeing 在函数开头的某处(我的代码 n-p 的第一行)现在发生折叠并且错误消息:
(not enough comment lines to hide)
被打印出来。到目前为止,我对hideshow 所做的唯一显式配置是:
(setq hs-hide-comments nil)
但是,删除这一行会使情况变得更糟:之后甚至调用 hs-hide-all 都不能正常工作:所有内部块都被折叠,但是对于带有前导注释的函数,不会发生函数级别的折叠。
有人知道如何解决这个问题吗?
【问题讨论】:
-
错误在于
hs-inside-comment-p认为您在评论中。临时解决办法是(defun hs-inside-comment-p)。