From 44bf6861a6d04c34e35f4303323d07cbb6b569ea Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 25 Jul 2018 18:29:04 +0200 Subject: [PATCH] Fix overeager theme reloading when creating frames --- core/core-ui.el | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/core/core-ui.el b/core/core-ui.el index c842b9dab..25f62a337 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -589,19 +589,28 @@ frame's window-system, the theme will be reloaded.") ;; ;; There will still be issues with simultaneous gui and terminal (emacsclient) ;; frames, however. There's always `doom/reload-theme' if you need it! -(defun doom|init-theme-in-frame (frame) +(defun doom|reload-theme-in-frame (frame) "Reloads the theme in new daemon or tty frames." (when (and (framep frame) (not (eq doom-last-window-system (framep-on-display frame)))) (with-selected-frame frame (doom|init-theme)) - (setq doom-last-window-system (display-graphic-p frame)))) + (setq doom-last-window-system (framep-on-display frame)))) + +(defun doom|reload-theme-maybe (_frame) + "Reloads the theme after closing the last frame of a type." + (unless (cl-loop for fr in (frame-list) + if (eq doom-last-window-system (framep-on-display fr)) + return t) + (setq doom-last-window-system nil) + (doom|reload-theme-in-frame (selected-frame)))) ;; fonts (add-hook 'doom-init-ui-hook #'doom|init-fonts) ;; themes -(add-hook 'after-make-frame-functions #'doom|init-theme-in-frame) (add-hook 'doom-init-ui-hook #'doom|init-theme) +(add-hook 'after-make-frame-functions #'doom|reload-theme-in-frame-maybe) +(add-hook 'after-delete-frame-functions #'doom|reload-theme-maybe) ;;