This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal Doom Emacs configuration ($DOOMDIR). Doom is installed separately at ~/.config/emacs/; this repo is the private config layer.
doom sync # after changing init.el or packages.el
doom sync -u # sync + update packages
doom doctor # diagnose issues
doom env # regenerate envvar cache (cli.el filters env vars)
doom build # recompile packagesDoom CLI lives at ~/.config/emacs/bin/doom. The flake.nix devshell puts it on $PATH.
init.el—doom!block declaring enabled modules and flags. Conditional module loading via:cond/:iffor OS-specific modules.packages.el— Additional packages beyond what modules provide. Pinned recipes from GitHub.config.el— Main config. Sets theme, font, keybindings, then conditionally loads+*.elfeature files at the bottom.cli.el— Customizesdoom envCLI command (filters transient env vars likeKITTY_*,STARSHIP_*,DIRENV_WATCHES).
- All
.elfiles uselexical-binding: t - Feature files prefixed with
+(Doom convention) - Autoload functions prefixed with
+module-name/(e.g.+nix/switch-to-repl-buffer) - Keybindings use
map!macro; localleader bindings in language files after!for deferred config,use-package!for additional packages- Lisp modes share structural editing setup via
my/turn-on-lisp-modes(evil-cleverparens + smartparens strict) - Projects clone to
~/src/{host}/{owner}/{repo}(projectile search path:("~/src" . 3)) - Nix formatter: alejandra
- Format-on-save enabled globally, disabled for select modes (
+format-on-save-disabled-modes)
- The Doom Emacs repository should be treated as authoratative source for the design patterns and best practices.
- The local installation of Doom Emacs (
~/.config/emacs) should be used for obtaining additional context, rather than fetching from the Doom Emacs main branch. - Built-in modules are documented
~/.config/emacs/docs/modules.org - Adopt the same organizational patterns (namespaces). Have justification for using or not using Doom Emacs namespaces.