Please join me at my new location bryankyle.com

Thursday, July 3, 2008

On Emacs

I've been using Emacs for a few months now and after the initial steep learning curve I'm really enjoying it. It's great for all of my text editing and coding needs, although I don't think it will ever replace Eclipse as my editor of choice for Java. Since I'm so enamored with it, I figured I'd spend some time explaining why I came to Emacs instead of the zillion other editors out there.

I used to be a huge fan of TextPad on Windows, it worked well for every situation that ever came up, I've hammered out a few projects using it and not much else. The main problem with it is that it wasn't very extensible. Sure you could add tools, but what you could do was really quite limited. At the time, I just accepted it for what it was and didn't look much further, but things changed when I bought a Mac.

When I bought a Mac, I had a hard time finding an editor I liked. I tried the reigning king of editors BBedit and its free sibling TextWrangler, but I didn't find them to be terribly usable. At the time I was looking for TextPad for OS X, which neither of these were. Eventually I found TextMate, which was exactly what I was looking for. I liked it so much that I bought a license for it, which says a lot given that in all the years of using TextPad I couldn't be bothered to fork out the cash for it, which at the time was about half the price of TextMate.

TextMate did have one major problem though, it only ran on OS X. I do development on Windows and OS X, so I really needed something that was cross platform. I'd given jEdit a try before, but I wasn't that impressed with it, so that wasn't going to work. On Linux I'd always used vim, which worked in a console environment but for some reason it didn't translate well to a windowed environment, so vim was going to work either. When I started looking around, I had kinda-sorta been interested in Lisp. I'd played briefly with Lisp-in-a-box on Windows (Emacs+SLIME+SBCL), and while my initial experience with Emacs wasn't great, it was better than my experience with vim in a windowed environment.

After a few days of using it for simple text editing, I found it to be really productive. Hidden behind a wall of weirdo key bindings was a fantastic editor. As I used it more and more I found myself reading through the documentation learning that Emacs has an insane number of features that I'd always wanted in other text editors. As I became more comfortable, I started to script it. It's really quite amazing all the things you can do when your editor is designed from the ground up to be extensible. None of the editors I'd tried before even came close to being as extensible, or if they were I never knew about it.

In the end, I think I've found the editor that best fits my needs.