diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-24 16:28:07 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-24 16:28:07 -0500 |
| commit | e1789025131b048049777542a91fb7eb55195ce5 (patch) | |
| tree | f6b795035436a20cc234c2f32555f9b43c4a657b | |
| parent | 67d8040ad19461cf2a393af95268f92b784d7ece (diff) | |
| download | dotemacs-e1789025131b048049777542a91fb7eb55195ce5.tar.gz dotemacs-e1789025131b048049777542a91fb7eb55195ce5.zip | |
docs(load-graph): classify UI and core-UX modules
Fourth classification batch: the modules that shape the first interactive frame — ui-config, ui-theme, ui-navigation, font-config, selection-framework, modeline-config, mousetrap-mode, popper-config, dashboard-config, nerd-icons-config. I annotated each header, added a Batch 4 table to the inventory, and extended the validation allowlist. 33 of 102 modules are now classified.
These mostly stay eager: each has a real first-frame reason (theme, font, modeline, completion stack, landing page). No new hidden dependencies. popper-config carries the spec's open question about its enabled/disabled state, noted for the deferral phase.
| -rw-r--r-- | docs/design/module-inventory.org | 34 | ||||
| -rw-r--r-- | modules/dashboard-config.el | 11 | ||||
| -rw-r--r-- | modules/font-config.el | 11 | ||||
| -rw-r--r-- | modules/modeline-config.el | 10 | ||||
| -rw-r--r-- | modules/mousetrap-mode.el | 10 | ||||
| -rw-r--r-- | modules/nerd-icons-config.el | 9 | ||||
| -rw-r--r-- | modules/popper-config.el | 10 | ||||
| -rw-r--r-- | modules/selection-framework.el | 10 | ||||
| -rw-r--r-- | modules/ui-config.el | 11 | ||||
| -rw-r--r-- | modules/ui-navigation.el | 12 | ||||
| -rw-r--r-- | modules/ui-theme.el | 11 | ||||
| -rw-r--r-- | tests/test-init-module-headers.el | 13 |
12 files changed, 133 insertions, 19 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org index f5a5294a..9a6a147f 100644 --- a/docs/design/module-inventory.org +++ b/docs/design/module-inventory.org @@ -26,7 +26,8 @@ This inventory is independent from the helper inventory owned by - Batch 1 (Foundation, Layer 1): classified. 7 modules. - Batch 2 (Text/editing command modules, Layer 2): classified. 9 modules. - Batch 3 (Core libraries and command modules): classified. 7 modules. -- 23 of 102 modules classified. +- Batch 4 (UI / core-UX modules, Layer 2): classified. 10 modules. +- 33 of 102 modules classified. - No load-order changes have been made; =init.el= keeps its current eager order. * Legend @@ -98,6 +99,25 @@ eager side-effect owners. | =text-config= | 2 | C/P | eager | eager | none | 3 add-hook, package config | yes | | =undead-buffers= | 2 | C | eager | eager | none | 3 global keys (kill-buffer remap) | yes | +** Batch 4 — UI / core-UX modules (Layer 2) + +Modules that shape the first interactive frame: theme, font, modeline, window +navigation, completion stack, and landing page. Most have a real first-frame +eager reason and stay eager. + +| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load | +|--------+-------+-----+---------+--------+------------------+------------------------+-------------| +| =ui-config= | 2 | C/S | eager | eager | user-constants | UI defaults, post-command hook, display-buffer-alist | yes | +| =ui-theme= | 2 | C | eager | eager | none | theme load path, theme key | yes | +| =ui-navigation= | 2 | C/P | eager | eager | none | nav keymap, 5 global keys, package config | yes | +| =font-config= | 2 | C/P/S | eager | eager | host-environment, keybindings | 5 global font keys, font-install checks | yes | +| =selection-framework= | 2 | C/P | eager | eager | none | 1 global key, 15 use-package forms | yes | +| =modeline-config= | 2 | C/S | eager | eager | user-constants | 2 add-hook (VC cache) | yes | +| =mousetrap-mode= | 2 | C | eager | eager | cl-lib | 3 add-hook, 1 add-to-list, 1 global key | yes | +| =popper-config= | 2 | C/P | eager | eager | none | package config (enabled-state open question) | yes | +| =dashboard-config= | 2 | C/S | eager | eager | none | builds/opens dashboard buffer at startup | conditional | +| =nerd-icons-config= | 2 | C/P | eager | eager | none | package config | yes | + * Hidden dependencies found Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here, @@ -120,7 +140,7 @@ not fixed here. * Pending classification -The remaining 79 modules required by =init.el=, awaiting per-module inspection. +The remaining 69 modules required by =init.el=, awaiting per-module inspection. Each batch reads these against their source and moves them into [[*Classified modules][Classified modules]] with a load-graph header. Suggested batch order follows the spec: text/editing command modules, then UI, then programming, then @@ -134,7 +154,6 @@ Org, then optional integrations. - [ ] chrono-tools - [ ] coverage-core - [ ] coverage-elisp -- [ ] dashboard-config - [ ] dev-fkeys - [ ] diff-config - [ ] dirvish-config @@ -145,7 +164,6 @@ Org, then optional integrations. - [ ] eww-config - [ ] flycheck-config - [ ] flyspell-and-abbrev -- [ ] font-config - [ ] games-config - [ ] gloss-config - [ ] help-config @@ -159,10 +177,7 @@ Org, then optional integrations. - [ ] lorem-optimum - [ ] mail-config - [ ] markdown-config -- [ ] modeline-config -- [ ] mousetrap-mode - [ ] music-config -- [ ] nerd-icons-config - [ ] org-agenda-config - [ ] org-babel-config - [ ] org-capture-config @@ -176,7 +191,6 @@ Org, then optional integrations. - [ ] org-roam-config - [ ] org-webclipper - [ ] pdf-config -- [ ] popper-config - [ ] prog-c - [ ] prog-general - [ ] prog-go @@ -190,16 +204,12 @@ Org, then optional integrations. - [ ] quick-video-capture - [ ] reconcile-open-repos - [ ] restclient-config -- [ ] selection-framework - [ ] slack-config - [ ] system-commands - [ ] telega-config - [ ] test-runner - [ ] tramp-config - [ ] transcription-config -- [ ] ui-config -- [ ] ui-navigation -- [ ] ui-theme - [ ] vc-config - [ ] video-audio-recording - [ ] vterm-config diff --git a/modules/dashboard-config.el b/modules/dashboard-config.el index 0ee9200b..4602cc15 100644 --- a/modules/dashboard-config.el +++ b/modules/dashboard-config.el @@ -2,7 +2,16 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/S. +;; Load shape: eager. +;; Eager reason: builds the startup dashboard landing page. +;; Top-level side effects: initializes and opens the dashboard buffer at startup +;; via use-package. +;; Runtime requires: none. +;; Direct test load: conditional (builds the dashboard buffer on load). +;; ;; Note: ;; Nerd-Icons Cheat Sheet: https://www.nerdfonts.com/cheat-sheet diff --git a/modules/font-config.el b/modules/font-config.el index 811763f7..d4e2190d 100644 --- a/modules/font-config.el +++ b/modules/font-config.el @@ -2,7 +2,16 @@ ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/P/S. +;; Load shape: eager. +;; Eager reason: font setup for the first frame, plus font keybindings. +;; Top-level side effects: binds five global font keys, runs font-installation +;; checks, configures packages via use-package. +;; Runtime requires: host-environment, keybindings. +;; Direct test load: yes. +;; ;; This module provides font configuration, including: ;; ;; 1. Font Management: diff --git a/modules/modeline-config.el b/modules/modeline-config.el index 5afe226e..0e6e5d0f 100644 --- a/modules/modeline-config.el +++ b/modules/modeline-config.el @@ -2,7 +2,15 @@ ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/S. +;; Load shape: eager. +;; Eager reason: the modeline is visible in the first frame. +;; Top-level side effects: two add-hook (VC cache lifecycle). +;; Runtime requires: user-constants. +;; Direct test load: yes. +;; ;; Simple, minimal modeline using only built-in Emacs functionality. ;; No external packages = no buffer issues, no native-comp errors. diff --git a/modules/mousetrap-mode.el b/modules/mousetrap-mode.el index d7f422de..5da66780 100644 --- a/modules/mousetrap-mode.el +++ b/modules/mousetrap-mode.el @@ -1,6 +1,16 @@ ;;; mousetrap-mode.el --- -*- coding: utf-8; lexical-binding: t; -*- ;; ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C. +;; Load shape: eager. +;; Eager reason: a global minor mode that prevents accidental mouse edits, +;; wanted from the first session. +;; Top-level side effects: three add-hook, one add-to-list, one global key. +;; Runtime requires: cl-lib. +;; Direct test load: yes. +;; ;; Mouse Trap Mode is a minor mode for Emacs that disables most mouse and ;; trackpad events to prevent accidental text modifications. Hitting the ;; trackpad and finding my text is being inserted in an unintended place is diff --git a/modules/nerd-icons-config.el b/modules/nerd-icons-config.el index d314be80..d3d55b86 100644 --- a/modules/nerd-icons-config.el +++ b/modules/nerd-icons-config.el @@ -3,6 +3,15 @@ ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: provides the nerd-icons fonts that dashboard, modeline, and +;; completion render in the first frame. +;; Top-level side effects: package configuration via use-package. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; Single home for nerd-icons: ;; - the package itself ;; - completion integration (`nerd-icons-completion') diff --git a/modules/popper-config.el b/modules/popper-config.el index 35780eb2..c99a8323 100644 --- a/modules/popper-config.el +++ b/modules/popper-config.el @@ -3,6 +3,16 @@ ;; ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: configures popper so popup buffers (Messages, help, compilation) +;; appear as managed popups. The enabled/disabled state is an open question in +;; the spec; revisit during deferral. +;; Top-level side effects: package configuration via use-package. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; Configuration for popper.el, which manages secondary buffers as popup windows. ;; Popup buffers (like *Messages*, help, and compilation output) are displayed in ;; a dedicated bottom window and can be easily toggled, cycled, or promoted to diff --git a/modules/selection-framework.el b/modules/selection-framework.el index 15ef0a94..11687337 100644 --- a/modules/selection-framework.el +++ b/modules/selection-framework.el @@ -3,6 +3,16 @@ ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: the completion/selection stack (vertico and friends) shapes +;; every interactive prompt from the first session. +;; Top-level side effects: one global key binding, package configuration via +;; fifteen use-package forms. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; This module configures the completion and selection framework using: ;; - Vertico: Vertical completion UI ;; - Marginalia: Rich annotations in minibuffer diff --git a/modules/ui-config.el b/modules/ui-config.el index 39b86182..a4c18421 100644 --- a/modules/ui-config.el +++ b/modules/ui-config.el @@ -2,7 +2,16 @@ ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/S. +;; Load shape: eager. +;; Eager reason: UI preferences that should be visible in the first frame. +;; Top-level side effects: UI defaults, a post-command hook, and +;; display-buffer-alist entries. +;; Runtime requires: user-constants. +;; Direct test load: yes. +;; ;; This file centralizes user interface preferences, including: ;; • Frame and window behavior diff --git a/modules/ui-navigation.el b/modules/ui-navigation.el index 09100799..f1324c16 100644 --- a/modules/ui-navigation.el +++ b/modules/ui-navigation.el @@ -2,7 +2,17 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C/P. +;; Load shape: eager. +;; Eager reason: window-navigation keybindings and winner/buffer-move setup for +;; the first session. +;; Top-level side effects: defines a navigation keymap, binds five global keys, +;; configures packages via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Window Navigation ;; This section handles situations where we're navigating or arranging windows diff --git a/modules/ui-theme.el b/modules/ui-theme.el index bcc58575..2df37000 100644 --- a/modules/ui-theme.el +++ b/modules/ui-theme.el @@ -2,7 +2,16 @@ ;; author: Craig Jennings <c@cjennings.net> ;; ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: C. +;; Load shape: eager. +;; Eager reason: theme persistence and the theme keybinding; the theme itself is +;; loaded by an explicit call in init.el. +;; Top-level side effects: registers the custom theme load path, binds a theme key. +;; Runtime requires: none. +;; Direct test load: yes. +;; ;; This module provides a theme management system with persistence across ;; Emacs sessions. ;; diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el index f8085fc7..df3df728 100644 --- a/tests/test-init-module-headers.el +++ b/tests/test-init-module-headers.el @@ -46,7 +46,18 @@ "keyboard-macros" "system-utils" "text-config" - "undead-buffers") + "undead-buffers" + ;; Batch 4 — UI / core-UX modules (Layer 2) + "ui-config" + "ui-theme" + "ui-navigation" + "font-config" + "selection-framework" + "modeline-config" + "mousetrap-mode" + "popper-config" + "dashboard-config" + "nerd-icons-config") "Modules annotated with the load-graph header contract. Grows one batch at a time. Parity with the init.el require set is the Phase 1 exit criterion.") |
