diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-19 06:05:44 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-19 06:05:44 -0400 |
| commit | 2238b3a40473e8cf1e49915a24d56366b72aede5 (patch) | |
| tree | 5e26d8fd4c72234788074f95441e94284ec7678d /scripts/theme-studio/face_data.py | |
| parent | 71c52505f074580134e39e914287f7b3a92978dc (diff) | |
| download | dotemacs-2238b3a40473e8cf1e49915a24d56366b72aede5.tar.gz dotemacs-2238b3a40473e8cf1e49915a24d56366b72aede5.zip | |
fix(theme-studio): two-pass default-face capture so faces aren't dropped
Re-capturing the default-face snapshot regressed 43 faces to nonexistent, transient and dirvish among them. The capture loaded each package file whole with a bare `load`, and transient 0.12.0 now requires cond-let, which isn't on the batch load-path. The load failed, the error was swallowed, and every face in the file silently dropped. Any package that gains a dependency would hit the same trap.
I split the capture into two passes. Pass 1 keeps the best-effort full load, the only way to register faces a package builds in a macro or loop rather than a literal defface (rainbow-delimiters depth faces, markdown headers). Pass 2 reads each file and evaluates only its defface forms, so a face whose package can't fully load in batch still registers from its self-contained declaration. Pass 2 runs last so the pristine default spec wins over anything a pass-1 load customized.
The refreshed snapshot now records 137 more faces than before (magit, lsp, git, org, and company defaults the old single pass missed), plus the overline field everywhere. The only two dropped faces are gone upstream: consult-separator was removed from consult, and json-mode is no longer installed.
Diffstat (limited to 'scripts/theme-studio/face_data.py')
0 files changed, 0 insertions, 0 deletions
