Emacs reborn
I’ve used a few editors in my career. I started with the venerable
vi. No, scratch that. I started with
Borland’s Turbo C++…
No! Scratch that too. I started typing BASIC at an OK prompt on a
CP/M machine.
But I digress.
Let’s say I started with vi. The first time I opened it, I had to
reboot the computer to get out of the damn thing. By the time I
discovered Emacs—thank you, philg!—I
was already a proficient vi user.
But Emacs was something else. It let me live inside the editor in a way I hadn’t thought possible. I could customize every aspect of my editing experience. The catch was that doing so required knowing Emacs Lisp. Bleh.
While working on BitKeeper, I realized that
most of my co-workers used Vim: a modern vi. So I switched back. Then
my friend Tim
reminded me why I had loved Emacs in the first place.
Back to Emacs I went.
At my next job, I was using more languages. Getting Emacs "just so" for Go and Rust was a PITA, mostly because of its archaic APIs and the Emacs Lisp requirement. Did I mention Emacs Lisp isn’t real Lisp?
And look! VS Code had excellent Emacs keybindings and made it easy to
use rust-analyzer and
gopls. It’s what all the cool kids were using,
so why not?
Extending VS Code meant JavaScript or TypeScript, neither of which I knew. But most of what I wanted already existed and required little configuration. More importantly, easy code navigation and autocompletion trumped my desire to have the editor be "just so."
Then came LLMs.
"Claude, I like Ediff, but I want a navigation mode where I can keep hitting Space to jump to the next diff. At the end of a file, move to the next file. Make Shift-Space go backward the same way."
Now I have BitKeeper’s difftool written in Emacs Lisp.
LLMs turned Emacs Lisp from a tax into an implementation detail.
Back to Emacs I go.
Oscar Bonilla