# HG changeset patch # User Richard M. Stallman # Date 1171192269 0 # Node ID 1c398694f7b26f76353b8cfc7c77c92d090a22d1 # Parent 9238d5453f3c525b20ab11cc58e39f4f7646c706 (unload-feature): Handle (t . SYMBOL) entries in load history. diff -r 9238d5453f3c -r 1c398694f7b2 lisp/loadhist.el --- a/lisp/loadhist.el Sun Feb 11 07:14:38 2007 +0000 +++ b/lisp/loadhist.el Sun Feb 11 11:11:09 2007 +0000 @@ -173,6 +173,9 @@ (prin1-to-string dependents) file)))) (let* ((unload-hook-features-list (feature-symbols feature)) (file (pop unload-hook-features-list)) + ;; If non-nil, this is a symbol for which we should + ;; restore a previous autoload if possible. + restore-autoload (unload-hook (intern-soft (concat (symbol-name feature) "-unload-hook")))) ;; Try to avoid losing badly when hooks installed in critical @@ -209,6 +212,7 @@ (dolist (elt unload-hook-features-list) (when (symbolp elt) (elp-restore-function elt)))) + (dolist (x unload-hook-features-list) (if (consp x) (case (car x) @@ -221,10 +225,14 @@ (when (fboundp 'ad-unadvise) (ad-unadvise fun)) (let ((aload (get fun 'autoload))) - (if aload + (if (and aload (eq fun restore-autoload)) (fset fun (cons 'autoload aload)) (fmakunbound fun)))))) - ((t require defface) nil) + ;; (t . SYMBOL) comes before (defun . SYMBOL) + ;; and says we should restore SYMBOL's autoload + ;; when we undefine it. + ((t) (setq restore-autoload (cdr x))) + ((require defface) nil) (t (message "Unexpected element %s in load-history" x))) ;; Kill local values as much as possible. (dolist (buf (buffer-list))