emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master bbc7015: Set up debugger buffer earlier and fit win


From: Martin Rudalics
Subject: [Emacs-diffs] master bbc7015: Set up debugger buffer earlier and fit window to it (Bug#32825)
Date: Wed, 26 Dec 2018 03:10:57 -0500 (EST)

branch: master
commit bbc7015e7bcb7ed569ea4d75672fcaacbe291f06
Author: Martin Rudalics <address@hidden>
Commit: Martin Rudalics <address@hidden>

    Set up debugger buffer earlier and fit window to it (Bug#32825)
    
    * lisp/emacs-lisp/debug.el (debug): Set up debugger buffer
    before displaying it and advise 'display-buffer' to fit the
    window to it (Bug#32825).
---
 lisp/emacs-lisp/debug.el | 40 +++++++++++++++++++++-------------------
 1 file changed, 21 insertions(+), 19 deletions(-)

diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el
index b6b1f20..5c186f7 100644
--- a/lisp/emacs-lisp/debug.el
+++ b/lisp/emacs-lisp/debug.el
@@ -236,12 +236,33 @@ first will be printed into the backtrace buffer."
                ;; Place an extra debug-on-exit for macro's.
                (when (eq 'lambda (car-safe (cadr (backtrace-frame 4))))
                  (backtrace-debug 5 t)))
+              (with-current-buffer debugger-buffer
+                (unless (derived-mode-p 'debugger-mode)
+                 (debugger-mode))
+               (debugger-setup-buffer debugger-args))
+             (when noninteractive
+               ;; If the backtrace is long, save the beginning
+               ;; and the end, but discard the middle.
+               (when (> (count-lines (point-min) (point-max))
+                        debugger-batch-max-lines)
+                 (goto-char (point-min))
+                 (forward-line (/ 2 debugger-batch-max-lines))
+                 (let ((middlestart (point)))
+                   (goto-char (point-max))
+                   (forward-line (- (/ 2 debugger-batch-max-lines)
+                                    debugger-batch-max-lines))
+                   (delete-region middlestart (point)))
+                 (insert "...\n"))
+               (goto-char (point-min))
+               (message "%s" (buffer-string))
+               (kill-emacs -1))
              (pop-to-buffer
               debugger-buffer
               `((display-buffer-reuse-window
                  display-buffer-in-previous-window
                  display-buffer-below-selected)
                 . ((window-min-height . 10)
+                    (window-height . fit-window-to-buffer)
                    ,@(when (and (window-live-p debugger-previous-window)
                                (frame-visible-p
                                 (window-frame debugger-previous-window)))
@@ -258,25 +279,6 @@ first will be printed into the backtrace buffer."
                            (window-total-height debugger-window)))
                      (error nil)))
                (setq debugger-previous-window debugger-window))
-              (unless (derived-mode-p 'debugger-mode)
-               (debugger-mode))
-             (debugger-setup-buffer debugger-args)
-             (when noninteractive
-               ;; If the backtrace is long, save the beginning
-               ;; and the end, but discard the middle.
-               (when (> (count-lines (point-min) (point-max))
-                        debugger-batch-max-lines)
-                 (goto-char (point-min))
-                 (forward-line (/ 2 debugger-batch-max-lines))
-                 (let ((middlestart (point)))
-                   (goto-char (point-max))
-                   (forward-line (- (/ 2 debugger-batch-max-lines)
-                                    debugger-batch-max-lines))
-                   (delete-region middlestart (point)))
-                 (insert "...\n"))
-               (goto-char (point-min))
-               (message "%s" (buffer-string))
-               (kill-emacs -1))
              (message "")
              (let ((standard-output nil)
                    (buffer-read-only t))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]