Mercurial > emacs
comparison lisp/emacs-lisp/debug.el @ 90201:fbb2bea03df9
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-69
Merge from emacs--cvs-trunk--0
Patches applied:
* emacs--cvs-trunk--0 (patch 474-484)
- Update from CVS
- Merge from gnus--rel--5.10
* gnus--rel--5.10 (patch 88-91)
- Merge from emacs--cvs-trunk--0
- Update FSF's address in GPL notices
- Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Thu, 14 Jul 2005 08:02:00 +0000 |
parents | f9a65d7ebd29 193c8e4fb4d1 |
children | 2d92f5c9d6ae |
comparison
equal
deleted
inserted
replaced
90200:f9a65d7ebd29 | 90201:fbb2bea03df9 |
---|---|
148 (debugger-outer-last-nonmenu-event last-nonmenu-event) | 148 (debugger-outer-last-nonmenu-event last-nonmenu-event) |
149 (debugger-outer-last-event-frame last-event-frame) | 149 (debugger-outer-last-event-frame last-event-frame) |
150 (debugger-outer-standard-input standard-input) | 150 (debugger-outer-standard-input standard-input) |
151 (debugger-outer-standard-output standard-output) | 151 (debugger-outer-standard-output standard-output) |
152 (debugger-outer-inhibit-redisplay inhibit-redisplay) | 152 (debugger-outer-inhibit-redisplay inhibit-redisplay) |
153 (debugger-outer-cursor-in-echo-area cursor-in-echo-area)) | 153 (debugger-outer-cursor-in-echo-area cursor-in-echo-area) |
154 (debugger-with-timeout-suspend (with-timeout-suspend))) | |
154 ;; Set this instead of binding it, so that `q' | 155 ;; Set this instead of binding it, so that `q' |
155 ;; will not restore it. | 156 ;; will not restore it. |
156 (setq overriding-terminal-local-map nil) | 157 (setq overriding-terminal-local-map nil) |
157 ;; Don't let these magic variables affect the debugger itself. | 158 ;; Don't let these magic variables affect the debugger itself. |
158 (let ((last-command nil) this-command track-mouse | 159 (let ((last-command nil) this-command track-mouse |
233 ;; here would cause flashing. | 234 ;; here would cause flashing. |
234 ;; Use quit-window rather than bury-buffer to quieten | 235 ;; Use quit-window rather than bury-buffer to quieten |
235 ;; Drew Adams. --Stef | 236 ;; Drew Adams. --Stef |
236 (quit-window)))) | 237 (quit-window)))) |
237 (kill-buffer debugger-buffer)) | 238 (kill-buffer debugger-buffer)) |
239 (with-timeout-unsuspend debugger-with-timeout-suspend) | |
238 (set-match-data debugger-outer-match-data))) | 240 (set-match-data debugger-outer-match-data))) |
239 ;; Put into effect the modified values of these variables | 241 ;; Put into effect the modified values of these variables |
240 ;; in case the user set them with the `e' command. | 242 ;; in case the user set them with the `e' command. |
241 (setq load-read-function debugger-outer-load-read-function) | 243 (setq load-read-function debugger-outer-load-read-function) |
242 (setq overriding-local-map debugger-outer-overriding-local-map) | 244 (setq overriding-local-map debugger-outer-overriding-local-map) |
310 (current-buffer)) | 312 (current-buffer)) |
311 (insert ?\n))) | 313 (insert ?\n))) |
312 ;; After any frame that uses eval-buffer, | 314 ;; After any frame that uses eval-buffer, |
313 ;; insert a line that states the buffer position it's reading at. | 315 ;; insert a line that states the buffer position it's reading at. |
314 (save-excursion | 316 (save-excursion |
315 (while (re-search-forward "^ eval-buffer(" nil t) | 317 (let ((tem eval-buffer-list)) |
316 (end-of-line) | 318 (while (and tem |
317 (insert (format "\n ;;; Reading at buffer position %d" | 319 (re-search-forward "^ eval-\\(buffer\\|region\\)(" nil t)) |
318 (with-current-buffer (nth 2 (backtrace-frame (debugger-frame-number))) | 320 (end-of-line) |
319 (point)))))) | 321 (insert (format " ; Reading at buffer position %d" |
322 ;; This will get the wrong result | |
323 ;; if there are two nested eval-region calls | |
324 ;; for the same buffer. That's not a very useful case. | |
325 (with-current-buffer (car tem) | |
326 (point)))) | |
327 (pop tem)))) | |
320 (debugger-make-xrefs)) | 328 (debugger-make-xrefs)) |
321 | 329 |
322 (defun debugger-make-xrefs (&optional buffer) | 330 (defun debugger-make-xrefs (&optional buffer) |
323 "Attach cross-references to function names in the `*Backtrace*' buffer." | 331 "Attach cross-references to function names in the `*Backtrace*' buffer." |
324 (interactive "b") | 332 (interactive "b") |
589 (define-key map "h" 'describe-mode) | 597 (define-key map "h" 'describe-mode) |
590 (define-key map "q" 'top-level) | 598 (define-key map "q" 'top-level) |
591 (define-key map "e" 'debugger-eval-expression) | 599 (define-key map "e" 'debugger-eval-expression) |
592 (define-key map " " 'next-line) | 600 (define-key map " " 'next-line) |
593 (define-key map "R" 'debugger-record-expression) | 601 (define-key map "R" 'debugger-record-expression) |
594 (define-key map "\C-m" 'help-follow) | 602 (define-key map "\C-m" 'debug-help-follow) |
595 (define-key map [mouse-2] 'push-button) | 603 (define-key map [mouse-2] 'push-button) |
596 map)) | 604 map)) |
597 | 605 |
606 (put 'debugger-mode 'mode-class 'special) | |
607 | |
608 (defun debugger-mode () | |
609 "Mode for backtrace buffers, selected in debugger. | |
610 \\<debugger-mode-map> | |
611 A line starts with `*' if exiting that frame will call the debugger. | |
612 Type \\[debugger-frame] or \\[debugger-frame-clear] to set or remove the `*'. | |
613 | |
614 When in debugger due to frame being exited, | |
615 use the \\[debugger-return-value] command to override the value | |
616 being returned from that frame. | |
617 | |
618 Use \\[debug-on-entry] and \\[cancel-debug-on-entry] to control | |
619 which functions will enter the debugger when called. | |
620 | |
621 Complete list of commands: | |
622 \\{debugger-mode-map}" | |
623 (kill-all-local-variables) | |
624 (setq major-mode 'debugger-mode) | |
625 (setq mode-name "Debugger") | |
626 (setq truncate-lines t) | |
627 (set-syntax-table emacs-lisp-mode-syntax-table) | |
628 (use-local-map debugger-mode-map) | |
629 (run-mode-hooks 'debugger-mode-hook)) | |
630 | |
598 (defcustom debugger-record-buffer "*Debugger-record*" | 631 (defcustom debugger-record-buffer "*Debugger-record*" |
599 "*Buffer name for expression values, for \\[debugger-record-expression]." | 632 "*Buffer name for expression values, for \\[debugger-record-expression]." |
600 :type 'string | 633 :type 'string |
601 :group 'debugger | 634 :group 'debugger |
602 :version "20.3") | 635 :version "20.3") |
618 (with-current-buffer (get-buffer debugger-record-buffer) | 651 (with-current-buffer (get-buffer debugger-record-buffer) |
619 (message "%s" | 652 (message "%s" |
620 (buffer-substring (line-beginning-position 0) | 653 (buffer-substring (line-beginning-position 0) |
621 (line-end-position 0))))) | 654 (line-end-position 0))))) |
622 | 655 |
623 (put 'debugger-mode 'mode-class 'special) | 656 (defun debug-help-follow (&optional pos) |
624 | 657 "Follow cross-reference at POS, defaulting to point. |
625 (defun debugger-mode () | 658 |
626 "Mode for backtrace buffers, selected in debugger. | 659 For the cross-reference format, see `help-make-xrefs'." |
627 \\<debugger-mode-map> | 660 (interactive "d") |
628 A line starts with `*' if exiting that frame will call the debugger. | 661 (require 'help-mode) |
629 Type \\[debugger-frame] or \\[debugger-frame-clear] to set or remove the `*'. | 662 (unless pos |
630 | 663 (setq pos (point))) |
631 When in debugger due to frame being exited, | 664 (unless (push-button pos) |
632 use the \\[debugger-return-value] command to override the value | 665 ;; check if the symbol under point is a function or variable |
633 being returned from that frame. | 666 (let ((sym |
634 | 667 (intern |
635 Use \\[debug-on-entry] and \\[cancel-debug-on-entry] to control | 668 (save-excursion |
636 which functions will enter the debugger when called. | 669 (goto-char pos) (skip-syntax-backward "w_") |
637 | 670 (buffer-substring (point) |
638 Complete list of commands: | 671 (progn (skip-syntax-forward "w_") |
639 \\{debugger-mode-map}" | 672 (point))))))) |
640 (kill-all-local-variables) | 673 (when (or (boundp sym) (fboundp sym) (facep sym)) |
641 (setq major-mode 'debugger-mode) | 674 (switch-to-buffer-other-window (generate-new-buffer "*Help*")) |
642 (setq mode-name "Debugger") | 675 (help-do-xref pos #'help-xref-interned (list sym)))))) |
643 (setq truncate-lines t) | |
644 (set-syntax-table emacs-lisp-mode-syntax-table) | |
645 (use-local-map debugger-mode-map) | |
646 (run-mode-hooks 'debugger-mode-hook)) | |
647 | 676 |
648 ;; When you change this, you may also need to change the number of | 677 ;; When you change this, you may also need to change the number of |
649 ;; frames that the debugger skips. | 678 ;; frames that the debugger skips. |
650 (defun implement-debug-on-entry () | 679 (defun implement-debug-on-entry () |
651 "Conditionally call the debugger. | 680 "Conditionally call the debugger. |