From 9aa180ea57f79f79c156a0956677e13c5263b478 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 25 May 2026 16:02:35 -0500 Subject: feat(ui-theme): default the theme fallback to bundled dupre MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The fallback kicks in when persist/emacs-theme is missing — a fresh machine, or one that's never saved a theme. It was modus-vivendi, which ships with Emacs but has none of the dimming colors this config chooses, so an unconfigured machine looked and dimmed differently from a configured one. I hit exactly that on a second box this week. dupre is bundled in themes/ and carries those colors, and it loads wherever this config does, so it's the better default. I added a regression test asserting the default is dupre; its loadability is already covered by test-dupre-theme.el. The docstring no longer claims the fallback must be a built-in theme, since dupre isn't one. --- modules/ui-theme.el | 9 ++++++--- tests/test-ui-theme-commands.el | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/modules/ui-theme.el b/modules/ui-theme.el index 2df37000..a7873b9a 100644 --- a/modules/ui-theme.el +++ b/modules/ui-theme.el @@ -64,11 +64,14 @@ directory that is sync'd across machines with this configuration." :type 'file :group 'cj/ui-theme) -(defcustom fallback-theme-name "modus-vivendi" +(defcustom fallback-theme-name "dupre" "The name of the theme to fallback on. This is used when there's no file, or the theme name doesn't match -any of the installed themes. This should be a built-in theme. If theme name is -`nil', there will be no theme." +any of the installed themes. It must be available wherever this config is +loaded, since the fallback has no further fallback. dupre is bundled in +themes/ and carries the dimming colors chosen for this config, so it is the +default; a built-in theme like modus-vivendi works too but has no chosen +dimming colors. If theme name is `nil', there will be no theme." :type 'string :group 'cj/ui-theme) diff --git a/tests/test-ui-theme-commands.el b/tests/test-ui-theme-commands.el index f5f57c31..55facc17 100644 --- a/tests/test-ui-theme-commands.el +++ b/tests/test-ui-theme-commands.el @@ -34,6 +34,16 @@ (fallback-theme-name "modus-vivendi")) (should (equal "modus-vivendi" (cj/get-active-theme-name))))) +;;; fallback-theme-name default + +(ert-deftest test-ui-theme-default-fallback-is-bundled-dupre () + "Normal: the default fallback theme is dupre, the config's bundled theme. +modus-vivendi ships with Emacs but has no chosen dimming colors; dupre is +bundled in themes/, so it is available on every machine that loads this +config and is the right default fallback. Its loadability is covered by +test-dupre-theme.el." + (should (equal "dupre" (default-value 'fallback-theme-name)))) + ;;; cj/save-theme-to-file (ert-deftest test-ui-theme-save-writes-active-name-to-file () -- cgit v1.2.3