302 |
(debugger-make-xrefs)) |
(debugger-make-xrefs)) |
303 |
|
|
304 |
(defun debugger-make-xrefs (&optional buffer) |
(defun debugger-make-xrefs (&optional buffer) |
305 |
"Attach cross-references to symbol names in the `*Backtrace*' buffer." |
"Attach cross-references to function names in the `*Backtrace*' buffer." |
306 |
(interactive "b") |
(interactive "b") |
307 |
(save-excursion |
(save-excursion |
308 |
(set-buffer (or buffer (current-buffer))) |
(set-buffer (or buffer (current-buffer))) |
353 |
;; Scan the new part of the backtrace, inserting xrefs. |
;; Scan the new part of the backtrace, inserting xrefs. |
354 |
(goto-char (point-min)) |
(goto-char (point-min)) |
355 |
(while (progn |
(while (progn |
356 |
|
(goto-char (+ (point) 2)) |
357 |
(skip-syntax-forward "^w_") |
(skip-syntax-forward "^w_") |
358 |
(not (eobp))) |
(not (eobp))) |
359 |
(let* ((beg (point)) |
(let* ((beg (point)) |
365 |
(goto-char beg) |
(goto-char beg) |
366 |
;; help-xref-button needs to operate on something matched |
;; help-xref-button needs to operate on something matched |
367 |
;; by a regexp, so set that up for it. |
;; by a regexp, so set that up for it. |
368 |
(re-search-forward "\\(\\(\\sw\\|\\s_\\)+\\)") |
(re-search-forward "\\(\\sw\\|\\s_\\)+") |
369 |
(help-xref-button 1 'help-function-def sym file))) |
(help-xref-button 0 'help-function-def sym file))) |
370 |
(forward-line 1)) |
(forward-line 1)) |
371 |
(widen)) |
(widen)) |
372 |
(setq debugger-previous-backtrace (buffer-string)))) |
(setq debugger-previous-backtrace (buffer-string)))) |