]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/warnings.el (warning-display-at-bottom): New defcustom.
authorJuri Linkov <juri@linkov.net>
Mon, 22 Apr 2024 06:50:45 +0000 (09:50 +0300)
committerEshel Yaron <me@eshelyaron.com>
Mon, 22 Apr 2024 18:38:06 +0000 (20:38 +0200)
(display-warning): Use 'warning-display-at-bottom' to display
the warning buffer at the bottom of the screen and to scroll
to the last warning message (bug#69983).

(cherry picked from commit 086608876ad4e3aacdce7169206482cef0cb7129)

lisp/emacs-lisp/warnings.el

index 8b43c6a87262756f8158648282608e35bc6783ec..6a1187fdb0fe01e536422753b10d0b7e2d5d8dfa 100644 (file)
@@ -120,6 +120,14 @@ so only the element (FOO) will match it.
 See also `warning-suppress-log-types'."
   :type '(repeat (repeat symbol))
   :version "22.1")
+
+(defcustom warning-display-at-bottom t
+  "Display the warning buffer at the bottom of the screen.
+The output window will be scrolled to the bottom of the buffer
+to show the last warning message."
+  :type 'boolean
+  :version "30.1")
+
 \f
 ;; The autoload cookie is so that programs can bind this variable
 ;; safely, testing the existing value, before they call one of the
@@ -362,10 +370,21 @@ entirely by setting `warning-suppress-types' or
                 (or (< (warning-numeric-level level)
                        (warning-numeric-level warning-minimum-level))
                     (warning-suppress-p type warning-suppress-types)
-                    (let ((window (display-buffer buffer)))
+                    (let ((window (display-buffer
+                                   buffer
+                                   (when warning-display-at-bottom
+                                     '(display-buffer--maybe-at-bottom
+                                       (window-height . (lambda (window)
+                                         (fit-window-to-buffer window 10)))
+                                       (category . warning))))))
                       (when (and (markerp warning-series)
                                  (eq (marker-buffer warning-series) buffer))
                         (set-window-start window warning-series))
+                      (when warning-display-at-bottom
+                        (with-selected-window window
+                          (goto-char (point-max))
+                          (set-window-point window (1- (point-max)))
+                          (recenter -1)))
                       (sit-for 0)))))))))
 \f
 ;; Use \\<special-mode-map> so that help-enable-autoload can do its thing.