[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master af5f377 08/19: Add link in backtraces to position i
From: |
Gemini Lasswell |
Subject: |
[Emacs-diffs] master af5f377 08/19: Add link in backtraces to position in buffer being evaluated (bug#14081) |
Date: |
Fri, 3 Aug 2018 13:32:55 -0400 (EDT) |
branch: master
commit af5f3771fd49bba579d3a2047bab1b278317eb5f
Author: Gemini Lasswell <address@hidden>
Commit: Gemini Lasswell <address@hidden>
Add link in backtraces to position in buffer being evaluated (bug#14081)
* lisp/emacs-lisp/backtrace.el (backtrace-frame): Add buffer field.
(backtrace-get-frames): Set buffer field of frame.
(backtrace-buffer-pos): New button type.
(backtrace--pop-to-buffer-pos): New function.
(backtrace--print-func-and-args): Create a button for the buffer
position if it is set.
---
lisp/emacs-lisp/backtrace.el | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/lisp/emacs-lisp/backtrace.el b/lisp/emacs-lisp/backtrace.el
index bec57f2..aac43fe 100644
--- a/lisp/emacs-lisp/backtrace.el
+++ b/lisp/emacs-lisp/backtrace.el
@@ -65,7 +65,7 @@ guaranteed."
(cl-defstruct
(backtrace-frame
(:constructor backtrace-make-frame))
- evald fun args flags locals pos)
+ evald fun args flags locals buffer pos)
(cl-defun backtrace-get-frames
(&optional base &key (constructor #'backtrace-make-frame))
@@ -102,9 +102,26 @@ frames before its nearest activation frame are discarded."
;; eval-region calls for the same buffer. That's not a very
;; useful case.
(with-current-buffer (pop eval-buffers)
+ (setf (backtrace-frame-buffer frame) (current-buffer))
(setf (backtrace-frame-pos frame) (point))))))
frames))
+;; Button definition for jumping to a buffer position.
+
+(define-button-type 'backtrace-buffer-pos
+ 'action #'backtrace--pop-to-buffer-pos
+ 'help-echo "mouse-2, RET: Show reading position")
+
+(defun backtrace--pop-to-buffer-pos (button)
+ "Pop to the buffer and position for the BUTTON at point."
+ (let* ((buffer (button-get button 'backtrace-buffer))
+ (pos (button-get button 'backtrace-pos)))
+ (if (buffer-live-p buffer)
+ (progn
+ (pop-to-buffer buffer)
+ (goto-char (max (point-min) (min (point-max) pos))))
+ (message "Buffer has been killed"))))
+
;; Font Locking support
(defconst backtrace--font-lock-keywords
@@ -685,8 +702,12 @@ Format it according to VIEW."
;; After any frame that uses eval-buffer, insert a comment that
;; states the buffer position it's reading at.
(when (backtrace-frame-pos frame)
- (insert (format " ; Reading at buffer position %d"
- (backtrace-frame-pos frame))))
+ (insert " ; Reading at ")
+ (let ((pos (point)))
+ (insert (format "buffer position %d" (backtrace-frame-pos frame)))
+ (make-button pos (point) :type 'backtrace-buffer-pos
+ 'backtrace-buffer (backtrace-frame-buffer frame)
+ 'backtrace-pos (backtrace-frame-pos frame))))
(insert "\n")
(put-text-property beg (point) 'backtrace-section 'func)))
- [Emacs-diffs] master updated (e65ec81 -> da0054c), Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 9aa9d79 07/19: Add links in backtraces to functions written in C (bug#25393), Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 5b50fa5 04/19: Always make buttons from function names in backtraces, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 2ede75c 10/19: Change keybinding for backtrace-collapse from '=' to '-', Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 8a76209 02/19: Add methods for strings to cl-print, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master d6b364e 05/19: Lazily print backtrace frame local variables, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master eba16e5 01/19: Support ellipsis expansion in cl-print, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master af5f377 08/19: Add link in backtraces to position in buffer being evaluated (bug#14081),
Gemini Lasswell <=
- [Emacs-diffs] master 95b2ab3 18/19: Fix some documentation formatting nits, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 58be6cb 17/19: Fix typo in edebug-backtrace-hide-instrumentation's docstring., Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master ca98377 14/19: Add new commands to Edebug backtraces, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master bb9de87 06/19: Add prefix argument to backtrace-toggle-print-circle, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 9879151 12/19: * lisp/emacs-lisp/debug.el (debugger-mode-map): Use easy-menu-define., Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 1459ad2 13/19: Add a menu for backtrace-mode, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 3cd6a68 16/19: Give two backtrace-mode commands better names, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 83af893 15/19: Move 'backtrace' from subr.el to backtrace.el, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master 04cc0b6 09/19: Add more tests for backtrace-mode, Gemini Lasswell, 2018/08/03
- [Emacs-diffs] master a3ba34a 11/19: Add new command to expand all "..."s in a backtrace frame, Gemini Lasswell, 2018/08/03