#Bedrock
Stepping stones to a better Emacs experience
#Synopsis
An extremely minimal Emacs starter kit uses just one external package by default, and only GNU-ELPA packages on an opt-in basis. Intended to be copied once and then modified as the user grows in knowledge and power.
- Project homepage
- Issue Tracker
- Mirrors:
- GitHub (just a place holder)
NOTICE: Requires Emacs 29.1 or better.
#Description
This is a minimal Emacs starter kit. Like, really minimal. Here’s the short of the philosophy:
-
Focus on using default, built-in Emacs behavior
Yes, we all love our fancy third-party packages. This starter kit focuses on what is built-in to Emacs. Why? Because there are too many good packages and picking and choosing the best is a joy we leave to the user.
-
Explain every customization and encourage modification
The goal of this starter kit is to encourage end-user adaptation and growth. All of the
.el
files should be legible and, more importantly, justify in plain English the rationale for adding the configuration they do. -
No magic
We keep things crushingly simple here. That means no fancy loadable modules or whatnot. Everything is as straight-forward as can be.
There are two files of interest: early-init.el
and init.el
.
#early-init.el
The early init file uses strictly built-in Emacs features to do the following:
- Improve startup time
- Set up initial frame behavior
#init.el
This is where the meat of all configuration goes. This file:
- Add minor UI niceties (e.g. clock in the tab-bar, full-screen by default, etc.)
- Set the default theme (
modus-vivendi
) - Turn on discovery aids (e.g.
help-quick
, which-key, etc.)
#Trying this out without committing too hard
Emacs 29.1 added the handy --init-directory
flag. This means that you can run emacs --init-directory path/to/emacs-bedrock/
and all the customizations and package installations will be isolated to the project directory. Emacs should only add files that are already in the .gitignore
.
Once you’re happy, you should just copy init.el
and early-init.el
to ~/.emacs.d/
.
#Mixins
For those who’d like a little more help in tailoring Emacs for specific purposes, the mixins/
folder contains a few files that can be included via (load-file "mixin/mixin-name.el")
from the init.el
file, or copied wholesale or in part into init.el
directly.
NOTE: If you copy the mixin/
directory to ~/.emacs.d/
or wherever you’re setting user-emacs-directory
, then simply incrementing the appropriate lines in the init.el
file should work.
Mixins:
- Base UI Enhancements
- Development tools
- Org-mode
- Vim refugee
- Email (TODO: mu4e, EBDB)
- Researcher (TODO: denote)
#mixins/base.el
Packages this mixin adds:
Along with a few ancillary packages that enhance the above.
These are some of the best UI enhancements that Emacs has to offer. Vertico and Consult make common operations like searching files, switching buffers, etc. a breeze. Corfu enhances the “completion at point” (aka “tab-to-complete”) to show a little popup window like what you’d be used to in e.g. VS Code.
Avy is the fastest way to move around in a buffer, and it can do a lot.^1 Embark is kind of like a right-click context menu, but entirely keyboard driven.
#mixins/dev.el
Packages this mixin adds:
- magit
- Markdown, YAML, and JSON modes
Magit is the