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).
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.
+
\f
* Changes in Emacs 28.1 on Non-Free Operating Systems
(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