aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard M. Stallman2005-07-10 17:06:33 +0000
committerRichard M. Stallman2005-07-10 17:06:33 +0000
commit245f0222c60fd267bef3f2db1b1fc4eeda60b7eb (patch)
tree36b2225430f9a53869744321fc3bbe1618107a30
parent3f39f99678a85583ed5217ddc236afaae54d4357 (diff)
downloademacs-245f0222c60fd267bef3f2db1b1fc4eeda60b7eb.tar.gz
emacs-245f0222c60fd267bef3f2db1b1fc4eeda60b7eb.zip
(debug-help-follow): New function.
(debugger-mode-map): Use that instead of help-follow. (debugger-setup-buffer): Use eval-buffer-list to handle eval-buffer frames.
-rw-r--r--lisp/emacs-lisp/debug.el48
1 files changed, 34 insertions, 14 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 76d86985079..11909cf44c0 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -312,18 +312,17 @@ That buffer should be current already."
312 ;; After any frame that uses eval-buffer, 312 ;; After any frame that uses eval-buffer,
313 ;; insert a line that states the buffer position it's reading at. 313 ;; insert a line that states the buffer position it's reading at.
314 (save-excursion 314 (save-excursion
315 (while (re-search-forward "^ eval-buffer(" nil t) 315 (let ((tem eval-buffer-list))
316 (end-of-line) 316 (while (and tem
317 (insert (format " ; Reading at buffer position %d" 317 (re-search-forward "^ eval-\\(buffer\\|region\\)(" nil t))
318 (with-current-buffer 318 (end-of-line)
319 (or (nth 2 (backtrace-frame (debugger-frame-number))) 319 (insert (format " ; Reading at buffer position %d"
320 debugger-old-buffer) 320 ;; This will get the wrong result
321 (point))))) 321 ;; if there are two nested eval-region calls
322 (while (re-search-forward "^ eval-region(" nil t) 322 ;; for the same buffer. That's not a very useful case.
323 (end-of-line) 323 (with-current-buffer (car tem)
324 (insert (format " ; Reading at buffer position %d" 324 (point))))
325 (with-current-buffer debugger-old-buffer 325 (pop tem))))
326 (point))))))
327 (debugger-make-xrefs)) 326 (debugger-make-xrefs))
328 327
329(defun debugger-make-xrefs (&optional buffer) 328(defun debugger-make-xrefs (&optional buffer)
@@ -598,10 +597,10 @@ Applies to the frame whose line point is on in the backtrace."
598 (define-key map "e" 'debugger-eval-expression) 597 (define-key map "e" 'debugger-eval-expression)
599 (define-key map " " 'next-line) 598 (define-key map " " 'next-line)
600 (define-key map "R" 'debugger-record-expression) 599 (define-key map "R" 'debugger-record-expression)
601 (define-key map "\C-m" 'help-follow) 600 (define-key map "\C-m" 'debug-help-follow)
602 (define-key map [mouse-2] 'push-button) 601 (define-key map [mouse-2] 'push-button)
603 map)) 602 map))
604 603
605(defcustom debugger-record-buffer "*Debugger-record*" 604(defcustom debugger-record-buffer "*Debugger-record*"
606 "*Buffer name for expression values, for \\[debugger-record-expression]." 605 "*Buffer name for expression values, for \\[debugger-record-expression]."
607 :type 'string 606 :type 'string
@@ -627,6 +626,27 @@ Applies to the frame whose line point is on in the backtrace."
627 (buffer-substring (line-beginning-position 0) 626 (buffer-substring (line-beginning-position 0)
628 (line-end-position 0))))) 627 (line-end-position 0)))))
629 628
629(defun debug-help-follow (&optional pos)
630 "Follow cross-reference at POS, defaulting to point.
631
632For the cross-reference format, see `help-make-xrefs'."
633 (interactive "d")
634 (require 'help-mode)
635 (unless pos
636 (setq pos (point)))
637 (unless (push-button pos)
638 ;; check if the symbol under point is a function or variable
639 (let ((sym
640 (intern
641 (save-excursion
642 (goto-char pos) (skip-syntax-backward "w_")
643 (buffer-substring (point)
644 (progn (skip-syntax-forward "w_")
645 (point)))))))
646 (when (or (boundp sym) (fboundp sym) (facep sym))
647 (switch-to-buffer-other-window (generate-new-buffer "*Help*"))
648 (help-do-xref pos #'help-xref-interned (list sym))))))
649
630(put 'debugger-mode 'mode-class 'special) 650(put 'debugger-mode 'mode-class 'special)
631 651
632(defun debugger-mode () 652(defun debugger-mode ()