From 8f56aced97f128b6b4d4dcf19fe5c1ba43447e6b Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Thu, 18 Jun 2026 20:35:55 -0500 Subject: feat(theme-studio): add reproducible face-coverage generator and diff face-coverage.org was rebuilt by a throwaway /tmp script each time. This makes it reproducible: face-coverage-dump.el dumps every face's name, docstring, and defface file from the live daemon (plus all group docs and package summaries), and face_coverage.py turns that into the tiered worklist (emacs-core / emacs-general / per-package), classifying each face by where its defface lives. make face-coverage regenerates the file; make face-coverage-diff reports the coverage delta against the committed copy. The dump binds coding-system-for-write so writing the docstring JSON never drops into the interactive coding-system prompt. I validated the builder by regenerating and diffing against the hand-built worklist: headings identical, only the intro and one sharper description differ. --- scripts/theme-studio/face-coverage.org | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'scripts/theme-studio/face-coverage.org') diff --git a/scripts/theme-studio/face-coverage.org b/scripts/theme-studio/face-coverage.org index 1fff4d346..b5f8b795b 100644 --- a/scripts/theme-studio/face-coverage.org +++ b/scripts/theme-studio/face-coverage.org @@ -9,7 +9,8 @@ studio already themes it; TODO = not yet. Three top-level tiers: - emacs-general: built-in Emacs subsystems (org, gnus, erc, diff, vc, custom, ...), one child each. - one heading per third-party package installed from elpa (magit, vertico, consult, ...). Tier is decided by where each face's defface lives: /usr/share/emacs = built-in, elpa = package. -The line under each face is its Emacs docstring (first line), where one exists. +The line under each bucket is its group/package description; the line under each face is its +Emacs docstring (first line), where one exists. Totals: 690 / 1293 faces covered; 1129 carry a docstring. Tiers: core 1, general 75, packages 43. Coverage tiers in the studio: syntax font-lock=23, UI tier=21, package inventory=643 (39 packages). @@ -935,7 +936,7 @@ Mechanism to close a TODO: core/UI faces -> UI_FACES in generate.py; package + s *** TODO message-signature-separator Face used for displaying the signature separator. ** TODO message-header [0/7] - Mail and news message composing. + Message Headers. *** TODO message-header-cc Face used for displaying Cc headers. *** TODO message-header-name -- cgit v1.2.3