In hs-mode, is there a way to only hide the comments (C-style, delimited by /* ...*/), and no other blocks of code?

(there was nothing obvious in M-x customize-group hideshow)


2 Answers 2


You can just set hs-hide-all-non-comment-function to #'ignore. If you want to do that globally put the following in your init file:

  (setq hs-hide-all-non-comment-function #'ignore)

If you want to do that only for certain major modes replace my-major-mode with the major mode of your choice and put the modified line in your init file:

  (add-hook 'mine-major-mode (lambda () (setq-local hs-hide-all-non-comment-function #'ignore)))

This does not directly answer your question, but it might be an alternative to consider.

Library hide-comnt.el is designed to let you hide or ignore comments.

  • There are commands to hide, show, and toggle showing comments.

  • There is a macro, with-comments-hidden, that you can use to wrap code that you want to ignore text in comments.

  • You can set or bind option ignore-comments-flag to nil to inhibit ignoring comments by the macro.

  • You can use option hide-whitespace-before-comment-flag to hide also the whitespace preceding a comment (other than empty lines).

  • You can use option show-invisible-comments-shows-all to cause all invisible text to reappear when you turn off hiding comments. (By default, only the hidden comments reappear.)

I can't speak to how well hide-comnt.el might play with hs-mode. An untested guess is that it will work just fine. It uses a specific value (hide-comment) for text property invisible, so I don't expect any conflict.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.