Mercurial > emacs
changeset 61720:314c959fa176
(unload-feature): Don't remove a function from hooks if it is about to
be restored to an autoload . Remove functions that will become
unbound from auto-mode-alist. Simplify the code.
author | Lute Kamstra <lute@gnu.org> |
---|---|
date | Thu, 21 Apr 2005 21:36:24 +0000 |
parents | 05723b20cc75 |
children | 2e5e4800dc8a |
files | lisp/loadhist.el |
diffstat | 1 files changed, 23 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/loadhist.el Thu Apr 21 21:29:34 2005 +0000 +++ b/lisp/loadhist.el Thu Apr 21 21:36:24 2005 +0000 @@ -188,27 +188,34 @@ (string-match "-hooks?\\'" (symbol-name x))) (memq x unload-feature-special-hooks))) ; Known abnormal hooks etc. (dolist (y unload-hook-features-list) - (when (eq (car-safe y) 'defun) - (remove-hook x (cdr y)))))))) + (when (and (eq (car-safe y) 'defun) + (not (get (cdr y) 'autoload))) + (remove-hook x (cdr y))))))) + ;; Remove any feature-symbols from auto-mode-alist as well. + (dolist (y unload-hook-features-list) + (when (and (eq (car-safe y) 'defun) + (not (get (cdr y) 'autoload))) + (setq auto-mode-alist + (rassq-delete-all (cdr y) auto-mode-alist))))) (when (fboundp 'elp-restore-function) ; remove ELP stuff first (dolist (elt unload-hook-features-list) (when (symbolp elt) (elp-restore-function elt)))) (dolist (x unload-hook-features-list) (if (consp x) - (progn - ;; Remove any feature names that this file provided. - (when (eq (car x) 'provide) - (setq features (delq (cdr x) features))) - (when (eq (car x) 'defun) - (let ((fun (cdr x))) - (when (fboundp fun) - (when (fboundp 'ad-unadvise) - (ad-unadvise fun)) - (fmakunbound fun) - (let ((aload (get fun 'autoload))) - (when aload - (fset fun (cons 'autoload aload)))))))) + (cond + ;; Remove any feature names that this file provided. + ((eq (car x) 'provide) + (setq features (delq (cdr x) features))) + ((eq (car x) 'defun) + (let ((fun (cdr x))) + (when (fboundp fun) + (when (fboundp 'ad-unadvise) + (ad-unadvise fun)) + (fmakunbound fun) + (let ((aload (get fun 'autoload))) + (when aload + (fset fun (cons 'autoload aload)))))))) ;; Kill local values as much as possible. (dolist (buf (buffer-list)) (with-current-buffer buf @@ -217,8 +224,7 @@ (unless (local-variable-if-set-p x) (makunbound x)))) ;; Delete the load-history element for this file. - (let ((elt (assoc file load-history))) - (setq load-history (delq elt load-history))))) + (setq load-history (delq (assoc file load-history) load-history)))) (provide 'loadhist)