Emacs config: big or small

Published 2024-07-30

tag(s): #emacs #replies

On the heels of a reddit thread "Who else is also trying a minimal Emacs config?" [1] (where the author mentions they "still have over 500 lines" even after dropping packages), jcs over at Irreal [2] made a post and considers...

[...]that on the contrary a large configuration is a sign of users who have—probably over time—made the effort to optimize Emacs for their particular workflow. That a large configuration is, in fact, a sign of a serious—and possibly master—Emacs user.
[...]
On reflection, I don’t understand what those desiring a minimal conjuration are seeking or why they’re seeking it.

I sometimes comment on the blog, but given that I now have my own site :) why not answer over here and document my current thoughts on the issue at (some) length.

How it started, and how it is going

Here is my own journey with configuration and dependencies, in three broad stages:

Beginner

After learning a bit about Emacs and how to configure it, add just enough packages to make it behave like Visual Studio (not Code, which was very young in 2016). And happily carry on.

Intermediate

Discover that Emacs can do this and that and that other thing (insert kitchen sink icon here). And add support for all them via more and more packages.
Copy more configuration, and tailor it to my needs. Be annoyed at one or the other default, and change them. Modify more and more keybindings, remap things.
Every two weeks or so, updating packages would trigger a dependency problem, or I would find that one of these snippets that I added conflicted with a package I was using, and had to make them play nice.

A bit more than intermediate

I wouldn't dare call myself an advanced Emacs user, and even that definition can mean a lot of different things (more on this later).
But as I progressed in my journey, I started using more and more the built-in manual, which in turn made me discover that Emacs already included X package that covered a feature for which I was using a 3rd party.
Sometimes, after trying both alternatives, I still picked the external package. But many other times, I found out I could drop the dependency and obtain an identical (or, very similar) feature set.

Why I seek minimalism

One interesting side effect of using less external dependencies, is that for all the overlapping ways of doing things in Emacs, all the sub-systems and layers over layers of packages accumulated over SO MANY years...there's a surprising degree of internal consistency in how things work.

And that's what, for me, feels like (beginning to grasp) Emacs mastery, seeing that consistency and the internal Emacs patterns emerging, once you accept it "as is". A lot of the defaults I disliked and modified, extra bindings, etc. going away as I do things (one of) The Emacs Way(s).

Emacs mastery is very subjective

One could argue that someone achieves mastery when their config is less than 500 lines (mine is far from that, at 1700ish) and all their bindings are defaults.
Or the opposite, like jcs suggests, that each little line of the configuration is a breadcrumb that shows the length and depth of your journey.

At the end of the day, with a tool as broad as Emacs, used by software developers but also accountants, lawyers, scriptwriters, etc. it's hard to define what mastery is, as everyone's objective is so different.

Even among the developer ranks, we have a variety of visions of what we want our editor to be. It is a marvel that Emacs can fulfill all of them equally.

Main takeaway

At the end of the day, no matter which path you chose, this reply in the original reddit post hits the nail in the head:

I ain't droppin' a line, my whole identity is in that init file :)
- /u/mok000/

Footnotes
  1. https://www.reddit.com/r/emacs/comments/1e9l64h/who_else_is_also_trying_a_minimal_emacs_config/
  2. https://irreal.org/blog/?p=12335

Back to top

Back to homepage