diff options
| author | Stefan Monnier | 2005-06-09 03:09:30 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2005-06-09 03:09:30 +0000 |
| commit | 9b530428ea5ce44dc6760f9243e363b2fa4dded1 (patch) | |
| tree | dea5d1d0d8a9d5f59ec689ec8cdf3772ed69b6f0 | |
| parent | f271d3c7bd8c99f1ca5544ec5b7dc97cab1e7d79 (diff) | |
| download | emacs-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.el | 27 |
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)) |