From 43e0314e86bc527c0c20c98d13f5e98011d26dff Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 11 Aug 2018 00:33:23 +0200 Subject: [PATCH] Add doom/switch-theme; a more sensible load-theme load-theme doesn't disable previously enabled themes before switching. doom/switch-theme does. This remaps any keys bound to load-theme to doom/switch-theme. --- core/autoload/ui.el | 17 +++++++++++++++++ core/core-ui.el | 10 +++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/core/autoload/ui.el b/core/autoload/ui.el index 82f89cdf7..2186efc93 100644 --- a/core/autoload/ui.el +++ b/core/autoload/ui.el @@ -103,3 +103,20 @@ presentations." (mapc #'disable-theme custom-enabled-themes)) (doom|init-theme) (doom|init-fonts))) + +;;;###autoload +(defun doom/switch-theme (theme) + "Like `load-theme', but will unload currently loaded themes before switching +to a new one." + (interactive + (list (completing-read + "Load theme: " + (mapcar #'symbol-name + (custom-available-themes))))) + (condition-case nil + (progn + (mapc #'disable-theme custom-enabled-themes) + (load-theme (intern theme) t) + (when (fboundp 'powerline-reset) + (powerline-reset))) + (error "Problem loading theme %s" x))) diff --git a/core/core-ui.el b/core/core-ui.el index 431e5e404..9d8752713 100644 --- a/core/core-ui.el +++ b/core/core-ui.el @@ -540,14 +540,18 @@ frame's window-system, the theme will be reloaded.") (setq frame-title-format '("%b – Doom Emacs")) ;; draw me like one of your French editors (tooltip-mode -1) ; relegate tooltips to echo area only -;; prompts the user for confirmation when deleting a non-empty frame -(define-key global-map [remap delete-frame] #'doom/delete-frame) - ;; a good indicator that Emacs isn't frozen (add-hook 'doom-init-ui-hook #'blink-cursor-mode) ;; line numbers in most modes (add-hook! (prog-mode text-mode conf-mode) #'doom|enable-line-numbers) +;; More sensibile replacements for default commands +(define-key! 'global + ;; prompts the user for confirmation when deleting a non-empty frame + [remap delete-frame] #'doom/delete-frame + ;; a more sensible load-theme, that disables previous themes first + [remap load-theme] #'doom/switch-theme) + (defun doom*fix-whitespace-mode-in-childframes (orig-fn &rest args) (let ((frame (apply orig-fn args))) (with-selected-frame frame