bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#35592: Use display-buffer-in-direction for completion-like windows


From: Juri Linkov
Subject: bug#35592: Use display-buffer-in-direction for completion-like windows
Date: Sun, 05 May 2019 23:40:10 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu)

Proced has dired-like UI.  Dired smoothly displays a completion-like
confirmation window with filenames.  ‘proced-with-processes-buffer’
even has a comment proudly declaring its compatibility with dired:

         ;; Analogous to `dired-pop-to-buffer'
         ;; Don't split window horizontally.  (Bug#1806)

But in fact currently Proced can't handle more than 1 window on the same frame.

For example, compare these cases:

When there is only 1 window:

0. emacs -Q
1. M-x proced
2. C-x 1
3. d d x

then a list of *Marked Processes* is displayed in the bottom window
nicely like in Dired.

But when windows are split vertically:

0. emacs -Q
1. M-x proced
2. d d x

then a list of *Marked Processes* is displayed in the top window.

When windows are split horizontally:

0. emacs -Q
1. C-x 3
2. M-x proced
3. d d x

then the buffer *Marked Processes* is displayed in the left window.

Splitting to more windows cause it to display this buffer in random places.

This could be fixed by using something like:

(display-buffer "*Marked Processes*"
  '((display-buffer-in-direction)
    (direction . bottom)
    (window . main)
    (window-height . fit-window-to-buffer)))

The same would be useful also for Widget using e.g.

diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el
index b9f98cdc4c..b077299c0e 100644
--- a/lisp/wid-edit.el
+++ b/lisp/wid-edit.el
@@ -252,7 +252,11 @@ widget-choose
           (define-key map [?\M--] 'negative-argument)
           (save-window-excursion
             (let ((buf (get-buffer " widget-choose")))
-              (fit-window-to-buffer (display-buffer buf))
+              (display-buffer
+               buf
+               '(display-buffer-in-direction
+                 (direction main bottom)
+                 (window-height . fit-window-to-buffer)))
               (let ((cursor-in-echo-area t)
                     (arg 1))
                  (while (not value)







reply via email to

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