summaryrefslogtreecommitdiff
path: root/lisp/loadhist.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2006-04-11 17:05:16 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2006-04-11 17:05:16 +0000
commitab215e7246b0fd5fab2322a708340d6f2c9e455d (patch)
tree18b66888800fb7bf57658e662dc904cf65c3ff71 /lisp/loadhist.el
parent37dc47675c697836b29fe203efb081423c0d0318 (diff)
(unload-feature): A bit of sanity check of
load-history entries. Cancel timer-vars before unbinding them.
Diffstat (limited to 'lisp/loadhist.el')
-rw-r--r--lisp/loadhist.el22
1 files changed, 15 insertions, 7 deletions
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