diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-24 16:32:07 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-24 16:32:07 -0500 |
| commit | 219018602f817bffedbb3d157fd9267d21f97098 (patch) | |
| tree | f940ea51e3be586686fa456d790a581959e64d03 | |
| parent | 61dad3bd7b327eb0cf5bb3a6a0421a7055ed126b (diff) | |
| download | dotemacs-219018602f817bffedbb3d157fd9267d21f97098.tar.gz dotemacs-219018602f817bffedbb3d157fd9267d21f97098.zip | |
docs(load-graph): classify programming modules
Sixth classification batch: prog-general plus the language modules — prog-c, prog-go, prog-lisp, prog-python, prog-webdev, prog-json, prog-yaml, prog-shell, prog-training. I annotated each header, added a Batch 6 table to the inventory, and extended the validation allowlist. 52 of 102 modules are now classified.
prog-general owns the shared defaults and tree-sitter/LSP policy and stays eager. The language modules are eager only by init order and should load by major mode, so they're tagged Phase 6 deferral candidates. prog-shell's after-save executable hook is the one side effect worth scoping. No new hidden dependencies.
| -rw-r--r-- | docs/design/module-inventory.org | 34 | ||||
| -rw-r--r-- | modules/prog-c.el | 10 | ||||
| -rw-r--r-- | modules/prog-general.el | 10 | ||||
| -rw-r--r-- | modules/prog-go.el | 10 | ||||
| -rw-r--r-- | modules/prog-json.el | 10 | ||||
| -rw-r--r-- | modules/prog-lisp.el | 10 | ||||
| -rw-r--r-- | modules/prog-python.el | 11 | ||||
| -rw-r--r-- | modules/prog-shell.el | 11 | ||||
| -rw-r--r-- | modules/prog-training.el | 10 | ||||
| -rw-r--r-- | modules/prog-webdev.el | 11 | ||||
| -rw-r--r-- | modules/prog-yaml.el | 10 | ||||
| -rw-r--r-- | tests/test-init-module-headers.el | 13 |
12 files changed, 137 insertions, 13 deletions
diff --git a/docs/design/module-inventory.org b/docs/design/module-inventory.org index dbde1557..ea9ecda3 100644 --- a/docs/design/module-inventory.org +++ b/docs/design/module-inventory.org @@ -28,7 +28,8 @@ This inventory is independent from the helper inventory owned by - Batch 3 (Core libraries and command modules): classified. 7 modules. - Batch 4 (UI / core-UX modules, Layer 2): classified. 10 modules. - Batch 5 (Dev entry-points, diff, help, lint, VC, Layer 2): classified. 9 modules. -- 42 of 102 modules classified. +- Batch 6 (Programming modules, Layer 2-4): classified. 10 modules. +- 52 of 102 modules classified. - No load-order changes have been made; =init.el= keeps its current eager order. * Legend @@ -136,6 +137,25 @@ Command entry points and package config for the development workflow: coverage | =test-runner= | 2 | C/L | eager | eager | ert, cl-lib, keybindings | test keymap under cj/custom-keymap | yes | | =vc-config= | 2 | C/P | eager | eager | user-constants, keybindings | 2 keymaps under cj/custom-keymap, package config | yes | +** Batch 6 — Programming modules (Layer 2-4) + +prog-general owns the shared programming defaults and tree-sitter/LSP policy and +stays eager. The language modules are eager only by init order and should load +by major mode (Phase 6); prog-training is optional and already autoloads. + +| Module | Layer | Cat | Current | Target | Runtime requires | Top-level side effects | Direct load | +|--------+-------+-----+---------+--------+------------------+------------------------+-------------| +| =prog-general= | 2 | C/P/S | eager | eager | none | 4 add-hook, package config | yes | +| =prog-c= | 3 | D/P | eager | mode | none | 6 add-hook, package config | yes | +| =prog-go= | 3 | D/P | eager | mode | none | package config | yes | +| =prog-lisp= | 3 | D/P | eager | mode | none | 2 add-hook, package config | yes | +| =prog-python= | 3 | D/P | eager | mode | system-lib | package config; warns if pyright missing | yes | +| =prog-webdev= | 3 | D/P | eager | mode | system-lib | package config; warns if prettier missing | yes | +| =prog-json= | 3 | D/P | eager | mode | none | 1 add-hook, package config | yes | +| =prog-yaml= | 3 | D/P | eager | mode | none | 1 add-hook, package config | yes | +| =prog-shell= | 3 | D/P/S | eager | mode | none | 5 add-hook (after-save executable hook flagged) | yes | +| =prog-training= | 4 | O/D/P | eager | command | none | package config (autoloaded) | yes | + * Hidden dependencies found Discoveries that belong to Phase 2 (make dependencies explicit). Recorded here, @@ -164,7 +184,7 @@ not fixed here. * Pending classification -The remaining 60 modules required by =init.el=, awaiting per-module inspection. +The remaining 50 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 @@ -208,16 +228,6 @@ Org, then optional integrations. - [ ] org-roam-config - [ ] org-webclipper - [ ] pdf-config -- [ ] prog-c -- [ ] prog-general -- [ ] prog-go -- [ ] prog-json -- [ ] prog-lisp -- [ ] prog-python -- [ ] prog-shell -- [ ] prog-training -- [ ] prog-webdev -- [ ] prog-yaml - [ ] quick-video-capture - [ ] reconcile-open-repos - [ ] restclient-config diff --git a/modules/prog-c.el b/modules/prog-c.el index dbc11899..dd5d7ace 100644 --- a/modules/prog-c.el +++ b/modules/prog-c.el @@ -2,6 +2,16 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by C major mode +;; (Phase 6 deferral candidate). +;; Top-level side effects: six add-hook, package configuration via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Modern C programming environment with LSP, tree-sitter, debugging, and formatting. ;; ;; Installation: diff --git a/modules/prog-general.el b/modules/prog-general.el index e7dd4989..dedf8a80 100644 --- a/modules/prog-general.el +++ b/modules/prog-general.el @@ -2,6 +2,16 @@ ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 2 (Core UX). +;; Category: C/P/S. +;; Load shape: eager. +;; Eager reason: generic programming defaults, projectile, and the tree-sitter / +;; LSP policy shared across every language mode. +;; Top-level side effects: four add-hook, package configuration via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; This module provides general programming functionality not related to a ;; specific programming language, such as code-folding, project management, ;; highlighting symbols, snippets, and whitespace management. diff --git a/modules/prog-go.el b/modules/prog-go.el index 0d271617..0edfc206 100644 --- a/modules/prog-go.el +++ b/modules/prog-go.el @@ -2,6 +2,16 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by Go major +;; mode (Phase 6 deferral candidate). +;; Top-level side effects: package configuration via use-package (hooks via :hook). +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Configuration for Go programming using go-ts-mode (tree-sitter based). ;; Requires go-mode package for gofmt and related commands. ;; diff --git a/modules/prog-json.el b/modules/prog-json.el index 6dba6dee..7b49dff1 100644 --- a/modules/prog-json.el +++ b/modules/prog-json.el @@ -2,6 +2,16 @@ ;; Author: Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by JSON major +;; mode (Phase 6 deferral candidate). +;; Top-level side effects: one add-hook, package configuration via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; JSON editing with tree-sitter highlighting, one-key formatting, and ;; interactive jq queries against the current buffer. ;; diff --git a/modules/prog-lisp.el b/modules/prog-lisp.el index f82af40c..a5111669 100644 --- a/modules/prog-lisp.el +++ b/modules/prog-lisp.el @@ -2,6 +2,16 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by Lisp major +;; modes (Phase 6 deferral candidate). +;; Top-level side effects: two add-hook, package configuration via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Configuration for Emacs Lisp, Common Lisp (SLIME), and Scheme (Guile). ;; ==== Common Lisp Setup (SLIME + Quicklisp) ==== diff --git a/modules/prog-python.el b/modules/prog-python.el index 5f9a4175..d8556c4d 100644 --- a/modules/prog-python.el +++ b/modules/prog-python.el @@ -2,6 +2,17 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by Python major +;; mode (Phase 6 deferral candidate). +;; Top-level side effects: package configuration via use-package; warns at load +;; if pyright is missing. +;; Runtime requires: system-lib. +;; Direct test load: yes. +;; ;; Python programming environment with LSP, tree-sitter, and formatting. ;; ;; Installation: diff --git a/modules/prog-shell.el b/modules/prog-shell.el index 57347cc6..ca990c61 100644 --- a/modules/prog-shell.el +++ b/modules/prog-shell.el @@ -2,6 +2,17 @@ ;; author Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P/S. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by shell major +;; mode (Phase 6 deferral candidate). +;; Top-level side effects: five add-hook, including an after-save executable hook +;; the spec flags as needing opt-in/scoping; package config via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Modern shell scripting environment with LSP, tree-sitter, linting, and formatting. ;; ;; Installation: diff --git a/modules/prog-training.el b/modules/prog-training.el index 9eb5a9a3..41f3053b 100644 --- a/modules/prog-training.el +++ b/modules/prog-training.el @@ -1,6 +1,16 @@ ;;; prog-training.el --- Training -*- lexical-binding: t; coding: utf-8; -*- ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 4 (Optional). +;; Category: O/D/P. +;; Load shape: eager. +;; Eager reason: none; the C-h E / C-h L bindings already autoload their +;; packages, so the eager require can drop to autoloads in Phase 4. +;; Top-level side effects: package configuration via use-package (autoloaded). +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; Use C-h E to launch Exercism when you want to fetch or submit practice problems. ;; Use C-h L for LeetCode sessions; the package drops solved files under ~/code/leetcode in Go format. ;; Both bindings autoload their packages, so invoking the key is the whole workflow. diff --git a/modules/prog-webdev.el b/modules/prog-webdev.el index fbe3825c..74cff732 100644 --- a/modules/prog-webdev.el +++ b/modules/prog-webdev.el @@ -2,6 +2,17 @@ ;; Author: Craig Jennings <c@cjennings.net> ;; ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by web major +;; modes (Phase 6 deferral candidate). +;; Top-level side effects: package configuration via use-package; warns at load +;; if prettier is missing. +;; Runtime requires: system-lib. +;; Direct test load: yes. +;; ;; TypeScript, JavaScript, and HTML development with tree-sitter, LSP, and ;; prettier formatting. ;; diff --git a/modules/prog-yaml.el b/modules/prog-yaml.el index 8411f04c..6bb11a62 100644 --- a/modules/prog-yaml.el +++ b/modules/prog-yaml.el @@ -2,6 +2,16 @@ ;; author: Craig Jennings <c@cjennings.net> ;;; Commentary: +;; +;; Layer: 3 (Domain Workflow). +;; Category: D/P. +;; Load shape: eager. +;; Eager reason: none necessary; currently eager but should load by YAML major +;; mode (Phase 6 deferral candidate). +;; Top-level side effects: one add-hook, package configuration via use-package. +;; Runtime requires: none (configures packages via use-package). +;; Direct test load: yes. +;; ;; YAML editing with tree-sitter highlighting and one-key formatting. ;; ;; Features: diff --git a/tests/test-init-module-headers.el b/tests/test-init-module-headers.el index f6c8e7ba..7ab99448 100644 --- a/tests/test-init-module-headers.el +++ b/tests/test-init-module-headers.el @@ -67,7 +67,18 @@ "help-utils" "flycheck-config" "test-runner" - "vc-config") + "vc-config" + ;; Batch 6 — Programming modules (Layer 2-4) + "prog-general" + "prog-c" + "prog-go" + "prog-lisp" + "prog-python" + "prog-webdev" + "prog-json" + "prog-yaml" + "prog-shell" + "prog-training") "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.") |
