Harry's Doom Emacs Config
About
This is a literate Doom Emacs configuration that tangles into the various configuration files that Doom expects. The configuration is split into modular files for better organization:
| Module | Purpose |
|---|---|
| ui.org | Theme, fonts, modeline, and visual settings |
| editor.org | Evil mode, projectile, and completion settings |
| shell.org | Eshell and terminal emulator configuration |
| programming.org | Language/tooling settings (SQL, PGmacs, JS/TS, Rust, Python, Go, PlantUML) |
| writing.org | Org mode, Org Roam, Markdown, and LaTeX export |
| tools.org | Diff-mode bindings and Mise tool version management |
| workarounds.org | MacOS-specific fixes and quirks |
First, enable lexical binding for better performance:
;;; -*- lexical-binding: t; -*-
Build Information
Running on Emacs 30.1 with native compilation on Apple Silicon:
(emacs-version)
Configuration
User Identification
Set the name and email address used by Emacs for things like email composition and source control metadata.
(setq user-full-name "Harry Tucker" user-mail-address "tucker.harry@outlook.com")
Load Modules
Load configuration from separate module files. Each module is a literate Org
file that tangles into elisp, which org-babel-load-file handles automatically.
(org-babel-load-file (expand-file-name "modules/ui.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/editor.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/shell.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/programming.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/writing.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/tools.org" doom-user-dir)) (org-babel-load-file (expand-file-name "modules/workarounds.org" doom-user-dir))
Packages
Additional packages from MELPA that aren't exposed through Doom's init.el,
imported using the package! macro. Organized by category.
;; -*- no-byte-compile: t; -*- ;;; .doom.d/packages.el ;; Testing - BDD support (package! feature-mode) ;; Python - docstring editing and syntax highlighting (package! python-docstring) ;; Protobuf/gRPC - .proto file support (package! protobuf-mode) ;; Caddy - Caddyfile syntax support (package! caddyfile-mode) ;; Org Mode extensions (unpin! org-roam) ; use latest org-roam (package! org-roam-ui) ; graph visualization web UI (package! engrave-faces) ; better syntax highlighting in LaTeX exports ;; PostgreSQL - database browser and client library (package! pg :recipe (:host github :repo "emarsden/pg-el")) (package! pgmacs :recipe (:host github :repo "emarsden/pgmacs")) ;; Mise - tool version manager integration (package! mise) ;; Utilities (package! command-log-mode) ; display keystrokes in a buffer (package! prism) ; scope-based syntax highlighting (package! flyover) ; modern flycheck display (package! eat) ; terminal emulator for eshell