These are my emacs configuration files. I use them with MacOS and a custom build script. I am currently using Emacs 29, and that is what I recommend for use with this config.
You are welcome to use any part of this configuration as you please, but the
config really only makes sense if you look at Lambda-Emacs, which is the
framework on which this config is built. In that context, this configuration
exists in the lambda-user
directory, as part of the user-created configuration.
I use Emacs primarily for all my academic work in the humanities (for discussion of my view of text editors see here) and the style of configuration tends in that direction (rather than opposed to, e.g., a programming language emphasis). I’ve tried to provide enough commentary on the configuration so that it might be useful to those new to emacs or text-editors generally.
One important thing to note is that the configuration uses modal keybindings—specifically meow. I used vim (or neovim) prior to emacs and I think modal bindings are great. If you like vim bindings but don’t tend to want to think about configuring emacs, I strongly recommend spacemacs or doom-emacs as a way of managing your configuration. For a more traditional emacs feel there are also the configurations of Purcell, Batsov (prelude), Zhang (Centaur Emacs), and many others. For a minimally sane setup you might also look at some sensible defaults. My configuration is influenced by Nicolas Rougier’s work on elegant-emacs and nano-emacs; see also the bmacs configuration of Bryan Gilbert (see also his literate starter kit) and Karl Voit’s config. Some other good emacs starter kits to look at include John Kitchen’s scimax and Kieran Healy’s social sciences starter kit.
The advantage of meow, as I see it, is that it allows for broadly vim-like modal editing without all the overhead of evil, or the tendency to override (often in a somewhat sloppy way) vanilla-emacs bindings. I’ve tried to make the current config “slimmer” than it has been in the past, in the sense of relying, where possible, on built-in features of emacs (or on small packages that leverage built-in emacs functions). For some useful tips on using some potentially neglected built-in packages see here and here.
My config is based on a series of “modules” loaded in the config.el file. Please see Lambda-Emacs for the init file and the various config “helper” functions I use to search for things and for easy navigation. While many like to use a literate org-file for organizing their config I have reasons for preferring things in separate elisp files. The modules are organized thematically rather than package by package (e.g. the writing module contains the config for spelling and markdown mode). Note that while I have an early-init file for use with emacs 27+, the configuration should work with emacs 26+ on MacOS (though I haven’t tested this in awhile), with the latest release being best.
Some highlights of this emacs setup include:
- Short start up time – emacs-init-time < 1 sec (though this may vary with your system)
- Modal editing with meow
- Comprehensive keybindings using bind-key and meow, with spacebar as my leader key
- Sensible defaults
- Dired with sensible colors, settings, and useful extensions
- Completion with Vertico and related packages
- My own Lambda-themes, which has four distinct light and dark variants
- An attractive custom status-line – Lambda-line
- Extensive MacOS integration
- Single frame, tab-based, project workflow leveraging project.el and tab-bar (both built-in) with buffer-isolated workspaces
- A configurable splash page
- A writing-centric configuration with great citation support, markdown, pandoc, dedicated functions for notes, and org-mode
For more information please take a look at the individual configuration files in both this config, and in Lambda Emacs. Please note that I’m by no means a competent programmer, so I’m sure there are better ways of implementing many elements of this config. Suggestions are welcome!
These screenshots also feature Lambda-line and Lambda-themes.