Commit 96cea198 authored by Glenn Morris's avatar Glenn Morris

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)
parent 08c73cdc
......@@ -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)
(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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment