]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix unload+reload of files using `custom-initialize-delay` (bug#47072)
authorStefan Monnier <monnier@iro.umontreal.ca>
Thu, 22 Apr 2021 13:32:04 +0000 (09:32 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Thu, 22 Apr 2021 13:32:04 +0000 (09:32 -0400)
* lisp/custom.el (custom-initialize-delay): Don't delay if
`custom-delayed-init-variables` has already been processed.
* lisp/startup.el (command-line): Mark `custom-delayed-init-variables`
as processed.

lisp/custom.el
lisp/startup.el

index 2c9eadbd479af246d69e752f9d230fad138137d6..614f8cf822d0374d8fbc6a2242cebdcef06c987a 100644 (file)
@@ -117,9 +117,10 @@ For the standard setting, use `set-default'."
        (set-default symbol (eval exp)))))))
 
 (defvar custom-delayed-init-variables nil
-  "List of variables whose initialization is pending.")
+  "List of variables whose initialization is pending until startup.
+Once this list has been processed, this var is set to a non-list value.")
 
-(defun custom-initialize-delay (symbol _value)
+(defun custom-initialize-delay (symbol value)
   "Delay initialization of SYMBOL to the next Emacs start.
 This is used in files that are preloaded (or for autoloaded
 variables), so that the initialization is done in the run-time
@@ -133,7 +134,11 @@ the :set function."
   ;; This seemed to be at least as good as setting it to an arbitrary
   ;; value like nil (evaluating `value' is not an option because it
   ;; may have undesirable side-effects).
-  (push symbol custom-delayed-init-variables))
+  (if (listp custom-delayed-init-variables)
+      (push symbol custom-delayed-init-variables)
+    ;; In case this is called after startup, there is no "later" to which to
+    ;; delay it, so initialize it "normally" (bug#47072).
+    (custom-initialize-reset symbol value)))
 
 (defun custom-declare-variable (symbol default doc &rest args)
   "Like `defcustom', but SYMBOL and DEFAULT are evaluated as normal arguments.
index 4d4c65e6c41c91d50902b8568cc4a725cf0e00f3..c1267274d927408d287431e9fbc48d701b80b023 100644 (file)
@@ -1175,7 +1175,7 @@ please check its value")
         ;; are dependencies between them.
         (nreverse custom-delayed-init-variables))
   (mapc #'custom-reevaluate-setting custom-delayed-init-variables)
-  (setq custom-delayed-init-variables nil)
+  (setq custom-delayed-init-variables t)
 
   ;; Warn for invalid user name.
   (when init-file-user