This is my personal GNU Emacs 31.1 configuration. It is small and modular. It is made for Rust (eglot + rust-analyzer + tree-sitter) and for Org-mode notes. It also borrows some good ideas from Neovim: telescope-style search, flash-style jumps, and surround-style editing.
The config is split into modules. Each module is one file in
modules/, and init.el loads them all. early-init.el sets up the
package sources and startup tuning. The first start is slow because
Emacs downloads the packages. Later starts are fast: heavy packages
load only when needed, and native compilation runs in the background.
This config is made for Arch Linux and needs GNU Emacs 31.1.
git clone <this-repo> ~/.config/emacs
cd ~/.config/emacs
./install-dependencies.shThen start Emacs. On the first start, Emacs installs the ELPA packages
by itself (use-package :ensure t).
install-dependencies.sh installs the system tools with pacman. If
you use another distro, install the same tools with your own package
manager. The script lists them all, with a comment for each one.
A few tools are not installed by the script:
rust-analyzerrustup component add rust-analyzermermaid-cli(optional)npm install -g @mermaid-js/mermaid-cli- Rust tree-sitter grammar
- compile it and put it in
~/.config/emacs/tree-sitter/
This README does not copy the config. The code is the doc.
- Read the module. Each file in
modules/is small and has comments. The file name tells you the topic:rust-config.el,org-config.el,ui-config.el, and so on. - Find a key. Look in the module that sets it. Inside Emacs, press
C-h bto list all keys, or wait for which-key to show them. - Check the load order. Read
init.el. It loads every module. - Check the reason. Read the comments next to the code. Design notes live there, not here.
So the rule is simple: trust the code, not a stale README. When you change the code, the doc changes with it.