From b9549e9dc7fcad0d9b19645ff1e319defd1b0222 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 9 Jul 2005 04:14:26 +0000 Subject: (debugger-setup-buffer): When eval-buffer was called with nil for the buffer, handle the read position right. Handle read position for eval-region, too. --- lisp/emacs-lisp/debug.el | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lisp/emacs-lisp/debug.el') diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 94cca83a61d..76d86985079 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -314,8 +314,15 @@ That buffer should be current already." (save-excursion (while (re-search-forward "^ eval-buffer(" nil t) (end-of-line) - (insert (format "\n ;;; Reading at buffer position %d" - (with-current-buffer (nth 2 (backtrace-frame (debugger-frame-number))) + (insert (format " ; Reading at buffer position %d" + (with-current-buffer + (or (nth 2 (backtrace-frame (debugger-frame-number))) + debugger-old-buffer) + (point))))) + (while (re-search-forward "^ eval-region(" nil t) + (end-of-line) + (insert (format " ; Reading at buffer position %d" + (with-current-buffer debugger-old-buffer (point)))))) (debugger-make-xrefs)) -- cgit v1.2.3 From 245f0222c60fd267bef3f2db1b1fc4eeda60b7eb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 10 Jul 2005 17:06:33 +0000 Subject: (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. --- lisp/emacs-lisp/debug.el | 48 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 14 deletions(-) (limited to 'lisp/emacs-lisp/debug.el') 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." ;; After any frame that uses eval-buffer, ;; insert a line that states the buffer position it's reading at. (save-excursion - (while (re-search-forward "^ eval-buffer(" nil t) - (end-of-line) - (insert (format " ; Reading at buffer position %d" - (with-current-buffer - (or (nth 2 (backtrace-frame (debugger-frame-number))) - debugger-old-buffer) - (point))))) - (while (re-search-forward "^ eval-region(" nil t) - (end-of-line) - (insert (format " ; Reading at buffer position %d" - (with-current-buffer debugger-old-buffer - (point)))))) + (let ((tem eval-buffer-list)) + (while (and tem + (re-search-forward "^ eval-\\(buffer\\|region\\)(" nil t)) + (end-of-line) + (insert (format " ; Reading at buffer position %d" + ;; This will get the wrong result + ;; if there are two nested eval-region calls + ;; for the same buffer. That's not a very useful case. + (with-current-buffer (car tem) + (point)))) + (pop tem)))) (debugger-make-xrefs)) (defun debugger-make-xrefs (&optional buffer) @@ -598,10 +597,10 @@ Applies to the frame whose line point is on in the backtrace." (define-key map "e" 'debugger-eval-expression) (define-key map " " 'next-line) (define-key map "R" 'debugger-record-expression) - (define-key map "\C-m" 'help-follow) + (define-key map "\C-m" 'debug-help-follow) (define-key map [mouse-2] 'push-button) map)) - + (defcustom debugger-record-buffer "*Debugger-record*" "*Buffer name for expression values, for \\[debugger-record-expression]." :type 'string @@ -627,6 +626,27 @@ Applies to the frame whose line point is on in the backtrace." (buffer-substring (line-beginning-position 0) (line-end-position 0))))) +(defun debug-help-follow (&optional pos) + "Follow cross-reference at POS, defaulting to point. + +For the cross-reference format, see `help-make-xrefs'." + (interactive "d") + (require 'help-mode) + (unless pos + (setq pos (point))) + (unless (push-button pos) + ;; check if the symbol under point is a function or variable + (let ((sym + (intern + (save-excursion + (goto-char pos) (skip-syntax-backward "w_") + (buffer-substring (point) + (progn (skip-syntax-forward "w_") + (point))))))) + (when (or (boundp sym) (fboundp sym) (facep sym)) + (switch-to-buffer-other-window (generate-new-buffer "*Help*")) + (help-do-xref pos #'help-xref-interned (list sym)))))) + (put 'debugger-mode 'mode-class 'special) (defun debugger-mode () -- cgit v1.2.3 From 028d38a278335f728230495e30637606e46682f9 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 10 Jul 2005 17:07:19 +0000 Subject: Move debugger-mode to a more natural place. --- lisp/emacs-lisp/debug.el | 50 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) (limited to 'lisp/emacs-lisp/debug.el') diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 11909cf44c0..3e4bf445551 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -600,6 +600,31 @@ Applies to the frame whose line point is on in the backtrace." (define-key map "\C-m" 'debug-help-follow) (define-key map [mouse-2] 'push-button) map)) + +(put 'debugger-mode 'mode-class 'special) + +(defun debugger-mode () + "Mode for backtrace buffers, selected in debugger. +\\ +A line starts with `*' if exiting that frame will call the debugger. +Type \\[debugger-frame] or \\[debugger-frame-clear] to set or remove the `*'. + +When in debugger due to frame being exited, +use the \\[debugger-return-value] command to override the value +being returned from that frame. + +Use \\[debug-on-entry] and \\[cancel-debug-on-entry] to control +which functions will enter the debugger when called. + +Complete list of commands: +\\{debugger-mode-map}" + (kill-all-local-variables) + (setq major-mode 'debugger-mode) + (setq mode-name "Debugger") + (setq truncate-lines t) + (set-syntax-table emacs-lisp-mode-syntax-table) + (use-local-map debugger-mode-map) + (run-mode-hooks 'debugger-mode-hook)) (defcustom debugger-record-buffer "*Debugger-record*" "*Buffer name for expression values, for \\[debugger-record-expression]." @@ -646,31 +671,6 @@ For the cross-reference format, see `help-make-xrefs'." (when (or (boundp sym) (fboundp sym) (facep sym)) (switch-to-buffer-other-window (generate-new-buffer "*Help*")) (help-do-xref pos #'help-xref-interned (list sym)))))) - -(put 'debugger-mode 'mode-class 'special) - -(defun debugger-mode () - "Mode for backtrace buffers, selected in debugger. -\\ -A line starts with `*' if exiting that frame will call the debugger. -Type \\[debugger-frame] or \\[debugger-frame-clear] to set or remove the `*'. - -When in debugger due to frame being exited, -use the \\[debugger-return-value] command to override the value -being returned from that frame. - -Use \\[debug-on-entry] and \\[cancel-debug-on-entry] to control -which functions will enter the debugger when called. - -Complete list of commands: -\\{debugger-mode-map}" - (kill-all-local-variables) - (setq major-mode 'debugger-mode) - (setq mode-name "Debugger") - (setq truncate-lines t) - (set-syntax-table emacs-lisp-mode-syntax-table) - (use-local-map debugger-mode-map) - (run-mode-hooks 'debugger-mode-hook)) ;; When you change this, you may also need to change the number of ;; frames that the debugger skips. -- cgit v1.2.3 From 385480e59a8bdf199cbd903ca42eb938a4ec886f Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 10 Jul 2005 17:19:07 +0000 Subject: (debug): Call with-timeout-suspend and with-timeout-unsuspend. --- lisp/emacs-lisp/debug.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lisp/emacs-lisp/debug.el') diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index 3e4bf445551..4f968c60b5e 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -150,7 +150,8 @@ first will be printed into the backtrace buffer." (debugger-outer-standard-input standard-input) (debugger-outer-standard-output standard-output) (debugger-outer-inhibit-redisplay inhibit-redisplay) - (debugger-outer-cursor-in-echo-area cursor-in-echo-area)) + (debugger-outer-cursor-in-echo-area cursor-in-echo-area) + (debugger-with-timeout-suspend (with-timeout-suspend))) ;; Set this instead of binding it, so that `q' ;; will not restore it. (setq overriding-terminal-local-map nil) @@ -235,6 +236,7 @@ first will be printed into the backtrace buffer." ;; Drew Adams. --Stef (quit-window)))) (kill-buffer debugger-buffer)) + (with-timeout-unsuspend debugger-with-timeout-suspend) (set-match-data debugger-outer-match-data))) ;; Put into effect the modified values of these variables ;; in case the user set them with the `e' command. -- cgit v1.2.3