From 8adc3672ac1b2fb90d142cfe2a1a74d36e33b41b Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 22 Feb 2022 22:52:40 -0500 Subject: [PATCH] (add-hook): Fix regression * lisp/subr.el (add-hook): When the hook has no local part yet, don't set `local` to t, so we set the right part of the depth-sym. (remove-hook): Don't modify the depth alist by side-effect since I'm not completely sure it's safe. --- lisp/subr.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index 1b9b67b7054..eb9af0b36da 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1905,7 +1905,9 @@ performance impact when running `add-hook' and `remove-hook'." (set (make-local-variable hook) (list t))) ;; Detect the case where make-local-variable was used on a hook ;; and do what we used to do. - (unless (and (consp (symbol-value hook)) (memq t (symbol-value hook))) + (when (and (local-variable-if-set-p hook) + (not (and (consp (symbol-value hook)) + (memq t (symbol-value hook))))) (setq local t))) (let ((hook-value (if local (symbol-value hook) (default-value hook)))) ;; If the hook value is a single function, turn it into a list. @@ -2020,7 +2022,7 @@ one will be removed." (when di (setf (if local (symbol-value depth-sym) (default-value depth-sym)) - (delq di depth-alist))))) + (remq di depth-alist))))) ;; If the function is on the global hook, we need to shadow it locally ;;(when (and local (member function (default-value hook)) ;; (not (member (cons 'not function) hook-value))) -- 2.39.5