diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-28 23:17:32 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-28 23:17:32 -0400 |
| commit | 4cc3010a2bf5e08ed95475c3d7671fd1801deaa3 (patch) | |
| tree | dd6a73f060e5ae40956e2a213bb5c749b4e7b93d | |
| parent | 6600c07f978b66ca183ebde4558a3834320c06d8 (diff) | |
| download | dotemacs-4cc3010a2bf5e08ed95475c3d7671fd1801deaa3.tar.gz dotemacs-4cc3010a2bf5e08ed95475c3d7671fd1801deaa3.zip | |
fix(music): define the playlist-header faces
The route-colors pass dropped the literal cj/music-* face definitions but left the playlist header referencing them, so every header render spammed "Invalid face reference". I restored the five as deffaces that inherit themed base faces, so the theme still owns their colors. A test asserts each referenced face is defined.
| -rw-r--r-- | modules/music-config.el | 15 | ||||
| -rw-r--r-- | tests/test-music-config--faces.el | 25 |
2 files changed, 40 insertions, 0 deletions
diff --git a/modules/music-config.el b/modules/music-config.el index 86f6eb130..c627d799a 100644 --- a/modules/music-config.el +++ b/modules/music-config.el @@ -41,6 +41,21 @@ (defvar emms-playlist-mode-map) (defvar dirvish-mode-map) +;; Playlist-header faces. Defined here so the `cj/music--header-text' +;; references are valid (an undefined face spams "Invalid face reference" on +;; every render). Appearance inherits themed base faces so the active theme +;; owns the colors -- the literal values were dropped in the route-colors pass. +(defface cj/music-header-face '((t :inherit shadow)) + "Playlist-header field labels (Playlist, Current, Mode, Keys).") +(defface cj/music-header-value-face '((t :inherit default)) + "Playlist-header field values.") +(defface cj/music-mode-on-face '((t :inherit warning)) + "Active mode indicator in the playlist header.") +(defface cj/music-mode-off-face '((t :inherit shadow)) + "Inactive mode indicator in the playlist header.") +(defface cj/music-keyhint-face '((t :inherit shadow)) + "Key hints in the playlist header.") + ;; Foreign functions used lazily after their packages load. (declare-function emms-playlist-mode "emms-playlist-mode") (declare-function emms-playlist-track-at "emms-playlist-mode") diff --git a/tests/test-music-config--faces.el b/tests/test-music-config--faces.el new file mode 100644 index 000000000..c45049e1a --- /dev/null +++ b/tests/test-music-config--faces.el @@ -0,0 +1,25 @@ +;;; test-music-config--faces.el --- music playlist face definitions -*- lexical-binding: t; -*- + +;;; Commentary: +;; The playlist header propertizes text with cj/music-* faces. Each must be a +;; defined face (defface) or the reference is invalid -- an undefined face spams +;; "Invalid face reference" on every header render. The faces inherit from +;; themed base faces so the theme still owns their colors. + +;;; Code: + +(require 'ert) +(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) +(require 'music-config) + +(ert-deftest test-music-config-header-faces-are-defined () + "Normal: every cj/music face the playlist header uses is a defined face." + (dolist (f '(cj/music-header-face + cj/music-header-value-face + cj/music-mode-on-face + cj/music-mode-off-face + cj/music-keyhint-face)) + (should (facep f)))) + +(provide 'test-music-config--faces) +;;; test-music-config--faces.el ends here |
