From: Stefan Monnier Date: Wed, 23 Feb 2022 03:52:40 +0000 (-0500) Subject: (add-hook): Fix regression X-Git-Tag: emacs-29.0.90~2147 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8adc3672ac1b2fb90d142cfe2a1a74d36e33b41b;p=emacs.git (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. --- 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)))