From: Glenn Morris Date: Tue, 21 Feb 2017 02:30:40 +0000 (-0800) Subject: Ensure delayed-init custom variables get marked special X-Git-Tag: emacs-26.0.90~751 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=96cea19842b577eb4f2e057d702aea54d736233e;p=emacs.git 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) --- diff --git a/lisp/custom.el b/lisp/custom.el index 70b6839db3d..7eaff450c5d 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