diff options
| author | Craig Jennings <c@cjennings.net> | 2026-04-20 18:34:03 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-04-20 18:37:20 -0500 |
| commit | b9f4d440ca7c04bc0f3b561a2e95d08e8eac49b9 (patch) | |
| tree | f75a1c7069ab7c7cd01404bc52f66abb9a7af88e /README.org | |
| parent | e0488054b2b83f3e989aefb5ccb01e942681a789 (diff) | |
| download | dotemacs-b9f4d440ca7c04bc0f3b561a2e95d08e8eac49b9.tar.gz dotemacs-b9f4d440ca7c04bc0f3b561a2e95d08e8eac49b9.zip | |
docs: add README.org
Diffstat (limited to 'README.org')
| -rw-r--r-- | README.org | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/README.org b/README.org new file mode 100644 index 00000000..9cb8ab4f --- /dev/null +++ b/README.org @@ -0,0 +1,89 @@ +#+TITLE: Craig's Emacs Configuration +#+AUTHOR: Craig Jennings +#+OPTIONS: toc:2 + +Personal Emacs configuration. Pure Elisp, modular, no framework (not +Doom, not Spacemacs). Used daily for real work — this is a lived-in +config, not a demo. + +Still in active development; the GPTel integration and its tool +implementations in particular are a work in progress. + +* Status + +Personal. Published in case bits are useful to others, but not intended +as a distribution or starter kit. Conventions and keybindings reflect +my habits. Feel free to read, borrow, or steal; no support promised. + +* Requirements + +- Emacs 29 or newer (uses ~lexical-binding~, ~use-package~, native comp) +- Linux / macOS / FreeBSD / Windows — the config checks host via + =host-environment.el= and degrades where platform features are missing +- Several modules shell out to external tools (e.g. =ffmpeg=, + =mu4e=, =pdftools=); those modules fail gracefully when the tool + is absent + +* Layout + +#+begin_example +. +├── early-init.el startup perf, package system, local repos +├── init.el module loader (one require per feature) +├── modules/ feature modules — one domain per file (~100 files) +├── tests/ ERT tests — test-<module>*.el, testutil-*.el +├── assets/ data files checked into git +├── custom/ user customizations and overrides +├── snippets/ yasnippet templates +├── themes/ local themes +├── scripts/ helper shell scripts (elpa mirror, setup, etc.) +├── gptel-tools/ GPTel tool implementations for LLM access +├── org-roam-templates/ capture templates for org-roam +├── githooks/ optional git hooks (pre-commit, etc.) +└── Makefile test / lint / validate / profile targets +#+end_example + +=modules/= is organized by domain: ~org-*~, ~prog-*~, ~custom-*~, +~ui-*~, and standalone feature files (e.g. ~calendar-sync.el~, +~transcription-config.el~, ~reconcile-open-repos.el~). + +* Features + +- *Local package repository* (=.localrepo/=) — last-known-good package + versions checked in for fully offline reinstalls. Highest priority + in the archive list, so online repos are additive, not required. +- *ELPA mirror support* — optional script (=scripts/create-elpa-mirror.sh=) + clones GNU / NonGNU / MELPA / MELPA-stable locally (~1.9 GB) for + portability behind firewalls. +- *Google Calendar sync* (=modules/calendar-sync.el=) — pure-Elisp + =.ics= parser, one-way sync to org-mode, no external dependencies. +- *Audio transcription* (=modules/transcription-config.el=) — pluggable + backends (OpenAI, AssemblyAI, local) via descriptor alist. +- *Repo reconcile* (=modules/reconcile-open-repos.el=) — walks + project directories, surfaces dirty/unpushed repos for review. +- *Mu4e + org-msg + org-contacts* — integrated mail workflow. +- *Reveal.js and ox-hugo* — slide decks and blog publishing from org. +- *GPTel tools* — buffer / filesystem tools exposed to LLM chats + (work in progress). +- *Custom keymap* under =C-;= prefix for personal commands. + +* Development + +Makefile targets: + +#+begin_src bash +make # Show all targets +make test # Run all ERT tests +make test-file FILE=tests/test-foo.el # One test file +make test-name TEST=pattern # Match by test name +make validate-parens # Check for unbalanced parens in modules +make validate-modules # Load all modules to verify they compile +make compile # Byte-compile modules +make lint # checkdoc + package-lint + elisp-lint +make profile # Profile Emacs startup +make clean # Remove .elc and test artifacts +#+end_src + +Coverage is substantial but not uniform — critical utilities +(calendar-sync, transcription, reconcile, custom-* helpers) have +thorough test suites; some config modules are smoke-tested only. |
