mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Apply non-user themes only when asked
Theme settings now generally aren't actually applied until a call to `enable-theme-, either one made explicitly or implicitly through `load-theme' with NO-ENABLE nil. This change has the effect of not applying theme changes just because we load a lisp file containing a theme specification. The previous behavior is preserved for the special case of the `user' theme, which is frequently used for ad-hoc customization. * lisp/cus-face.el (custom-theme-set-faces): Call `custom--should-apply-setting' to decide whether to apply a setting. * lisp/custom.el (custom--should-apply-setting): New function. (custom--inhibit-theme-enable): Add `apply-only-user' option; default to it. (custom-push-theme, custom-theme-set-variables): Call `custom--should-apply-setting' to decide whether to apply a setting.
This commit is contained in:
parent
6021e1db92
commit
aabaa9f8c8
3 changed files with 21 additions and 5 deletions
9
etc/NEWS
9
etc/NEWS
|
|
@ -518,6 +518,15 @@ names" in the Tramp manual for full documentation of these facilities.
|
||||||
|
|
||||||
* Incompatible Lisp Changes in Emacs 27.1
|
* Incompatible Lisp Changes in Emacs 27.1
|
||||||
|
|
||||||
|
+++
|
||||||
|
** Theme settings generally aren't actually applied until a call to
|
||||||
|
`enable-theme-, either one made explicitly or implicitly through
|
||||||
|
`load-theme' with NO-ENABLE nil. This change has the effect of not
|
||||||
|
applying theme changes just because we load a lisp file containing a
|
||||||
|
theme specification. The previous behavior is preserved for the
|
||||||
|
special case of the `user' theme, which is frequently used for
|
||||||
|
ad-hoc customization.
|
||||||
|
|
||||||
** The 'repetitions' argument of 'benchmark-run' can now also be a variable.
|
** The 'repetitions' argument of 'benchmark-run' can now also be a variable.
|
||||||
** The FILENAME argument to 'file-name-base' is now mandatory and no
|
** The FILENAME argument to 'file-name-base' is now mandatory and no
|
||||||
longer defaults to 'buffer-file-name'.
|
longer defaults to 'buffer-file-name'.
|
||||||
|
|
|
||||||
|
|
@ -342,7 +342,7 @@ argument list."
|
||||||
;; is aliased to.
|
;; is aliased to.
|
||||||
(if (get face 'face-alias)
|
(if (get face 'face-alias)
|
||||||
(setq face (get face 'face-alias)))
|
(setq face (get face 'face-alias)))
|
||||||
(if custom--inhibit-theme-enable
|
(if (custom--should-apply-setting theme)
|
||||||
;; Just update theme settings.
|
;; Just update theme settings.
|
||||||
(custom-push-theme 'theme-face face theme 'set spec)
|
(custom-push-theme 'theme-face face theme 'set spec)
|
||||||
;; Update theme settings and set the face spec.
|
;; Update theme settings and set the face spec.
|
||||||
|
|
|
||||||
|
|
@ -843,6 +843,11 @@ to the front of this list.")
|
||||||
(unless (custom-theme-p theme)
|
(unless (custom-theme-p theme)
|
||||||
(error "Unknown theme `%s'" theme)))
|
(error "Unknown theme `%s'" theme)))
|
||||||
|
|
||||||
|
(defun custom--should-apply-setting (theme)
|
||||||
|
(or (null custom--inhibit-theme-enable)
|
||||||
|
(and (eq custom--inhibit-theme-enable 'apply-only-user)
|
||||||
|
(eq theme 'user))))
|
||||||
|
|
||||||
(defun custom-push-theme (prop symbol theme mode &optional value)
|
(defun custom-push-theme (prop symbol theme mode &optional value)
|
||||||
"Record VALUE for face or variable SYMBOL in custom theme THEME.
|
"Record VALUE for face or variable SYMBOL in custom theme THEME.
|
||||||
PROP is `theme-face' for a face, `theme-value' for a variable.
|
PROP is `theme-face' for a face, `theme-value' for a variable.
|
||||||
|
|
@ -882,7 +887,7 @@ See `custom-known-themes' for a list of known themes."
|
||||||
(setcar (cdr setting) value)))
|
(setcar (cdr setting) value)))
|
||||||
;; Add a new setting:
|
;; Add a new setting:
|
||||||
(t
|
(t
|
||||||
(unless custom--inhibit-theme-enable
|
(when (custom--should-apply-setting theme)
|
||||||
(unless old
|
(unless old
|
||||||
;; If the user changed a variable outside of Customize, save
|
;; If the user changed a variable outside of Customize, save
|
||||||
;; the value to a fake theme, `changed'. If the theme is
|
;; the value to a fake theme, `changed'. If the theme is
|
||||||
|
|
@ -981,7 +986,7 @@ COMMENT is a comment string about SYMBOL."
|
||||||
(let* ((symbol (indirect-variable (nth 0 entry)))
|
(let* ((symbol (indirect-variable (nth 0 entry)))
|
||||||
(value (nth 1 entry)))
|
(value (nth 1 entry)))
|
||||||
(custom-push-theme 'theme-value symbol theme 'set value)
|
(custom-push-theme 'theme-value symbol theme 'set value)
|
||||||
(unless custom--inhibit-theme-enable
|
(when (custom--should-apply-setting theme)
|
||||||
;; Now set the variable.
|
;; Now set the variable.
|
||||||
(let* ((now (nth 2 entry))
|
(let* ((now (nth 2 entry))
|
||||||
(requests (nth 3 entry))
|
(requests (nth 3 entry))
|
||||||
|
|
@ -1149,11 +1154,13 @@ This variable is designed for use in lisp code (including
|
||||||
external packages). For manual user customizations, use
|
external packages). For manual user customizations, use
|
||||||
`custom-theme-directory' instead.")
|
`custom-theme-directory' instead.")
|
||||||
|
|
||||||
(defvar custom--inhibit-theme-enable nil
|
(defvar custom--inhibit-theme-enable 'apply-only-user
|
||||||
"Whether the custom-theme-set-* functions act immediately.
|
"Whether the custom-theme-set-* functions act immediately.
|
||||||
If nil, `custom-theme-set-variables' and `custom-theme-set-faces'
|
If nil, `custom-theme-set-variables' and `custom-theme-set-faces'
|
||||||
change the current values of the given variable or face. If
|
change the current values of the given variable or face. If
|
||||||
non-nil, they just make a record of the theme settings.")
|
t, they just make a record of the theme settings. If the
|
||||||
|
value is `apply-only-user', then apply setting to the
|
||||||
|
`user' theme immediately and defer other updates.")
|
||||||
|
|
||||||
(defun provide-theme (theme)
|
(defun provide-theme (theme)
|
||||||
"Indicate that this file provides THEME.
|
"Indicate that this file provides THEME.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue