[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 96cea19: Ensure delayed-init custom variables get m
From: |
Glenn Morris |
Subject: |
[Emacs-diffs] master 96cea19: Ensure delayed-init custom variables get marked special |
Date: |
Mon, 20 Feb 2017 21:30:50 -0500 (EST) |
branch: master
commit 96cea19842b577eb4f2e057d702aea54d736233e
Author: Glenn Morris <address@hidden>
Commit: Glenn Morris <address@hidden>
Ensure delayed-init custom variables get marked special
* lisp/custom.el (custom-reevaluate-setting):
If the variable has never been set, defvar it. (Bug#25770)
---
lisp/custom.el | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/lisp/custom.el b/lisp/custom.el
index 70b6839..7eaff45 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -764,9 +764,17 @@ Return non-nil if the `customized-value' property actually
changed."
Use the :set function to do so. This is useful for customizable options
that are defined before their standard value can really be computed.
E.g. dumped variables whose default depends on run-time information."
- (funcall (or (get symbol 'custom-set) 'set-default)
- symbol
- (eval (car (or (get symbol 'saved-value) (get symbol
'standard-value))))))
+ (let ((val (car (or (get symbol 'saved-value)
+ (get symbol 'standard-value)))))
+ (if (default-boundp symbol)
+ (funcall (or (get symbol 'custom-set) 'set-default) symbol (eval val))
+ ;; If it has never been set at all, defvar it so as to mark it
+ ;; special, etc (bug#25770). This ignores any :set function,
+ ;; but that is not supposed to be used for initialization anyway.
+ ;; Or we could move this branch to the start, then unconditionally
+ ;; call the custom-set branch.
+ (eval `(defvar ,symbol ,val)))))
+
;;; Custom Themes
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 96cea19: Ensure delayed-init custom variables get marked special,
Glenn Morris <=