From 89e40be4d8238da635c6737d83ecc0e8c0ecc6f1 Mon Sep 17 00:00:00 2001 From: Heitor Augusto <44377258+HeitorAugustoLN@users.noreply.github.com> Date: Mon, 6 Jul 2026 18:01:04 -0300 Subject: [PATCH] Improve core palette loading logic Enhance theme palette loading by ensuring core palette is loaded before accessing its value. --- modus-themes.el | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/modus-themes.el b/modus-themes.el index 4d842bd..a9b3e4f 100644 --- a/modus-themes.el +++ b/modus-themes.el @@ -3828,11 +3828,25 @@ If THEME does not have at least a `:modus-core-palette' among its Else return (append OVERRIDES USER CORE)." (when-let* ((properties (get theme 'theme-properties)) - (core-palette (symbol-value (plist-get properties :modus-core-palette)))) - (let* ((user-palette (when with-user-palette (symbol-value (plist-get properties :modus-user-palette)))) - (overrides-palette (when with-overrides (symbol-value (plist-get properties :modus-overrides-palette)))) - (all-overrides (when with-overrides (append overrides-palette modus-themes-common-palette-overrides)))) - (append all-overrides user-palette core-palette)))) + (core-palette-name (plist-get properties :modus-core-palette))) + ;; If the palette variable hasn't been loaded into memory yet, load the theme silently + (unless (boundp core-palette-name) + (load-theme theme t t)) + (when (boundp core-palette-name) + (let* ((core-palette (symbol-value core-palette-name)) + (user-palette-name (plist-get properties :modus-user-palette)) + (user-palette (when (and with-user-palette + user-palette-name + (boundp user-palette-name)) + (symbol-value user-palette-name))) + (overrides-palette-name (plist-get properties :modus-overrides-palette)) + (overrides-palette (when (and with-overrides + overrides-palette-name + (boundp overrides-palette-name)) + (symbol-value overrides-palette-name))) + (all-overrides (when with-overrides + (append overrides-palette modus-themes-common-palette-overrides)))) + (append all-overrides user-palette core-palette))))) (defun modus-themes-get-theme-palette (&optional theme with-overrides with-user-palette) "Return palette value of active `modus-themes-get-themes' THEME.