New(er) ISE comes with lots of cool features. One of them is group-matching in editor. This is more than expected from modern editor. But wouldn’t that be handy to have possibility to easily select whole group? If you put cursor at the border of group – matching charter will be highlighted to simplify job. But for me – that’s too much work. How about simple function that would select whole group for me?
function Select-Group { if ($Editor = $psISE.CurrentFile.Editor) { if ($Editor.CanGoToMatch) { $startLine, $startColumn = $Editor.CaretLine, $Editor.CaretColumn $Editor.GoToMatch() $endLine, $endColumn = $Editor.CaretLine, $Editor.CaretColumn $Editor.GoToMatch() # We can't be sure caret was at beg of group... if ($startLine -gt $endLine) { $Editor.Select($endLine, $endColumn, $startLine, $startColumn) } else { $Editor.Select($startLine, $startColumn, $endLine, $endColumn) } } } }
Now all you have to do is assign hotkey to it and you can select groups at will. Enjoy!
Update: quick tip needs quick update – forgot that sometimes (often?) group is all on one line, and column has to be checked in such scenario to avoid exception, so if clause that decides on $Editor.Select syntax should be a bit different:
(($startLine -gt $endLine) -or (($startLine -eq $endLine) -and ($startColumn -gt $endColumn)))
Hope now I haven’t missed any other important exception.