[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: unload-feature is broken
From: |
Richard Stallman |
Subject: |
Re: unload-feature is broken |
Date: |
Wed, 13 Apr 2005 01:02:47 -0400 |
Does this fix it?
*** loadhist.el 02 Jan 2005 18:45:48 -0500 1.30
--- loadhist.el 12 Apr 2005 22:15:08 -0400
***************
*** 194,222 ****
(dolist (elt (cdr unload-hook-features-list))
(if (symbolp elt)
(elp-restore-function elt))))
! (mapc
! (lambda (x)
! (cond ((stringp x) nil)
! ((consp x)
! ;; Remove any feature names that this file provided.
! (if (eq (car x) 'provide)
! (setq features (delq (cdr x) features)))
! (when (eq (car x) 'defvar)
! ;; Kill local values as much as possible.
! (dolist (buf (buffer-list))
! (with-current-buffer buf
! (kill-local-variable (cdr x))))
! ;; Get rid of the default binding if we can.
! (unless (local-variable-if-set-p (cdr x))
! (makunbound (cdr x)))))
! (t
! (when (fboundp x)
! (if (fboundp 'ad-unadvise)
! (ad-unadvise x))
! (fmakunbound x)
! (let ((aload (get x 'autoload)))
! (if aload (fset x (cons 'autoload aload))))))))
! (cdr unload-hook-features-list))
;; Delete the load-history element for this file.
(let ((elt (assoc file load-history)))
(setq load-history (delq elt load-history)))))
--- 194,220 ----
(dolist (elt (cdr unload-hook-features-list))
(if (symbolp elt)
(elp-restore-function elt))))
! (dolist (x (cdr unload-hook-features-list))
! (when (consp x)
! ;; Remove any feature names that this file provided.
! (if (eq (car x) 'provide)
! (setq features (delq (cdr x) features)))
! (when (eq (car x) 'defvar)
! ;; Kill local values as much as possible.
! (dolist (buf (buffer-list))
! (with-current-buffer buf
! (kill-local-variable (cdr x))))
! ;; Get rid of the default binding if we can.
! (unless (local-variable-if-set-p (cdr x))
! (makunbound (cdr x))))
! (when (eq (car x) 'defun)
! (let ((fun (cdr x)))
! (when (fboundp fun)
! (if (fboundp 'ad-unadvise)
! (ad-unadvise fun))
! (fmakunbound fun)
! (let ((aload (get fun 'autoload)))
! (if aload (fset fun (cons 'autoload aload)))))))))
;; Delete the load-history element for this file.
(let ((elt (assoc file load-history)))
(setq load-history (delq elt load-history)))))