Emacs is more than a text editor to me. It feels like home. I’ve been through quite a many editor in my day. From (classic) Notepad, to TextMate (paid) to pico, then nano, then Vim (for a very long, enjoyable, time) and then, Emacs. I’ve had brief stints with KDE’s Kate and Microsoft’s VSCode. Both excellent editors in their own right, but nothing I use seems to compare with Emacs.
What is Emacs?
Emacs is, at it’s core, not really a text editor. It’s a Lisp interpreter for a specialized dialect of Lisp known as Emacs Lisp (or elisp). Aside from the interpreter and some core components built in C (for performance reasons), the rest of the stack is entirely built on this language. From the editor, to the tooling, to the interface. All Lisp. This means that the editor is extremely malleable. You can extend it on a whim, add packages that build entirely new functionality and control whole systems with it.
All of this can be done live, while the application is running. Meaning I can take a bit of code I’ve written in elisp and evaluate it, and now it’s part of the running program (or just returns a result, depending on what it is). I can do this for all sorts of things. Writing my own functions, handling input, connecting to servers. I can even write “advice” on existing functionality. Instead of having to replace a “problematic” function, I can just “advise” it to behave in such a way, by having code run before or after it.
Home is Where Your Text is
One of the best things about Emacs, and much of the so-called “Unix Philosophy” is that you largely deal in text. Input and output are usually text, unless you’re compiling for a purpose (pdf, pandoc, binary). Everything in Emacs is centered around dealing with text. This allows you to see, manipulate and ultimately manage things in a familiar way. There are no opaque file formats that can only be opened in Emacs, or are incompatible with different versions. It’s just text.
For all it’s warts, Emacs has become my final editor of choice. While some tools may be fancier, none is as versatile or as interesting as Emacs is. It’s been around for ages, and I hope that it sticks around for ages more.