Mercurial > emacs
changeset 75797:1c398694f7b2
(unload-feature): Handle (t . SYMBOL) entries in load history.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 11 Feb 2007 11:11:09 +0000 |
parents | 9238d5453f3c |
children | 8496bd7b062a |
files | lisp/loadhist.el |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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))