branch: externals/modus-themes
commit 89e40be4d8238da635c6737d83ecc0e8c0ecc6f1
Author: Heitor Augusto <[email protected]>
Commit: Heitor Augusto <[email protected]>

    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 4d842bd12e7..a9b3e4f9457 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.

Reply via email to