By Xah Lee. Date: 2024-08-29 . Last updated: 2025-10-18 .
xah cycle theme
(defvar xah-cycle-theme-array
(vector 'modus-vivendi 'deeper-blue 'adwaita 'dichromacy nil )
"A vector of theme names for `xah-cycle-theme'. Each is a symbol or nil.
If nil, means turn off all theme.
URL `http://xahlee.info/emacs/emacs/elisp_xah-toggle-theme.html'" )
(defun xah-cycle-theme ()
"Cycle color themes.
URL `http://xahlee.info/emacs/emacs/elisp_xah-toggle-theme.html'
Created: 2025-08-06
Version: 2025-10-16"
(interactive )
(let* ((xstate-old
(if (get 'xah-cycle-theme 'xstate )
(get 'xah-cycle-theme 'xstate )
(1- (length xah-cycle-theme-array ))))
(xstate-new (% (1+ xstate-old ) (length xah-cycle-theme-array )))
(xthemename (aref xah-cycle-theme-array xstate-new )))
(mapc (lambda (x ) (disable-theme x )) custom-enabled-themes)
(put 'xah-cycle-theme 'xstate xstate-new )
(if xthemename
(progn
(load-theme xthemename )
(message "Color theme set to %s" xthemename )
xthemename )
(progn
(message "color theme set to none" )
nil )))
(set-transient-map
(let ((xkmap (make-sparse-keymap )))
(define-key xkmap (kbd (if (boundp 'xah-repeat-key ) xah-repeat-key "." )) real-this-command )
xkmap )))