`hideshow` mode not working with lines starting with comments

325 views Asked by At

I'm using emacs (24.3.1) along with cc-mode and hideshow for programming c++. I am working on a project, where the coding styles requires that any keywords present in the header file must be repeated in the source file. In case that this is not allowed by the standard, the keyword must be placed in comments. Let me give you and example:

/* virtual */ void MyAwesomeFunction( int arg, int optarg /* = 0 */ ){
    // stuff
}

Obviously there is a comment starting the line. It seems that hideshow can't cope with this sort of formatting. When I call hs-hide-all all code blocks are folded correctly, the same is true if I call hs-hide-block from anywhere within the function. However, if I call hs-hide-block whith point beeing somewhere in the opening line of the function (the first line of my codesnippet) now folding occurs and the error message:

(not enough comment lines to hide)

is printed. The only explicit configuration of hideshow I have done so far is:

 (setq hs-hide-comments nil)

However, removing this line makes it even worse: Afterwards not even calling hs-hide-all works properly: all inner blocks are folded, but folding at the function level does not occurs for functions with a leading comment.

Anyone knows how to fix this?

1

There are 1 answers

0
Drew On

It might help to explicitly hide comments first, either just within the region or throughout the buffer. You can use library hide-comnt.el to do that. A description is here.