diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-02 23:01:54 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-02 23:01:54 -0400 |
| commit | 630cfddc7060c7019815f8e82f87fb629aefebfa (patch) | |
| tree | b645a1c56616094eca74efdffe499a51250e1bb1 /tests/fixtures/grammar-errors-basic.txt | |
| parent | f9b379ed52e4b5947bb2a2fc8d2c54c872e39791 (diff) | |
| download | dotemacs-630cfddc7060c7019815f8e82f87fb629aefebfa.tar.gz dotemacs-630cfddc7060c7019815f8e82f87fb629aefebfa.zip | |
feat(theme-studio): explicit absolute-vs-relative face height kind
JSON collapses 2.0 to 2 on save, so a height's number type can't say whether it's a fixed 1/10pt value or a relative multiplier. The face model now carries an explicit heightMode field (abs/rel) through seed, save/load, and export. build-theme.el coerces :height from the kind: abs exports an integer, rel a float, so a relative 2.0 renders as 2.0, never 2.
Faces saved before the field existed infer the kind once on load (JS: integer to abs, fractional to rel; Python keeps the authored type, so a float 2.0 seed stays relative) and persist it on the next save. The mode-line seed carries abs explicitly, and WIP.json's eight seeded heights are stamped with their kinds. Regenerating the theme from the stamped WIP.json produces an identical WIP-theme.el, so the round-trip holds.
Diffstat (limited to 'tests/fixtures/grammar-errors-basic.txt')
0 files changed, 0 insertions, 0 deletions
