diff options
author | Sam Steingold <sds@gnu.org> | 2001-10-31 19:32:26 +0000 |
---|---|---|
committer | Sam Steingold <sds@gnu.org> | 2001-10-31 19:32:26 +0000 |
commit | cc1bde62e71e44d23f4dbda4b30109193daf2866 (patch) | |
tree | 2763e831cc609d12df92c1fd9c55be3e8f982b50 /lisp/emacs-lisp | |
parent | 05b6e46ca62a8d82fcdf42bbc9b36bd912d9e0c3 (diff) | |
download | emacs-cc1bde62e71e44d23f4dbda4b30109193daf2866.tar.gz emacs-cc1bde62e71e44d23f4dbda4b30109193daf2866.tar.bz2 emacs-cc1bde62e71e44d23f4dbda4b30109193daf2866.zip |
easy source access from the *debugger* buffer
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/debug.el | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index f21fdc5bfb5..49303ff6293 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -267,7 +267,20 @@ That buffer should be current already." (prin1 (if (eq (car debugger-args) 'nil) (cdr debugger-args) debugger-args) (current-buffer)) - (insert ?\n)))) + (insert ?\n))) + (debugger-make-xrefs)) + +(defun debugger-make-xrefs (&optional buffer) + "Create cross-references in the debugger buffer." + (interactive "b") + (save-excursion + (set-buffer (or buffer (current-buffer))) + (goto-char (point-min)) + (let ((buffer-read-only nil)) + (while (re-search-forward "^[* ] (?\\(\\(\\sw\\|\\s_\\)+\\)" nil t) + (let* ((sym (intern-soft (match-string 1))) + (file (symbol-file sym))) + (when file (help-xref-button 1 'help-function-def sym file))))))) (defun debugger-step-through () "Proceed, stepping through subexpressions of this expression. @@ -441,8 +454,7 @@ Applies to the frame whose line point is on in the backtrace." (debugger-env-macro (eval-expression exp))) (defvar debugger-mode-map nil) -(if debugger-mode-map - nil +(unless debugger-mode-map (let ((loop ? )) (setq debugger-mode-map (make-keymap)) (suppress-keymap debugger-mode-map) @@ -459,6 +471,8 @@ Applies to the frame whose line point is on in the backtrace." (define-key debugger-mode-map "e" 'debugger-eval-expression) (define-key debugger-mode-map " " 'next-line) (define-key debugger-mode-map "R" 'debugger-record-expression) + (define-key debugger-mode-map [RET] 'help-follow) + (define-key debugger-mode-map [mouse-2] 'push-button) )) |