diff options
-rw-r--r-- | etc/NEWS | 11 | ||||
-rw-r--r-- | lisp/custom.el | 12 |
2 files changed, 23 insertions, 0 deletions
@@ -2933,6 +2933,17 @@ Using 'make-obsolete' on a theme is now supported. This will make 'load-theme' issue a warning when loading the theme. +++ +*** New command 'toggle-theme' +If a theme defines a dual pair (e.g. a light or dark variant) this +command can be used disable the current one and enable the other. + +--- +*** New user option 'custom-ensure-single-active-theme' +If non-nil, all themes will be disabled before a new theme is enabled, +so that there is always at most one active theme at any time. + + ++++ ** New hook 'display-monitors-changed-functions'. It is called whenever the configuration of different monitors on a display changes. diff --git a/lisp/custom.el b/lisp/custom.el index b4d1ba7317f..d8baf21d960 100644 --- a/lisp/custom.el +++ b/lisp/custom.el @@ -1280,6 +1280,12 @@ This variable cannot be set in a Custom theme." :risky t :version "24.1") +(defcustom custom-ensure-single-active-theme nil + "Non-nil means that `load-theme' should ensure only one theme is active." + :type 'boolean + :group 'customize + :version "29.1") + (defun load-theme (theme &optional no-confirm no-enable) "Load Custom theme named THEME from its file and possibly enable it. The theme file is named THEME-theme.el, in one of the directories @@ -1304,6 +1310,9 @@ This function is normally called through Customize when setting should be called with a non-nil NO-CONFIRM argument, or after `custom-safe-themes' has been loaded. +If `custom-ensure-single-active-theme' is non-nil, all other active +themes will be disabled before THEME is enabled. + Return t if THEME was successfully loaded, nil otherwise." (interactive (list @@ -1367,6 +1376,9 @@ Return t if THEME was successfully loaded, nil otherwise." (setq tail (cdr tail))) (when found (put theme 'theme-settings (cons found (delq found settings))))) + ;; Check if the user only wants one theme to be active + (when custom-ensure-single-active-theme + (mapc #'disable-theme custom-enabled-themes)) ;; Finally, enable the theme. (unless no-enable (enable-theme theme)) |