unload-feature: Handle local hooks (bug#5293)
Buffer-local hooks were introduced in
1994-09-30T20:47:13+00:00!rms@gnu.org
0e4d378b32
(add-hook): Initialize default value and local value.
but 'unload-feature' has not been updated to handle them.
* lisp/loadhist.el (unload-feature): Handle local hooks (bug#5293).
This commit is contained in:
parent
0e9e36747f
commit
5c266a71c1
2 changed files with 12 additions and 0 deletions
3
etc/NEWS
3
etc/NEWS
|
@ -1748,6 +1748,9 @@ to lexical binding, where dynamic (special) variables bound in one
|
|||
file can affect code in another. For details, see the manual section
|
||||
'(Elisp) Converting to Lexical Binding'.
|
||||
|
||||
---
|
||||
** 'unload-feature' now also tries to undo additions to buffer-local hooks.
|
||||
|
||||
|
||||
* Changes in Emacs 28.1 on Non-Free Operating Systems
|
||||
|
||||
|
|
|
@ -300,6 +300,15 @@ something strange, such as redefining an Emacs function."
|
|||
(memq x unload-feature-special-hooks)))
|
||||
(dolist (func removables)
|
||||
(remove-hook x func)))))
|
||||
(save-current-buffer
|
||||
(dolist (buffer (buffer-list))
|
||||
(pcase-dolist (`(,sym . ,val) (buffer-local-variables buffer))
|
||||
(when (or (and (consp val)
|
||||
(string-match "-hooks?\\'" (symbol-name sym)))
|
||||
(memq sym unload-feature-special-hooks))
|
||||
(set-buffer buffer)
|
||||
(dolist (func removables)
|
||||
(remove-hook sym func t))))))
|
||||
;; Remove any feature-symbols from auto-mode-alist as well.
|
||||
(dolist (func removables)
|
||||
(setq auto-mode-alist
|
||||
|
|
Loading…
Add table
Reference in a new issue