So, last night I managed to nerd-snipe myself. I was going to go do some writing, and I was pretty happy with how my Emacs setup was looking from a visual POV. So, for some reason, I decided to go look at a forum where people shared their pretty Emacs screenshots, and I found one using “Elegant Emacs”.
It’s very pretty! It does things with the modeline and minibuffer that I didn’t actually think were possible. So, I thought, how hard would it be to back up my Spacemacs config and try it out? Hahahahah.
I have been using Emacs since… 1992 or 1993? The first version I used didn’t have a GUI; it was TUI only, and there was a slightly hacky GUI wrapper on SunOS. So this may begin to give you a little perspective – I have been managing an Emacs configuration for quite some time.
For the first ten or fifteen years (!), I basically just accumulated things in my .emacs file (.emacs.d/init.el was not a thing yet). With no version control, because it was the ’90s. In the early 2000s, I put it under version control (probably), and divided it out into separate ‘init’-style config files under .emacs.d. Probably around this time, I started using ‘customize’ for things. Then, probably around 2007, there was a craze for using org-mode to make your emacs init file into a literate program, and I did that, still keeping the init-style structure. It still had, at this point, essential continuity with my original .emacs.
Finally, at some point, after Emacs startup kits and Spacemacs had been a thing for a few years, probably around 2014, I started wondering why I bothered hand-coding my Emacs configuration and maintaining it, and declared .emacs bankruptcy, and switched to an absolutely out-of-the-box Spacemacs, except for keeping default Emacs keybindings instead of Evil (vim emulation). The really nice thing about switching to Spacemacs was that it is a batteries-included experience. It was really nice to be able to open a C# file, and have Emacs simply ask if I wanted to download and enable C# support, including completion with OmniSharp, rather than having to set all of that up manually. I actually do still recommend Spacemacs for new Emacs users, mainly for that reason.
So I brought up an Emacs with just “Elegant Emacs” configured, and it was gorgeous! I love how the minibuffer is just separated from the buffer with a thin line, rather than the modeline, and just the essential modeline information is moved to a header. I liked it so much, I started up a minimal configuration, incorporating Elegant Emacs, and using ‘use-package’ to pull in and configure the packages I needed. Except instead of ‘use-package’, I used ‘leaf’, because it’s newer, or was easier for me to install, or something.
When I had something that was basically working for what I’m doing lately (writing gemtext, coding Common Lisp), I started noticing things that I wasn't happy with about Elegant Emacs. Mainly, that the active window was not really distinguished in any way when you have multiple window splits open, but also that although the default theme was very nice, it was also deeply entangled with the modeline and header code, to the point where you couldn't use familiar themes. So I did decide to give up on Elegant Emacs, while keeping a few things from it, and going forward with the simple configuration that I had started.
Did I mention that I started all this after getting my youngest child to sleep, playing a few games of Dungeon Crawl Stone Soup, and doing dishes? Well, I did. So by my bedtime (10, and I am very crabby and non-functional if I’m not in bed on time), I had a functional, but basic configuration set up, and my old ‘customize’ settings copied over, so that I would keep my org-mode preferences.
Except that when I changed something in ‘customize’, none of my changes were being saved to my new ‘custom.el’. I basically banged my head against this (while also playing around with other config stuff) until 11:30, when I realized that it wasn't saving my custom options because there was an error in the init file – apparently, ‘leaf’ has not been updated to handle a change in Emacs 28 (I use Emacs 28 pre-release to get native elisp compilation), and even though I was starting Emacs with ‘--debug-init’, the error wasn't putting me into the debugger, but just getting noted in *Messages*. Upon realizing that, I went to sleep, way past my bedtime, knowing that I needed to get up on time to work on youngest’s birthday party…
I ended up not being as tired as I expected! And I replaced the calls to ‘leaf’ with ‘use-package’, and got everything working without too much *more* trouble. I think I am going to stay with this config, at least for a while, or until I start running into trouble.
Now I just need to get my org-mode and mu4e settings re-enabled…