From: Stefan Monnier Date: Tue, 11 Apr 2006 17:05:16 +0000 (+0000) Subject: (unload-feature): A bit of sanity check of X-Git-Tag: emacs-pretest-22.0.90~3214 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ab215e7246b0fd5fab2322a708340d6f2c9e455d;p=emacs.git (unload-feature): A bit of sanity check of load-history entries. Cancel timer-vars before unbinding them. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 747781efcb6..52e2549235c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2006-04-11 Stefan Monnier + * loadhist.el (unload-feature): A bit of sanity check of + load-history entries. Cancel timer-vars before unbinding them. + * hexl.el (hexl-isearch-search-function): Fix regexp-building code to quote special chars, and make the trick work on the hex part of the buffer as well. diff --git a/lisp/loadhist.el b/lisp/loadhist.el index dc0e4bdc3a2..635059f93e5 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -32,6 +32,8 @@ ;;; Code: +(eval-when-compile (require 'cl)) + (defun feature-symbols (feature) "Return the file and list of definitions associated with FEATURE. The value is actually the element of `load-history' @@ -207,23 +209,29 @@ such as redefining an Emacs function." (elp-restore-function elt)))) (dolist (x unload-hook-features-list) (if (consp x) - (cond + (case (car x) ;; Remove any feature names that this file provided. - ((eq (car x) 'provide) + (provide (setq features (delq (cdr x) features))) - ((eq (car x) 'defun) + (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)))))))) + (if aload + (fset fun (cons 'autoload aload)) + (fmakunbound fun)))))) + (require nil) + (t (message "Unexpected element %s in load-history" x))) ;; Kill local values as much as possible. (dolist (buf (buffer-list)) (with-current-buffer buf + (if (and (boundp x) (timerp (symbol-value x))) + (cancel-timer (symbol-value x))) (kill-local-variable x))) + (if (and (boundp x) (timerp (symbol-value x))) + (cancel-timer (symbol-value x))) ;; Get rid of the default binding if we can. (unless (local-variable-if-set-p x) (makunbound x)))) @@ -232,5 +240,5 @@ such as redefining an Emacs function." (provide 'loadhist) -;;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 +;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 ;;; loadhist.el ends here