diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-24 16:20:01 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-24 16:20:01 -0500 |
| commit | 1dfd02da826d61d528fe42c5bee3c5dbcf098c82 (patch) | |
| tree | 23a7038789459d5a0df2a3d948058b959581d44e | |
| parent | 09d51da39d01843011ab8e1206da5fe90de8d8f9 (diff) | |
| download | dotemacs-1dfd02da826d61d528fe42c5bee3c5dbcf098c82.tar.gz dotemacs-1dfd02da826d61d528fe42c5bee3c5dbcf098c82.zip | |
docs(load-graph): classify text/editing command modules
Second classification batch: the nine custom-* text/editing command helpers (case, comments, datetime, buffer-file, line-paragraph, misc, ordering, text-enclose, whitespace). I annotated each with the load-graph header contract and added a Batch 2 table to the inventory. They're all Layer 2, eager only to register a C-; submap at load, with no necessary eager reason, so all are Phase 3/4 deferral candidates.
The inventory records a second hidden dependency for Phase 2: custom-buffer-file guards its C-; b registration with (when (boundp 'cj/custom-keymap) ...) and declares the keymap only via eval-when-compile, so the binding silently drops when the module loads without keybindings.
| -rw-r--r-- | docs/design/module-inventory.org | 40 | ||||
| -rw-r--r-- | modules/custom-buffer-file.el | 13 | ||||
| -rw-r--r-- | modules/custom-case.el | 11 | ||||
| -rw-r--r-- | modules/custom-comments.el | 11 | ||||
| -rw-r--r-- | modules/custom-datetime.el | 11 | ||||
| -rw-r--r-- | modules/custom-line-paragraph.el | 11 | ||||
| -rw-r--r-- | modules/custom-misc.el | 10 | ||||
| -rw-r--r-- | modules/custom-ordering.el | 13 | ||||
| -rw-r--r-- | modules/custom-text-enclose.el | 12 | ||||
| -rw-r--r-- | modules/custom-whitespace.el | 12 |
10 files changed, 130 insertions, 14 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org index b1e2841e..f7657951 100644 --- a/docs/design/module-inventory.org +++ b/docs/design/module-inventory.org @@ -23,7 +23,9 @@ This inventory is independent from the helper inventory owned by * Status - Phase 1 (Inventory and Contracts), in progress. -- Batch 1 (Foundation, Layer 1): classified. 7 of 102 modules. +- Batch 1 (Foundation, Layer 1): classified. 7 modules. +- Batch 2 (Text/editing command modules, Layer 2): classified. 9 modules. +- 16 of 102 modules classified. - No load-order changes have been made; =init.el= keeps its current eager order. * Legend @@ -61,6 +63,25 @@ Every Batch 1 module stays eager: each satisfies a spec eager-reason condition (shared helpers, path constants, core Emacs behavior, or the global keymap owner). Reasons are recorded in each module's load-graph header. +** Batch 2 — Text/editing command modules (Layer 2) + +The =custom-*= text-command helpers. Each is eager only to register a =C-;= +submap (or direct bindings) at load; none has a necessary eager reason, so all +are deferral candidates for Phase 3 (registration API) and Phase 4 +(command/autoload). Target load shape is command-driven. + +| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load | +|--------+-------+-----+---------+--------+------------------+------------------------+-------------| +| =custom-case= | 2 | L/C | eager | command | keybindings | cj/case-map under C-; c; remaps capitalize-region | yes | +| =custom-comments= | 2 | L/C | eager | command | keybindings | cj/comment-map under C-; C | yes | +| =custom-datetime= | 2 | L/C | eager | command | keybindings | cj/datetime-map under C-; d | yes | +| =custom-buffer-file= | 2 | L/C | eager | command | external-open, mm-decode, system-lib | cj/copy-buffer-content-map, cj/buffer-and-file-map; C-; b registration boundp-guarded | conditional | +| =custom-line-paragraph= | 2 | L/C | eager | command | keybindings (expand-region on demand) | cj/line-and-paragraph-map under C-; l | yes | +| =custom-misc= | 2 | L/C | eager | command | keybindings | align-regexp advice; direct C-; bindings | yes | +| =custom-ordering= | 2 | L/C | eager | command | cl-lib, keybindings (org-config on demand) | cj/ordering-map under C-; o | yes | +| =custom-text-enclose= | 2 | L/C | eager | command | keybindings (change-inner on demand) | cj/enclose-map under C-; s | yes | +| =custom-whitespace= | 2 | L/C | eager | command | keybindings | cj/whitespace-map under C-; w | yes | + * Hidden dependencies found Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here, @@ -74,10 +95,16 @@ not fixed here. requires to plain runtime =require=. (Test =test-system-defaults-functions.el= was updated to require host-environment so the unit loads in isolation; the production fix is still pending.) +- =custom-buffer-file= registers its =C-; b= submap behind =(when (boundp + 'cj/custom-keymap) ...)= and declares =cj/custom-keymap= only via + =eval-when-compile=. Loaded standalone without keybindings, the =boundp= guard + is nil and the binding silently drops. That guard is the + "define-if-not-present" shim the spec warns against. Phase 2/3 fix: require + keybindings (or use the registration API once it exists) and drop the guard. * Pending classification -The remaining 95 modules required by =init.el=, awaiting per-module inspection. +The remaining 86 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 @@ -92,15 +119,6 @@ Org, then optional integrations. - [ ] chrono-tools - [ ] coverage-core - [ ] coverage-elisp -- [ ] custom-buffer-file -- [ ] custom-case -- [ ] custom-comments -- [ ] custom-datetime -- [ ] custom-line-paragraph -- [ ] custom-misc -- [ ] custom-ordering -- [ ] custom-text-enclose -- [ ] custom-whitespace - [ ] dashboard-config - [ ] dev-fkeys - [ ] diff-config diff --git a/modules/custom-buffer-file.el b/modules/custom-buffer-file.el index e3fdedf2..67191244 100644 --- a/modules/custom-buffer-file.el +++ b/modules/custom-buffer-file.el @@ -1,6 +1,19 @@ ;;; custom-buffer-file.el --- Custom Buffer and File Operations -*- coding: utf-8; lexical-binding: t; -*- ;; ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; b buffer/file submap at load. Currently eager +;; by init order; a deferral candidate for Phase 3/4. +;; Top-level side effects: defines cj/copy-buffer-content-map and +;; cj/buffer-and-file-map; conditionally registers the latter under C-; b. +;; Runtime requires: external-open, mm-decode, system-lib. keybindings is needed +;; for the C-; b registration but is declared only via eval-when-compile and +;; guarded by `boundp', so the binding silently drops standalone. Phase 2 fix. +;; Direct test load: conditional (C-; b registration skipped without keybindings). +;; ;; This module provides custom buffer and file operations including PostScript ;; printing capabilities. ;; diff --git a/modules/custom-case.el b/modules/custom-case.el index 3f7ebc4d..d8c60b55 100644 --- a/modules/custom-case.el +++ b/modules/custom-case.el @@ -2,6 +2,17 @@ ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; c case submap at load. Currently eager by +;; init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/case-map, registers it under C-; c, remaps +;; capitalize-region. +;; Runtime requires: keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; Utilities for changing text case. ;; - cj/title-case-region: Title-cases the active region, or the current line if ;; no region. Follows common English rules: major words capitalized; minor words diff --git a/modules/custom-comments.el b/modules/custom-comments.el index 7e8e1404..467e1fd7 100644 --- a/modules/custom-comments.el +++ b/modules/custom-comments.el @@ -1,6 +1,17 @@ ;;; custom-comments.el --- Custom Comment Operations -*- coding: utf-8; lexical-binding: t; -*- ;; ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; C comment submap at load. Currently eager by +;; init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/comment-map, registers it under C-; C. +;; Runtime requires: keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; This module provides custom comment formatting and manipulation utilities for code editing. ;; ;; Functions include: diff --git a/modules/custom-datetime.el b/modules/custom-datetime.el index 1c5f40f2..3db4d28f 100644 --- a/modules/custom-datetime.el +++ b/modules/custom-datetime.el @@ -1,6 +1,17 @@ ;;; custom-datetime.el --- -*- coding: utf-8; lexical-binding: t; -*- ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; d datetime submap at load. Currently eager by +;; init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/datetime-map, registers it under C-; d. +;; Runtime requires: keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; Utilities for inserting date/time stamps in multiple formats. ;; ;; Interactive commands: diff --git a/modules/custom-line-paragraph.el b/modules/custom-line-paragraph.el index 0eb1e2a5..8bbbeadb 100644 --- a/modules/custom-line-paragraph.el +++ b/modules/custom-line-paragraph.el @@ -3,6 +3,17 @@ ;; ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; l line/paragraph submap at load. Currently +;; eager by init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/line-and-paragraph-map, registers it under +;; C-; l. +;; Runtime requires: keybindings (expand-region on demand via declare-function). +;; Direct test load: yes (requires keybindings explicitly). +;; ;; This module provides the following line and paragraph manipulation utilities: ;; ;; - joining lines in a region or the current line with the previous one diff --git a/modules/custom-misc.el b/modules/custom-misc.el index b612e540..2ab5e779 100644 --- a/modules/custom-misc.el +++ b/modules/custom-misc.el @@ -2,6 +2,16 @@ ;;; Commentary: ;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; command bindings and an align-regexp advice +;; at load. Currently eager by init order; a deferral candidate for Phase 3/4. +;; Top-level side effects: advises align-regexp; binds several commands directly +;; under C-; (")", "f", "A", "SPC", "|", and others). +;; Runtime requires: keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; This module provides various utility functions for text manipulation, ;; formatting, and navigation. Features include: ;; - Jump between matching delimiters diff --git a/modules/custom-ordering.el b/modules/custom-ordering.el index ee2f2023..6536039e 100644 --- a/modules/custom-ordering.el +++ b/modules/custom-ordering.el @@ -1,7 +1,18 @@ ;;; custom-ordering.el --- -*- coding: utf-8; lexical-binding: t; -*- ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; o ordering submap at load. Currently eager by +;; init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/ordering-map, registers it under C-; o. +;; Runtime requires: cl-lib, keybindings (org-config on demand via +;; declare-function). +;; Direct test load: yes (requires keybindings explicitly). +;; ;; Text transformation and sorting utilities for reformatting data structures. ;; ;; Array/list formatting: diff --git a/modules/custom-text-enclose.el b/modules/custom-text-enclose.el index e23674ff..cbae2990 100644 --- a/modules/custom-text-enclose.el +++ b/modules/custom-text-enclose.el @@ -1,7 +1,17 @@ ;;; custom-text-enclose.el --- -*- coding: utf-8; lexical-binding: t; -*- ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; s enclose submap at load. Currently eager by +;; init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/enclose-map, registers it under C-; s. +;; Runtime requires: keybindings (change-inner on demand via declare-function). +;; Direct test load: yes (requires keybindings explicitly). +;; ;; Text enclosure utilities for wrapping and line manipulation. ;; ;; Wrapping functions: diff --git a/modules/custom-whitespace.el b/modules/custom-whitespace.el index 622ba5f4..19e2e020 100644 --- a/modules/custom-whitespace.el +++ b/modules/custom-whitespace.el @@ -1,7 +1,17 @@ ;;; custom-whitespace.el --- -*- coding: utf-8; lexical-binding: t; -*- ;;; Commentary: - +;; +;; Layer: 2 (Core UX). +;; Category: L/C. +;; Load shape: eager. +;; Eager reason: registers its C-; w whitespace submap at load. Currently eager +;; by init order; a deferral candidate for Phase 3/4 (command/autoload + +;; registration API). +;; Top-level side effects: defines cj/whitespace-map, registers it under C-; w. +;; Runtime requires: keybindings. +;; Direct test load: yes (requires keybindings explicitly). +;; ;; This module provides whitespace manipulation operations for cleaning and transforming whitespace in text. ;; Functions include: |
