]> git.eshelyaron.com Git - emacs.git/commitdiff
Set up debugger buffer earlier and fit window to it (Bug#32825)
authorMartin Rudalics <rudalics@gmx.at>
Wed, 26 Dec 2018 08:09:44 +0000 (09:09 +0100)
committerMartin Rudalics <rudalics@gmx.at>
Wed, 26 Dec 2018 08:09:44 +0000 (09:09 +0100)
* 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

index b6b1f20675fba8b9bbd08a85a15764ac21389d41..5c186f701973d6c1fba3e849484f7662af383fd8 100644 (file)
@@ -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))