This weekend we passed the first of my two personal milestones for Padre.
For the first time I really feel like Padre is a better editor for me than Ultraedit. Or at least, when I'm not using Padre I'm full of hate for Ultraedit because it doesn't do things The Right Way.
Some of the newer features that have put me over the tipping point include.
User Interface Locking
There is an annoying habit exhibited by many programmers that if an API supports some feature, then they HAVE to use that feature, because it helps tick off the boxes.
The most annoying example of this is tearable/dockable panels and menus. Just because you CAN put a little handle on a menu or toolbar or user interface element doesn't mean you SHOULD do this. Ultraedit picked up tearable toolbars a few years ago, and I hate it.
I've accidentally torn off a user interface element FAR more often than I've legitimately done so.
While supporting GUI floating/docking, Padre now comes with a "Lock User Interface" menu option that is enabled by default, so MOST of the time the feature is disabled and Padre can stop wasting pixels on anything that doesn't get you working faster, minimising the cognative load.
Automatic Indent Detection
One of the big things many of us wanted from Padre was to finally resolve the "tabs vs spaces" debate.
Padre lets you configure your preferences for tabs vs spaces vs spaces-with-every-group-of-n-spaces-converted-to-a-tab.
It also has a handy "Guess" button that sets your indent settings automatically from the currently opened document.
And now we've also added a funky "Automatic Indentation Style" option which will automatically determine the indent settings for each file as you open it, and apply the existing indent style when editing that file.
Finally, in the next release or two we'll have support for project-specific configuration, so we can allow authors to set per-project indent preferences which Padre will happily follow (at least for other Padre users at first, but it's a start...).
Directed Vertical Aligning
I'm big on vertical aligning, because it removes visual clutter and makes it easier for me to read the code a paragraph at a time. Instead of trying to work out if and how lines are related, the aligning clearly ties the lines together.
But alas, if you ALSO use tabs for indenting, most editors don't provide a good way to do this.
And PerlTidy wants to be in charge of the entire document, when I just want to line up the 10 lines I'm looking at right now...
Padre now has support for user-directed vertical aligning.
It's hard to explain how awesome this is in words, so I've uploaded some screenshots to show it in use.
This is far far more useful to me than PerlTidy, because it quickly and accurately captures my intent, and lets me express what I want in a specific place, without having to apply the same preference across an entire file or project.
Add to this a function list that's now far better than the one in Ultraedit, the beginnings of refactoring (lexical variable renaming) and a syntax-checking compiler that automatically understands to compile a module in distribution context even if I haven't set up a project for it.
The result is that Padre is now starting to feel "normal" and the lack of clue in Notepad++ and Ultraedit is starting to become more and more annoying.
The last big missing feature left to implement before I switch away from Ultraedit permanently is recursive Find and recursive Replace.
Only trouble is that to do that Properly, you need to know some things in project context, like which files to ignore (MANIFEST.SKIP? meta.yml?) and what version control files to skip over (CVS/.svn) and so that means project support, which means that we need the new Project-aware configuration layer.
But once I get this last bit of Yak shaving out the way, I think I'll finally be ready to leave Ultraedit for Padre and never go back.