diff options
| author | Martin Rudalics | 2018-12-26 09:09:44 +0100 |
|---|---|---|
| committer | Martin Rudalics | 2018-12-26 09:09:44 +0100 |
| commit | bbc7015e7bcb7ed569ea4d75672fcaacbe291f06 (patch) | |
| tree | 85ce65ec1b652a5afcc482272072076e14f9e1f8 | |
| parent | 092b36dbd65ce8ab8efb4562a79709b3244ca8a8 (diff) | |
| download | emacs-bbc7015e7bcb7ed569ea4d75672fcaacbe291f06.tar.gz emacs-bbc7015e7bcb7ed569ea4d75672fcaacbe291f06.zip | |
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).
| -rw-r--r-- | lisp/emacs-lisp/debug.el | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index b6b1f20675f..5c186f70197 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." | |||
| 236 | ;; Place an extra debug-on-exit for macro's. | 236 | ;; Place an extra debug-on-exit for macro's. |
| 237 | (when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) | 237 | (when (eq 'lambda (car-safe (cadr (backtrace-frame 4)))) |
| 238 | (backtrace-debug 5 t))) | 238 | (backtrace-debug 5 t))) |
| 239 | (with-current-buffer debugger-buffer | ||
| 240 | (unless (derived-mode-p 'debugger-mode) | ||
| 241 | (debugger-mode)) | ||
| 242 | (debugger-setup-buffer debugger-args)) | ||
| 243 | (when noninteractive | ||
| 244 | ;; If the backtrace is long, save the beginning | ||
| 245 | ;; and the end, but discard the middle. | ||
| 246 | (when (> (count-lines (point-min) (point-max)) | ||
| 247 | debugger-batch-max-lines) | ||
| 248 | (goto-char (point-min)) | ||
| 249 | (forward-line (/ 2 debugger-batch-max-lines)) | ||
| 250 | (let ((middlestart (point))) | ||
| 251 | (goto-char (point-max)) | ||
| 252 | (forward-line (- (/ 2 debugger-batch-max-lines) | ||
| 253 | debugger-batch-max-lines)) | ||
| 254 | (delete-region middlestart (point))) | ||
| 255 | (insert "...\n")) | ||
| 256 | (goto-char (point-min)) | ||
| 257 | (message "%s" (buffer-string)) | ||
| 258 | (kill-emacs -1)) | ||
| 239 | (pop-to-buffer | 259 | (pop-to-buffer |
| 240 | debugger-buffer | 260 | debugger-buffer |
| 241 | `((display-buffer-reuse-window | 261 | `((display-buffer-reuse-window |
| 242 | display-buffer-in-previous-window | 262 | display-buffer-in-previous-window |
| 243 | display-buffer-below-selected) | 263 | display-buffer-below-selected) |
| 244 | . ((window-min-height . 10) | 264 | . ((window-min-height . 10) |
| 265 | (window-height . fit-window-to-buffer) | ||
| 245 | ,@(when (and (window-live-p debugger-previous-window) | 266 | ,@(when (and (window-live-p debugger-previous-window) |
| 246 | (frame-visible-p | 267 | (frame-visible-p |
| 247 | (window-frame debugger-previous-window))) | 268 | (window-frame debugger-previous-window))) |
| @@ -258,25 +279,6 @@ first will be printed into the backtrace buffer." | |||
| 258 | (window-total-height debugger-window))) | 279 | (window-total-height debugger-window))) |
| 259 | (error nil))) | 280 | (error nil))) |
| 260 | (setq debugger-previous-window debugger-window)) | 281 | (setq debugger-previous-window debugger-window)) |
| 261 | (unless (derived-mode-p 'debugger-mode) | ||
| 262 | (debugger-mode)) | ||
| 263 | (debugger-setup-buffer debugger-args) | ||
| 264 | (when noninteractive | ||
| 265 | ;; If the backtrace is long, save the beginning | ||
| 266 | ;; and the end, but discard the middle. | ||
| 267 | (when (> (count-lines (point-min) (point-max)) | ||
| 268 | debugger-batch-max-lines) | ||
| 269 | (goto-char (point-min)) | ||
| 270 | (forward-line (/ 2 debugger-batch-max-lines)) | ||
| 271 | (let ((middlestart (point))) | ||
| 272 | (goto-char (point-max)) | ||
| 273 | (forward-line (- (/ 2 debugger-batch-max-lines) | ||
| 274 | debugger-batch-max-lines)) | ||
| 275 | (delete-region middlestart (point))) | ||
| 276 | (insert "...\n")) | ||
| 277 | (goto-char (point-min)) | ||
| 278 | (message "%s" (buffer-string)) | ||
| 279 | (kill-emacs -1)) | ||
| 280 | (message "") | 282 | (message "") |
| 281 | (let ((standard-output nil) | 283 | (let ((standard-output nil) |
| 282 | (buffer-read-only t)) | 284 | (buffer-read-only t)) |