emacs-diffs
[Top][All Lists]
Advanced

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

master f65402f: (backtrace-goto-source-functions): Make it a normal abno


From: Stefan Monnier
Subject: master f65402f: (backtrace-goto-source-functions): Make it a normal abnormal hook
Date: Sat, 13 Feb 2021 10:41:51 -0500 (EST)

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

    (backtrace-goto-source-functions): Make it a normal abnormal hook
    
    * lisp/emacs-lisp/backtrace.el (backtrace-goto-source-functions):
    Don't mark it as buffer-local any more.
    (backtrace-goto-source): Use `run-hook-with-args-until-success`.
    
    * lisp/emacs-lisp/edebug.el (edebug-pop-to-backtrace): Clarify that the
    hook is only intended to be modified buffer-locally.
---
 lisp/emacs-lisp/backtrace.el | 8 +++-----
 lisp/emacs-lisp/edebug.el    | 3 ++-
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/lisp/emacs-lisp/backtrace.el b/lisp/emacs-lisp/backtrace.el
index 3e1c329..ea70baa 100644
--- a/lisp/emacs-lisp/backtrace.el
+++ b/lisp/emacs-lisp/backtrace.el
@@ -190,7 +190,7 @@ This is commonly used to recompute `backtrace-frames'.")
 (defvar-local backtrace-print-function #'cl-prin1
   "Function used to print values in the current Backtrace buffer.")
 
-(defvar-local backtrace-goto-source-functions nil
+(defvar backtrace-goto-source-functions nil
   "Abnormal hook used to jump to the source code for the current frame.
 Each hook function is called with no argument, and should return
 non-nil if it is able to switch to the buffer containing the
@@ -638,10 +638,8 @@ content of the sexp."
          (source-available (plist-get (backtrace-frame-flags frame)
                                       :source-available)))
     (unless (and source-available
-                 (catch 'done
-                   (dolist (func backtrace-goto-source-functions)
-                     (when (funcall func)
-                       (throw 'done t)))))
+                 (run-hook-with-args-until-success
+                  'backtrace-goto-source-functions))
       (user-error "Source code location not known"))))
 
 (defun backtrace-help-follow-symbol (&optional pos)
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 394f470..cbf2d17 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -4247,7 +4247,8 @@ This should be a list of `edebug---frame' objects.")
   (pop-to-buffer edebug-backtrace-buffer)
   (unless (derived-mode-p 'backtrace-mode)
     (backtrace-mode)
-    (add-hook 'backtrace-goto-source-functions 
#'edebug--backtrace-goto-source))
+    (add-hook 'backtrace-goto-source-functions
+              #'edebug--backtrace-goto-source nil t))
   (setq edebug-instrumented-backtrace-frames
         (backtrace-get-frames 'edebug-debugger
                               :constructor #'edebug--make-frame)



reply via email to

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