Recently I’ve found myself using HideShow more. Its a package that makes it easy to hide or show blocks of code. However, I found it a bit lacking in a particular manner. I wanted to be able to hide all PHP doc blocks and the contents of all methods in a class. There’s no one command in HideShow to do this, so I wrote my own (and then added it to my php-mode hook).
Here’s the code:
1 2 3 4 5 6 7
To really get a feel for what this function does, get HideShow and use it a bit, then use my function. You’ll see that HideShow can do a “hide all”, but in a class that simply hides everything in the class. You can do a “hide level” inside a class, but that will hide all the function’s contents, but not the doc blocks. It also will hide the arguments to a function if they are on multiple lines. My function is, in my opinion and for my usage at least, cleaner and more exact in what i want to hide (or not hide) when first opening a php code file.
You might notice that in the regexp, I search for opening curly braces with at least one space or tab in front. I do this to bypass the opening class brace, since hiding that will hide everything in the class. Of course, this regexp can be change to meet your coding style. I put my class and function opening curly braces on the line below the definition, like this:
1 2 3 4 5 6 7
If you code like this instead (which I used to):
1 2 3 4 5
you can change the regexp to search for something like
I haven’t tested this, but it gives you an idea for a starting point, at least. Don’t take it as a copy/paste, as its probably wrong.
Of course, there’s nothing saying this only for PHP, as HideShow is generic. I find this function useful and hope others will too.