emacs-diffs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]