Doom Emacs from scratch

A week ago I decided to cancel Doom Emacs and go back to building Emacs from Scratch, and once again I was reminded what a terrible idea that is.

Seriously, stock Emacs, even with a leg up from Nano Emacs, gets so many things “wrong” that I could spend the rest of my life fixing things and still wanting more. I thought building from scratch would help me avoid Configuration Fatigue. Wow, was I wrong.

So, back to Doom. I started from scratch with the usual…

git clone --depth 1 ~/.emacs.d
~/.emacs.d/bin/doom install

Then I edited init.el and enabled just a few non-stock things. “Zen” mode, org-journal, and pandoc-mode. Otherwise, it’s right out of the box.

I copied the gotta-haves from my original config.el. Most of these are around file paths, Org mode, and LaTeX. Plus a few of my favorite key bindings. Otherwise, I left it alone. So far.

Doom Emacs is simply too good to pass up. It handles all of the little behavioral and visual tweaks that would otherwise take forever to learn about and modify on my own. Half of the things it does for me I just expect to be part of Emacs, and am surprised when I find they’re not.

I’m still using the default Doom theme, which isn’t my favorite, but I’m trying to resist farting around with that for at least a couple of days while I get settled back in.


  1. Doom Emacs didn’t exist back when I was giving Emacs a shot but all of the good things that I’ve heard about it have made me interested in checking it out. I tried out Spacemacs a long time ago and I remember liking it but Emacs still felt too daunting. It seems more like an entire operating system that happens to include a text editor.

  2. Yeah, that darn learning curve can make Emacs pretty daunting. I’m not sure if it’s better to start with a framework like Doom or to start from scratch and build your own config. I think the former got me there faster. I used Spacemacs first, but Doom was faster and made more sense to me.

Leave a Comment

Your email address will not be published. Required fields are marked *