From fed5478581707742df17ab6313224a791567e4b3 Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Sat, 9 Oct 2021 12:35:54 +0200 Subject: theme: C-c T toggles between dark and light themes --- lisp/init-theme.el | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/lisp/init-theme.el b/lisp/init-theme.el index 2179b35..04af81b 100644 --- a/lisp/init-theme.el +++ b/lisp/init-theme.el @@ -2,18 +2,39 @@ ;;; Commentary: ;;; Code: -(defun mpolden/switch-theme () - "Disable any currently enabled themes and load a new one." - (interactive) +(defvar mpolden/theme-light 'doom-one-light + "The light theme to use when toggling themes with `mpolden/toggle-theme'.") + +(defvar mpolden/theme-dark 'doom-one + "The dark theme to use when toggling themes with `mpolden/toggle-theme'.") + +(defun mpolden/switch-theme (&optional theme) + "Disable any currently enabled themes and load THEME." + (interactive "P") (mapcar #'disable-theme custom-enabled-themes) (let ((custom-safe-themes t)) - (call-interactively 'load-theme))) + (if theme + (load-theme theme) + (call-interactively 'load-theme)))) + +(defun mpolden/toggle-theme () + "Toggle between dark and light themes. +The variables `mpolden/theme-light' and `mpolden/theme-dark' +decides the themes to toggle between." + (interactive) + (let ((is-light (memq mpolden/theme-light custom-enabled-themes) ) + (is-dark (memq mpolden/theme-dark custom-enabled-themes))) + (cond + (is-light (mpolden/switch-theme mpolden/theme-dark)) + (is-dark (mpolden/switch-theme mpolden/theme-light)) + (t (message "Don't know how to toggle theme: %s" (car custom-enabled-themes)))))) (use-package doom-themes :ensure t :if (display-graphic-p) + :bind ("C-c T" . mpolden/toggle-theme) :config - (load-theme 'doom-one t)) + (load-theme mpolden/theme-dark t)) (provide 'init-theme) -- cgit v1.2.3