emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 72ac446: * lisp/subr.el (remove-hook): Improve last change


From: Stefan Monnier
Subject: master 72ac446: * lisp/subr.el (remove-hook): Improve last change
Date: Fri, 23 Apr 2021 18:52:05 -0400 (EDT)

branch: master
commit 72ac4461676c49b7c580c40c2df10e02411fd320
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * lisp/subr.el (remove-hook): Improve last change
    
    Don't put a `hook--depth-alist` property if there isn't one already.
---
 lisp/subr.el | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index 6589faf..40ca934 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1920,9 +1920,9 @@ one will be removed."
       (when old-fun
         ;; Remove auxiliary depth info to avoid leaks (bug#46414)
         ;; and to avoid the list growing too long.
-        (put hook 'hook--depth-alist
-             (delq (assq old-fun (get hook 'hook--depth-alist))
-                   (get hook 'hook--depth-alist))))
+        (let* ((depths (get hook 'hook--depth-alist))
+               (di (assq old-fun depths)))
+          (when di (put hook 'hook--depth-alist (delq di depths)))))
       ;; 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)))
@@ -5018,7 +5018,7 @@ See also `with-eval-after-load'."
                      (funcall func)
                    (let ((lfn load-file-name)
                          ;; Don't use letrec, because equal (in
-                         ;; add/remove-hook) would get trapped in a cycle
+                         ;; add/remove-hook) could get trapped in a cycle
                          ;; (bug#46326).
                          (fun (make-symbol "eval-after-load-helper")))
                      (fset fun (lambda (file)
@@ -5607,7 +5607,7 @@ to deactivate this transient map, regardless of 
KEEP-PRED."
             (internal-pop-keymap map 'overriding-terminal-local-map)
             (remove-hook 'pre-command-hook clearfun)
             (when on-exit (funcall on-exit)))))
-    ;; Don't use letrec, because equal (in add/remove-hook) would get trapped
+    ;; Don't use letrec, because equal (in add/remove-hook) could get trapped
     ;; in a cycle. (bug#46326)
     (fset clearfun
           (lambda ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]