aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorKarl Heuer <[email protected]>1994-03-29 02:20:04 +0000
committerKarl Heuer <[email protected]>1994-03-29 02:20:04 +0000
commit36363ac158623e4e1b9ec5bc14d7836ae6fb5ff3 (patch)
tree7a58a1164012b3821387e041c9b26858ed444308 /lisp/emacs-lisp
parent97f99202711274e28ef168add075431f2146592a (diff)
(debug): Behave sensibly if pop-up-frames is set.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/debug.el17
1 files changed, 13 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 150686ce4c..68a26d8eba 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -60,7 +60,7 @@ first will be printed into the backtrace buffer."
(debug-on-error nil)
(debug-on-quit nil)
(debugger-buffer (let ((default-major-mode 'fundamental-mode))
- (generate-new-buffer "*Backtrace*")))
+ (get-buffer-create "*Backtrace*")))
(debugger-old-buffer (current-buffer))
(debugger-step-after-exit nil)
;; Don't keep reading from an executing kbd macro!
@@ -136,9 +136,18 @@ first will be printed into the backtrace buffer."
(buffer-read-only t))
(message "")
(recursive-edit))))
- ;; So that users do not try to execute debugger commands
- ;; in an invalid context
- (kill-buffer debugger-buffer)
+ ;; Kill or at least neuter the backtrace buffer, so that users
+ ;; don't try to execute debugger commands in an invalid context.
+ (if (get-buffer-window debugger-buffer 'visible)
+ ;; Still visible despite the save-window-excursion? Maybe it
+ ;; it's in a pop-up frame. It would be annoying to delete and
+ ;; recreate it every time the debugger stops, so instead we'll
+ ;; erase it but leave it visible.
+ (save-excursion
+ (set-buffer debugger-buffer)
+ (erase-buffer)
+ (fundamental-mode))
+ (kill-buffer debugger-buffer))
(store-match-data debugger-match-data)))
;; Put into effect the modified values of these variables
;; in case the user set them with the `e' command.