# HG changeset patch # User Stefan Monnier # Date 1144775116 0 # Node ID 3fc0524ae3187d4eb031a153eb3166aec53d1b56 # Parent b43946bd0c38a89cf70b864ca8d52a1bfd2b5b33 (unload-feature): A bit of sanity check of load-history entries. Cancel timer-vars before unbinding them. diff -r b43946bd0c38 -r 3fc0524ae318 lisp/ChangeLog --- a/lisp/ChangeLog Tue Apr 11 16:48:17 2006 +0000 +++ b/lisp/ChangeLog Tue Apr 11 17:05:16 2006 +0000 @@ -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 -r b43946bd0c38 -r 3fc0524ae318 lisp/loadhist.el --- a/lisp/loadhist.el Tue Apr 11 16:48:17 2006 +0000 +++ b/lisp/loadhist.el Tue Apr 11 17:05:16 2006 +0000 @@ -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 @@ (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 @@ (provide 'loadhist) -;;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 +;; arch-tag: 70bb846a-c413-4f01-bf88-78dba4ac0798 ;;; loadhist.el ends here