[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r104453: * lisp/emacs-lisp/debug.el (
From: |
Stefan Monnier |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r104453: * lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer's |
Date: |
Tue, 31 May 2011 12:41:14 -0300 |
User-agent: |
Bazaar (2.3.1) |
------------------------------------------------------------
revno: 104453
committer: Stefan Monnier <address@hidden>
branch nick: trunk
timestamp: Tue 2011-05-31 12:41:14 -0300
message:
* lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer's
content but also its previous major mode.
modified:
lisp/ChangeLog
lisp/emacs-lisp/debug.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2011-05-31 15:24:33 +0000
+++ b/lisp/ChangeLog 2011-05-31 15:41:14 +0000
@@ -1,3 +1,8 @@
+2011-05-31 Stefan Monnier <address@hidden>
+
+ * emacs-lisp/debug.el (debug): Save&restore not just the buffer's
+ content but also its previous major mode.
+
2011-05-31 Helmut Eller <address@hidden>
* debug.el (debug): Restore the previous content of the
=== modified file 'lisp/emacs-lisp/debug.el'
--- a/lisp/emacs-lisp/debug.el 2011-05-31 15:24:33 +0000
+++ b/lisp/emacs-lisp/debug.el 2011-05-31 15:41:14 +0000
@@ -118,9 +118,12 @@
(let (debugger-value
(debug-on-error nil)
(debug-on-quit nil)
+ (debugger-previous-state
+ (if (get-buffer "*Backtrace*")
+ (with-current-buffer (get-buffer "*Backtrace*")
+ (list major-mode (buffer-string)))))
(debugger-buffer (get-buffer-create "*Backtrace*"))
(debugger-old-buffer (current-buffer))
- (debugger-previous-contents nil)
(debugger-step-after-exit nil)
(debugger-will-be-back nil)
;; Don't keep reading from an executing kbd macro!
@@ -182,7 +185,6 @@
(when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
(backtrace-debug 5 t)))
(pop-to-buffer debugger-buffer)
- (setq debugger-previous-contents (buffer-string))
(debugger-mode)
(debugger-setup-buffer debugger-args)
(when noninteractive
@@ -216,9 +218,6 @@
;; recreate it every time the debugger stops, so instead we'll
;; erase it (and maybe hide it) but keep it alive.
(with-current-buffer debugger-buffer
- (erase-buffer)
- (insert debugger-previous-contents)
- (fundamental-mode)
(with-selected-window (get-buffer-window debugger-buffer 0)
(when (and (window-dedicated-p (selected-window))
(not debugger-will-be-back))
@@ -235,7 +234,17 @@
;; to be left at the top-level, still working on how
;; best to do that.
(bury-buffer))))
- (kill-buffer debugger-buffer))
+ (unless debugger-previous-state
+ (kill-buffer debugger-buffer)))
+ ;; Restore the previous state of the debugger-buffer, in case we were
+ ;; in a recursive invocation of the debugger.
+ (when (and debugger-previous-state
+ (buffer-live-p debugger-buffer))
+ (with-current-buffer debugger-buffer
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (insert (nth 1 debugger-previous-state))
+ (funcall (nth 0 debugger-previous-state)))))
(with-timeout-unsuspend debugger-with-timeout-suspend)
(set-match-data debugger-outer-match-data)))
;; Put into effect the modified values of these variables
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r104453: * lisp/emacs-lisp/debug.el (debug): Save&restore not just the buffer's,
Stefan Monnier <=