While I don’t usually use hideshow-mode, a lot of the reason why has to do with the awkward key combinations it uses. The prefix of C-c @ is just terrible, so I never really used it. However, hideshow-org was recently released, which provides automatic hiding/showing using the TAB key.
hideshow-org does not interfere with the normal use of your TAB key. It only performs hiding and showing of blocks if the point does not move when you hit TAB, allowing autoindent to work properly. From my tests, it works well with my setup of pabbrev, yasnippet, and autoindenting being bound to the TAB key, although I am not entirely sure of the priorities on all of them.
I have noticed one problem with hideshow so far, but it is unrelated to hideshow-org. If you have a block formatted like this:
int foo( int bar )
{
//stuff
}
And you hide the block, toggling the hiding will not expand the block, but will instead hide the block above it. For it to work properly, the opening brace must be on the same line as the function definition. If anyone knows how to fix this, let me know - otherwise I’ll take a look at it after my finals are over.
To install hideshow-org, download it from the git repository and put the following in your .emacs file:
(require 'hideshow-org)
More detailed information is found on the GitHub page for the project.