emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 674f276: Fix links in backtraces to work on advised


From: Gemini Lasswell
Subject: [Emacs-diffs] master 674f276: Fix links in backtraces to work on advised built-ins (Bug#25393)
Date: Mon, 27 Aug 2018 14:03:17 -0400 (EDT)

branch: master
commit 674f276c0ab3e9759d33f37971ef87f84a3b0683
Author: Gemini Lasswell <address@hidden>
Commit: Gemini Lasswell <address@hidden>

    Fix links in backtraces to work on advised built-ins (Bug#25393)
    
    * lisp/emacs-lisp/backtrace.el (backtrace--print-func-and-args): Make
    links to the original definition of advised functions.  Handle the
    case when the function slot of the backtrace frame contains the
    definition of a built-in function.
---
 lisp/emacs-lisp/backtrace.el | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/lisp/emacs-lisp/backtrace.el b/lisp/emacs-lisp/backtrace.el
index f13b43b..e82d4f5 100644
--- a/lisp/emacs-lisp/backtrace.el
+++ b/lisp/emacs-lisp/backtrace.el
@@ -34,6 +34,7 @@
 (eval-when-compile (require 'cl-lib))
 (eval-when-compile (require 'pcase))
 (eval-when-compile (require 'subr-x))        ; if-let
+(require 'find-func)
 (require 'help-mode)     ; Define `help-function-def' button type.
 (require 'lisp-mode)
 
@@ -735,11 +736,11 @@ Format it according to VIEW."
          (evald (backtrace-frame-evald frame))
          (fun   (backtrace-frame-fun frame))
          (args  (backtrace-frame-args frame))
-         (def   (and (symbolp fun) (fboundp fun) (symbol-function fun)))
+         (def   (find-function-advised-original fun))
          (fun-file (or (symbol-file fun 'defun)
-                            (and (subrp def)
-                                 (not (eq 'unevalled (cdr (subr-arity def))))
-                                 (find-lisp-object-file-name fun def))))
+                       (and (subrp def)
+                            (not (eq 'unevalled (cdr (subr-arity def))))
+                            (find-lisp-object-file-name fun def))))
          (fun-pt (point)))
     (cond
      ((and evald (not debugger-stack-frame-as-list))
@@ -762,7 +763,8 @@ Format it according to VIEW."
         (insert (backtrace--print-to-string fun-and-args)))
       (cl-incf fun-pt)))
     (when fun-file
-      (make-text-button fun-pt (+ fun-pt (length (symbol-name fun)))
+      (make-text-button fun-pt (+ fun-pt
+                                  (length (backtrace--print-to-string fun)))
                         :type 'help-function-def
                         'help-args (list fun fun-file)))
     ;; After any frame that uses eval-buffer, insert a comment that



reply via email to

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