Where did I say I depend on it?
Undo buffer was an over-simplification.
If you have a project that you need to make huge sweeping changes to, do you copy it somewhere so you can undo your changes? If you use source control you don't have to bother doing that, because you would have already submitted code that you can easily revert to. It also means you can freely close files in your editor without loosing the undo buffer.
You can also create branches to test things and merge or delete those branches back into your main/trunk when you've completed them. Branching is in incredibly useful for having multiple working copies of the code, but without the ball-ache of not having duplicates of everything floating around. For example, you might have one tagged as "release" where you can provide quick fixes to otherwise know stable code and many others for continuous (often called "trunk" or "main") development. With version control software like Git and Mercurial you can cherry-pick changes between branches too, so you can keep your "trunk" up to date with fixes from "release".
I used to use Textpad, but gave up after the author abandoned it (7.x is functional no different to 6.x) and never got around to adding auto-complete / function argument hinting. If you don't want to pay for an Editor, Netbeans (IDE) and Notepad++ (Editor) are about the best you can get.
EDITED: 28 Aug 2013 18:52 by MATT