I miss Emacs1. Emacs was awesome and fun and everything that I ever needed in an editor–at least that is what I thought.
For those who don’t know, Emacs is an editor that is written in a form of Lisp called eLisp (it’s close enough to just consider it Lisp) which has been enhanced to include text manipulation primitives. There is a Lisp engine that is written in C, but except for the text primitives everything else is written in Lisp. And I mean everything. This makes it extremely easy to configure and modify to make it really yours.
I spent years using Emacs and developed a large body of customization and packages to support my work. I once worked for a guy who literally did not need code to be formatted to read it so he would cram as much as he could onto the screen without any consideration for modern ideas of readability. I on the other hand could not read this jumble of characters. It was so bad that the code formatters that existed could not handle his code, so I wrote a complex Emacs macro that would parse the file (this was C code) and reformat it to something that the formatters could handle. To make him happy I also wrote the converse which would mash the code back into its compressed form (hey he was the boss).
There is no way I could do this with most of today’s editors. On the other hand, Emacs has not been able to keep up with the progress of most IDEs. Large scale refactoring is not really possible with Emacs. There are packages to do some simple refactoring but they are limited. So gave up some years ago and moved to and IDE (at the time it was Eclipse but I’ve moved on to IntelliJ IDEA and friends). With all of the code comprehension tools built in to it I just cannot be as productive while using Emacs (or any straight editor) any more.
But I still miss being able to look at a problem and say “I can write a macro for that.” There is something magical about knowing that you can bend the tool to your will rather that having to bend to its design. And you haven’t lived until you work with an editor that someone said “you know, this is Turing complete so I think I’ll add a new mode that supports Vi inside of Emacs2.” One editor inside of another just using the macro language–that is power.
I still fire it up sometime when I need to work on a few files from the command line and Vi/Vim is not enough and I feel a bit of nostalgia when my fingers automatically fall into familiar patters: Ctrl-S (incremental search), C-X,C-S (file save), Ctrl-K (kill), Ctrl-Y (yank), and all of the other esoteric keystrokes. Even after all of these years they are ingrained in my muscle memory–unfortunately, the modifier keys have moved around which slows me down. Why do we need a gigantic Caps lock button in one of the prime locations on the keyboard? Seriously, do people really need the Caps lock key?
I love IntelliJ and will have a hard time changing if something better manages to be created but it’s just not as fun as Emacs. Need to do a sequence of steps multiple times? Just record it as a temporary macro and execute it as often as necessary. Need to keep it? Just save it. Need to make it more robust, convert it to a code macro and edit it. And do this multiple times a day because it is so easy.
I will always have a special place in my heart for Emacs.