diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-25 18:29:31 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-25 18:29:31 -0500 |
| commit | 03910b536c4fa15138ae81e3c89fe3467eed2ff8 (patch) | |
| tree | ff3d75f26287f83a14c009ded37915771762f2cb /tests | |
| parent | 406d2abb8d2e8f71f690a35fd271d59d88454d64 (diff) | |
| download | dotemacs-03910b536c4fa15138ae81e3c89fe3467eed2ff8.tar.gz dotemacs-03910b536c4fa15138ae81e3c89fe3467eed2ff8.zip | |
fix(font-config): theme-aware browser labels and daemon-safe emoji fontset
Two font-config robustness fixes. The font-browser (cj/display-available-fonts) hardcoded a "Light Blue" foreground for each family label, which goes nearly unreadable on a light theme. I switched it to font-lock-keyword-face so the label follows the theme's contrast, keeping it bold.
The emoji-fontset cond ran once at module load behind (env-gui-p). In daemon mode there's no GUI frame at load, so env-gui-p is nil and the fontset never gets set — a later emacsclient -c GUI frame then has no emoji font. I wrapped it in cj/setup-emoji-fontset (GUI-guarded, idempotent) and, mirroring how the fontaine preset is already applied, run it from server-after-make-frame-hook in daemon mode and directly otherwise. The daemon TTY-then-GUI path can't be exercised in batch, so I left a manual-test entry for it.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test-font-config.el | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/test-font-config.el b/tests/test-font-config.el index c4a649c29..8fada25e2 100644 --- a/tests/test-font-config.el +++ b/tests/test-font-config.el @@ -70,5 +70,28 @@ (should (= calls 1)) (should (memq (selected-frame) cj/fontaine-configured-frames))))) +;;; cj/setup-emoji-fontset + +(ert-deftest test-font-config-setup-emoji-fontset-noop-without-gui () + "Boundary: without a GUI the emoji setup does nothing and does not error." + (skip-unless test-font-config--available) + (require 'font-config) + (let ((called nil)) + (cl-letf (((symbol-function 'env-gui-p) (lambda (&rest _) nil)) + ((symbol-function 'set-fontset-font) + (lambda (&rest _) (setq called t)))) + (cj/setup-emoji-fontset) + (should-not called)))) + +(ert-deftest test-font-config-setup-emoji-fontset-runs-on-gui () + "Normal: on a GUI frame the emoji setup runs without error." + (skip-unless test-font-config--available) + (require 'font-config) + (cl-letf (((symbol-function 'env-gui-p) (lambda (&rest _) t)) + ((symbol-function 'font-family-list) + (lambda (&rest _) '("Noto Color Emoji"))) + ((symbol-function 'set-fontset-font) (lambda (&rest _) t))) + (should (progn (cj/setup-emoji-fontset) t)))) + (provide 'test-font-config) ;;; test-font-config.el ends here |
