Commit Diff


commit - e0df63515ebe429a3d299df6a6dd0cd880ce7410
commit + 8816b95ca0d7213037ca85716c07b21185a5735f
blob - ccfb6b182b8bb770d21863bad7d4db4a3d70447f
blob + 4d92151354065e0b5c1f00761222eb4794592c58
--- lisp/setup-ui.el
+++ lisp/setup-ui.el
@@ -88,8 +88,18 @@
 (defun mine-theme--record (&rest _)
   "Persist selected GUI theme across restarts."
   (when (and custom-enabled-themes (display-graphic-p))
-    (setq mine-last-theme (car custom-enabled-themes))))
+    (let ((theme (car custom-enabled-themes)))
+      (when (not (equal mine-last-theme theme))
+        (setq mine-last-theme theme)
+        (with-temp-file (mine-cache-file "theme.el")
+          (princ `(setq mine-last-theme ',theme)))))))
 
+(defun mine-theme--restore ()
+  "Load previously recorded theme name, if any."
+  (let ((file (mine-cache-file "theme.el")))
+    (when (file-exists-p file)
+      (load file 'nomessage))))
+
 (advice-add 'load-theme :after #'mine-theme--record)
 
 (add-hook 'enable-theme-functions #'mine-theme--record)
@@ -106,6 +116,7 @@
   :demand t
   :config
   (add-hook 'ef-themes-after-load-theme-hook #'mine-theme--record)
+  (mine-theme--restore)
   (condition-case nil
       (load-theme (or (and (symbolp mine-last-theme) mine-last-theme)
                       'ef-winter)