aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2011-05-31 12:41:14 -0300
committerStefan Monnier2011-05-31 12:41:14 -0300
commite227544d7b1e5e22923796929389f4c9bcab44e0 (patch)
treeb966cb145c2c95e979514ac456ec59d2f720cbb3
parente8296fdc980f927e4e534dc62ce4f436fdf3a779 (diff)
downloademacs-e227544d7b1e5e22923796929389f4c9bcab44e0.tar.gz
emacs-e227544d7b1e5e22923796929389f4c9bcab44e0.zip
* lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer's
content but also its previous major mode.
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/emacs-lisp/debug.el21
2 files changed, 20 insertions, 6 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index e6fdbd2372c..0070f3a3945 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
12011-05-31 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/debug.el (debug): Save&restore not just the buffer's
4 content but also its previous major mode.
5
12011-05-31 Helmut Eller <eller.helmut@gmail.com> 62011-05-31 Helmut Eller <eller.helmut@gmail.com>
2 7
3 * debug.el (debug): Restore the previous content of the 8 * debug.el (debug): Restore the previous content of the
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index 4a43f59c9e2..28962595ace 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -118,9 +118,12 @@ first will be printed into the backtrace buffer."
118 (let (debugger-value 118 (let (debugger-value
119 (debug-on-error nil) 119 (debug-on-error nil)
120 (debug-on-quit nil) 120 (debug-on-quit nil)
121 (debugger-previous-state
122 (if (get-buffer "*Backtrace*")
123 (with-current-buffer (get-buffer "*Backtrace*")
124 (list major-mode (buffer-string)))))
121 (debugger-buffer (get-buffer-create "*Backtrace*")) 125 (debugger-buffer (get-buffer-create "*Backtrace*"))
122 (debugger-old-buffer (current-buffer)) 126 (debugger-old-buffer (current-buffer))
123 (debugger-previous-contents nil)
124 (debugger-step-after-exit nil) 127 (debugger-step-after-exit nil)
125 (debugger-will-be-back 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!
@@ -182,7 +185,6 @@ first will be printed into the backtrace buffer."
182 (when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) 185 (when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
183 (backtrace-debug 5 t))) 186 (backtrace-debug 5 t)))
184 (pop-to-buffer debugger-buffer) 187 (pop-to-buffer debugger-buffer)
185 (setq debugger-previous-contents (buffer-string))
186 (debugger-mode) 188 (debugger-mode)
187 (debugger-setup-buffer debugger-args) 189 (debugger-setup-buffer debugger-args)
188 (when noninteractive 190 (when noninteractive
@@ -216,9 +218,6 @@ first will be printed into the backtrace buffer."
216 ;; recreate it every time the debugger stops, so instead we'll 218 ;; recreate it every time the debugger stops, so instead we'll
217 ;; erase it (and maybe hide it) but keep it alive. 219 ;; erase it (and maybe hide it) but keep it alive.
218 (with-current-buffer debugger-buffer 220 (with-current-buffer debugger-buffer
219 (erase-buffer)
220 (insert debugger-previous-contents)
221 (fundamental-mode)
222 (with-selected-window (get-buffer-window debugger-buffer 0) 221 (with-selected-window (get-buffer-window debugger-buffer 0)
223 (when (and (window-dedicated-p (selected-window)) 222 (when (and (window-dedicated-p (selected-window))
224 (not debugger-will-be-back)) 223 (not debugger-will-be-back))
@@ -235,7 +234,17 @@ first will be printed into the backtrace buffer."
235 ;; to be left at the top-level, still working on how 234 ;; to be left at the top-level, still working on how
236 ;; best to do that. 235 ;; best to do that.
237 (bury-buffer)))) 236 (bury-buffer))))
238 (kill-buffer debugger-buffer)) 237 (unless debugger-previous-state
238 (kill-buffer debugger-buffer)))
239 ;; Restore the previous state of the debugger-buffer, in case we were
240 ;; in a recursive invocation of the debugger.
241 (when (and debugger-previous-state
242 (buffer-live-p debugger-buffer))
243 (with-current-buffer debugger-buffer
244 (let ((inhibit-read-only t))
245 (erase-buffer)
246 (insert (nth 1 debugger-previous-state))
247 (funcall (nth 0 debugger-previous-state)))))
239 (with-timeout-unsuspend debugger-with-timeout-suspend) 248 (with-timeout-unsuspend debugger-with-timeout-suspend)
240 (set-match-data debugger-outer-match-data))) 249 (set-match-data debugger-outer-match-data)))
241 ;; Put into effect the modified values of these variables 250 ;; Put into effect the modified values of these variables