diff options
author | Richard M. Stallman <rms@gnu.org> | 2002-09-29 03:34:12 +0000 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2002-09-29 03:34:12 +0000 |
commit | 3147ee6dbce06908d914c41cee3d79b086062c0d (patch) | |
tree | dafe4efcf9dca890eb84286ba10ea69036ea8eff /lisp/loadhist.el | |
parent | ebaa33494bec61deaf0d935745fff13cee38d473 (diff) | |
download | emacs-3147ee6dbce06908d914c41cee3d79b086062c0d.tar.gz |
(unload-feature): When undefining a variable, delete its buffer-local bindings.
Diffstat (limited to 'lisp/loadhist.el')
-rw-r--r-- | lisp/loadhist.el | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lisp/loadhist.el b/lisp/loadhist.el index 00597615c2d..e609596e4a8 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -167,8 +167,14 @@ is nil, raise an error." ;; Remove any feature names that this file provided. (if (eq (car x) 'provide) (setq features (delq (cdr x) features))) - (if (eq (car x) 'defvar) - (makunbound (cdr x)))) + (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) |