aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2005-06-09 03:09:30 +0000
committerStefan Monnier2005-06-09 03:09:30 +0000
commit9b530428ea5ce44dc6760f9243e363b2fa4dded1 (patch)
treedea5d1d0d8a9d5f59ec689ec8cdf3772ed69b6f0
parentf271d3c7bd8c99f1ca5544ec5b7dc97cab1e7d79 (diff)
downloademacs-9b530428ea5ce44dc6760f9243e363b2fa4dded1.tar.gz
emacs-9b530428ea5ce44dc6760f9243e363b2fa4dded1.zip
(debugger-will-be-back): New var.
(debug): Use it. (debugger-step-through, debugger-continue, debugger-jump) (debugger-return-value): Set it when needed. (debugger-make-xrefs, debugger-frame, debugger-frame-clear): Use inhibit-read-only.
-rw-r--r--lisp/emacs-lisp/debug.el27
1 files changed, 22 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index f3eaad0ce25..f1ff37551d7 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -88,6 +88,8 @@ This is to optimize `debugger-make-xrefs'.")
88(defvar debugger-outer-standard-output) 88(defvar debugger-outer-standard-output)
89(defvar debugger-outer-inhibit-redisplay) 89(defvar debugger-outer-inhibit-redisplay)
90(defvar debugger-outer-cursor-in-echo-area) 90(defvar debugger-outer-cursor-in-echo-area)
91(defvar debugger-will-be-back nil
92 "Non-nil if we expect to get back in the debugger soon.")
91 93
92(defvar inhibit-debug-on-entry nil 94(defvar inhibit-debug-on-entry nil
93 "Non-nil means that debug-on-entry is disabled.") 95 "Non-nil means that debug-on-entry is disabled.")
@@ -123,6 +125,7 @@ first will be printed into the backtrace buffer."
123 (get-buffer-create "*Backtrace*"))) 125 (get-buffer-create "*Backtrace*")))
124 (debugger-old-buffer (current-buffer)) 126 (debugger-old-buffer (current-buffer))
125 (debugger-step-after-exit nil) 127 (debugger-step-after-exit nil)
128 (debugger-will-be-back nil)
126 ;; Don't keep reading from an executing kbd macro! 129 ;; Don't keep reading from an executing kbd macro!
127 (executing-kbd-macro nil) 130 (executing-kbd-macro nil)
128 ;; Save the outer values of these vars for the `e' command 131 ;; Save the outer values of these vars for the `e' command
@@ -218,13 +221,13 @@ first will be printed into the backtrace buffer."
218 (fundamental-mode) 221 (fundamental-mode)
219 (with-selected-window (get-buffer-window debugger-buffer 0) 222 (with-selected-window (get-buffer-window debugger-buffer 0)
220 (when (and (window-dedicated-p (selected-window)) 223 (when (and (window-dedicated-p (selected-window))
221 (not debugger-step-after-exit)) 224 (not debugger-will-be-back))
222 ;; If the window is not dedicated, burying the buffer 225 ;; If the window is not dedicated, burying the buffer
223 ;; will mean that the frame created for it is left 226 ;; will mean that the frame created for it is left
224 ;; around showing some random buffer, and next time we 227 ;; around showing some random buffer, and next time we
225 ;; pop to the debugger buffer we'll create yet 228 ;; pop to the debugger buffer we'll create yet
226 ;; another frame. 229 ;; another frame.
227 ;; If debugger-step-after-exit is non-nil, the frame 230 ;; If debugger-will-be-back is non-nil, the frame
228 ;; would need to be de-iconified anyway immediately 231 ;; would need to be de-iconified anyway immediately
229 ;; after when we re-enter the debugger, so iconifying it 232 ;; after when we re-enter the debugger, so iconifying it
230 ;; here would cause flashing. 233 ;; here would cause flashing.
@@ -320,7 +323,7 @@ That buffer should be current already."
320 (save-excursion 323 (save-excursion
321 (set-buffer (or buffer (current-buffer))) 324 (set-buffer (or buffer (current-buffer)))
322 (setq buffer (current-buffer)) 325 (setq buffer (current-buffer))
323 (let ((buffer-read-only nil) 326 (let ((inhibit-read-only t)
324 (old-end (point-min)) (new-end (point-min))) 327 (old-end (point-min)) (new-end (point-min)))
325 ;; If we saved an old backtrace, find the common part 328 ;; If we saved an old backtrace, find the common part
326 ;; between the new and the old. 329 ;; between the new and the old.
@@ -390,6 +393,7 @@ Enter another debugger on next entry to eval, apply or funcall."
390 (interactive) 393 (interactive)
391 (setq debugger-step-after-exit t) 394 (setq debugger-step-after-exit t)
392 (setq debugger-jumping-flag t) 395 (setq debugger-jumping-flag t)
396 (setq debugger-will-be-back t)
393 (add-hook 'post-command-hook 'debugger-reenable) 397 (add-hook 'post-command-hook 'debugger-reenable)
394 (message "Proceeding, will debug on next eval or call.") 398 (message "Proceeding, will debug on next eval or call.")
395 (exit-recursive-edit)) 399 (exit-recursive-edit))
@@ -400,6 +404,12 @@ Enter another debugger on next entry to eval, apply or funcall."
400 (unless debugger-may-continue 404 (unless debugger-may-continue
401 (error "Cannot continue")) 405 (error "Cannot continue"))
402 (message "Continuing.") 406 (message "Continuing.")
407 (save-excursion
408 ;; Check to see if we've flagged some frame for debug-on-exit, in which
409 ;; case we'll probably come back to the debugger soon.
410 (goto-char (point-min))
411 (if (re-search-forward "^\\* " nil t)
412 (setq debugger-will-be-back t)))
403 (exit-recursive-edit)) 413 (exit-recursive-edit))
404 414
405(defun debugger-return-value (val) 415(defun debugger-return-value (val)
@@ -410,6 +420,12 @@ will be used, such as in a debug on exit from a frame."
410 (setq debugger-value val) 420 (setq debugger-value val)
411 (princ "Returning " t) 421 (princ "Returning " t)
412 (prin1 debugger-value) 422 (prin1 debugger-value)
423 (save-excursion
424 ;; Check to see if we've flagged some frame for debug-on-exit, in which
425 ;; case we'll probably come back to the debugger soon.
426 (goto-char (point-min))
427 (if (re-search-forward "^\\* " nil t)
428 (setq debugger-will-be-back t)))
413 (exit-recursive-edit)) 429 (exit-recursive-edit))
414 430
415(defun debugger-jump () 431(defun debugger-jump ()
@@ -419,6 +435,7 @@ will be used, such as in a debug on exit from a frame."
419 (setq debugger-jumping-flag t) 435 (setq debugger-jumping-flag t)
420 (add-hook 'post-command-hook 'debugger-reenable) 436 (add-hook 'post-command-hook 'debugger-reenable)
421 (message "Continuing through this frame") 437 (message "Continuing through this frame")
438 (setq debugger-will-be-back t)
422 (exit-recursive-edit)) 439 (exit-recursive-edit))
423 440
424(defun debugger-reenable () 441(defun debugger-reenable ()
@@ -467,7 +484,7 @@ Applies to the frame whose line point is on in the backtrace."
467 (beginning-of-line) 484 (beginning-of-line)
468 (backtrace-debug (debugger-frame-number) t) 485 (backtrace-debug (debugger-frame-number) t)
469 (if (= (following-char) ? ) 486 (if (= (following-char) ? )
470 (let ((buffer-read-only nil)) 487 (let ((inhibit-read-only t))
471 (delete-char 1) 488 (delete-char 1)
472 (insert ?*))) 489 (insert ?*)))
473 (beginning-of-line)) 490 (beginning-of-line))
@@ -483,7 +500,7 @@ Applies to the frame whose line point is on in the backtrace."
483 (beginning-of-line) 500 (beginning-of-line)
484 (backtrace-debug (debugger-frame-number) nil) 501 (backtrace-debug (debugger-frame-number) nil)
485 (if (= (following-char) ?*) 502 (if (= (following-char) ?*)
486 (let ((buffer-read-only nil)) 503 (let ((inhibit-read-only t))
487 (delete-char 1) 504 (delete-char 1)
488 (insert ? ))) 505 (insert ? )))
489 (beginning-of-line)) 506 (beginning-of-line))