2025/12/08 - Adventures in Emacs
So, I decided to switch to Emacs a while ago, and this is my opinions so far.
Let's start with my config: I am running Doom Emacs with minimal extra configuration:
- I have disabled Evil mode (Vim keybindings)
- I added a few packages and changed a few things (fonts, etc.)
- I have enabled quite a few of the modules.
Okay, but what do I think? Let's start with the bad:
- The keybinds are nonstandard. This one is justified given both the age of Emacs and the fact that it was originally in a terminal so it was limited in some ways. In some ways, this is a good thing - For example,
C-p, C-n, C-b, and C-f are closer than the arrow keys and can be combined with C-u (Numeric prefix argument) to go far with few keystokes. (C-u 1 5 C-nwill move point 15 lines down.)
- The config that comes with Emacs out of the box, sucks. It's a lot of work to bring Emacs up to "modern IDE" standards from a blank config. Things like Language Servers, autocomplete in buffers, etc., are not included. Doom Emacs fixes this, however.
- Loading from a config makes it reproducible, but the built-in package management is messy and sucks, and configs tend to get unmaintainable quickly. Again, Doom Emacs "fixes" this by bringing you to a reasonable default and only requiring smaller, more maintainable changes (in most cases.)
- By default, the undo is confusing. I understand (and love) that the idea is you can undo and redo without losing anything, but
vundo or undo-tree should probably be merged into it. Adding undos to the undo stack is weird.
- ELisp is a weird old language with the weird old quirks to boot. It's like haskell, and Lambda calculus-y, and while I got used to it, and I don't *hate* it, it's still weird.
And now, the good:
- The extensibility is insane. I don't think any other application is as modifiable as Emacs. Don't like something? Install an extension, or write one in ELisp to partially or completely change it by modifying the source code on-the-fly.
- Inbuilt documentation is really good, to the point that it's just a matter of *finding* what you are looking for. It's also cool that a lot of the docs can be auto-generated from the actual code.
- Emacs Calc is very useful. It's no Frink, but it's also not a full-blown language of it's own. It's very powerful, and the RPN nature of it makes it very versatile. I also like that it's integrated into a lot of parts of Emacs.
- Dired is also very cool. When combined with the very powerful regex or ELisp find-and-replace, Bulk renaming of files goes from "guess i'm installing something special for this/writing a shell script" to a simple (with the right extensions, live editable) regex/ELisp program for entire directories and subdirectories.
org-mode is objectively the best way to take notes I've ever seen. Automatic formatting, indexing, and referencing of notes is incredible, and having inline rendered LaTeX or tables that can be gnuplot'd at a moment's notice, or even formulas that use Calc for those tables, or many, many other things that having an exhaustive list of it is infeasible.
Overall, I'm really happy with Emacs, and I don't think I'll be switching anytime soon. It has supplanted all of my text editing, with the exception of the fangled electronic mail (I'm still using Thunderbird) and quick terminal edits / terminal Git commits (nano loads up way faster than even the Emacs client, and therefore wins) but for everything else it's the tool of choice. It's *way* better than VSCode (especially with how AI-riddled it is now) and unless I need to edit a Word Doc it's perfectly featured once configured and 100% customisable to my liking.