aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-24 16:20:01 -0500
committerCraig Jennings <c@cjennings.net>2026-05-24 16:20:01 -0500
commit1dfd02da826d61d528fe42c5bee3c5dbcf098c82 (patch)
tree23a7038789459d5a0df2a3d948058b959581d44e
parent09d51da39d01843011ab8e1206da5fe90de8d8f9 (diff)
downloaddotemacs-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.org40
-rw-r--r--modules/custom-buffer-file.el13
-rw-r--r--modules/custom-case.el11
-rw-r--r--modules/custom-comments.el11
-rw-r--r--modules/custom-datetime.el11
-rw-r--r--modules/custom-line-paragraph.el11
-rw-r--r--modules/custom-misc.el10
-rw-r--r--modules/custom-ordering.el13
-rw-r--r--modules/custom-text-enclose.el12
-rw-r--r--modules/custom-whitespace.el12
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: