diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-18 20:26:18 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-18 20:26:18 -0500 |
| commit | e64ad7a99c7636a14a60ec6d92551ea3a98b2ec6 (patch) | |
| tree | 774ce65247b7aad32a12f7dfa748427330edbae8 | |
| parent | 25a24330c04d86c7c638e8114827881e88bee8b5 (diff) | |
| download | dotemacs-e64ad7a99c7636a14a60ec6d92551ea3a98b2ec6.tar.gz dotemacs-e64ad7a99c7636a14a60ec6d92551ea3a98b2ec6.zip | |
chore(todo): file reproducible face-coverage generator task
| -rw-r--r-- | todo.org | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -60,6 +60,23 @@ From the 2026-06-15 lint-org sweep. Each needs a human read — these are judgme - obsolete-properties-drawer — incorrect PROPERTIES drawer contents (lines 8392, 4201, 4023, 65, 55). - misplaced-heading — possibly misplaced heading (line 8116). +** TODO [#C] Reproducible face-coverage generator + coverage diff :feature:solo: +=scripts/theme-studio/face-coverage.org= is hand-regenerated by a throwaway /tmp script each time. Commit a self-contained generator so the worklist regenerates with one command, plus a diff that names what coverage changed between runs. + +Generator — two pieces plus a Makefile target: +- =face-coverage-dump.el= — batch elisp run via =emacsclient= against the live daemon (captures actually-loaded packages), with an =emacs --batch -l init.el= fallback for a clean checkout. For every face in =(face-list)= emit name, first-line docstring, and =(symbol-file f 'defface)=. One JSON/TSV out. +- =face_coverage.py= — read that dump plus the studio's managed set (font-lock map from =build-theme.el=, =UI_FACES= from =generate.py=, =package-inventory.json=); classify each face core/general/package by where its defface lives (=/usr/share/emacs= = built-in, =elpa= = package); group; write =face-coverage.org= with the TODO/DONE tree, =[d/t]= cookies, per-face docstrings, and per-bucket descriptions (group-documentation / package summary). +- =make face-coverage= runs both and writes the file. + +Carry over the manual logic already worked out: the CORE_HINT core-face set; the subsystem/package family buckets (including abbrev, which-func, git-gutter, git-commit, twentyfortyeight, yas, edit-indirect); the erc-ansi and =bg:erc=/=fg:erc= routing; and the separator-aware prefix match (=-=, =:=, =/=). + +Compare mode (=make face-coverage-diff=): +- Parse the committed (HEAD) =face-coverage.org= and the freshly generated one into face→state maps via =^\*+ (TODO|DONE) name=. Report newly covered (TODO→DONE), newly present (new package or Emacs upgrade), disappeared (package removed), and net coverage with per-tier deltas. +- =git diff face-coverage.org= already gives the raw line delta; this is the friendlier summary. +- Optional: append a dated =covered/total= line to a small coverage-log for progress over time. + +Dump from the live daemon by default (reflects the packages actually run); the batch fallback won't see lazily-loaded packages until required. + ** TODO [#B] Un-pin ghostel from 0.33.0 once upstream fixes #422/#423 :bug: ghostel is held at 0.33.0 (=ghostel-20260604.2049=, commit 5779a2adceb2) in =modules/term-config.el= to dodge the 0.35.x native-PTY crash. When dakra/ghostel ships a fix for #422 (Linux malloc/signal reentrancy) and #423 (macOS recursive lock), restore =:ensure t= (drop the pin comment) and =package-upgrade ghostel=, then re-run the open-ghostel-in-a-GUI-frame survival check. Watch the two issues for the fixing commit. |
