emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/transient c93c35f567 13/25: transient--show: Fix window


From: Jonas Bernoulli
Subject: [elpa] externals/transient c93c35f567 13/25: transient--show: Fix window height for more setups
Date: Tue, 3 Dec 2024 14:35:02 -0500 (EST)

branch: externals/transient
commit c93c35f567289dbb4d12eb9ec43ef024ee6c78df
Author: Jonas Bernoulli <jonas@bernoul.li>
Commit: Jonas Bernoulli <jonas@bernoul.li>

    transient--show: Fix window height for more setups
    
    It is desirable to set `window-size-fixed' to t in the transient menu,
    as we always used to do, until very recently.
    
    We cannot do this when the transient window uses the full height of the
    frame, the minibuffer may be used while the menu remains displayed, and
    the height of the minibuffer has to be increased so that the completion
    framework can display completion candidates.
    
    If `transient-hide-during-minibuffer-read' is t [1], then that cannot
    happen, so we fix the size in that case again.
    
    [1] Which is the default, starting with the parent of this commit.
    
    Re #532.
---
 CHANGELOG         |  2 ++
 lisp/transient.el | 14 +++++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG b/CHANGELOG
index 641cc4cb34..544042c066 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -22,6 +22,8 @@
   default.  Customize ~transient-hide-during-minibuffer-read~ if you
   prefer the old default.
 
+- Further refinements to when the size of the menu window is fixed.
+
 Bug fixes:
 
 - Fixes some menu navigation edge-cases.
diff --git a/lisp/transient.el b/lisp/transient.el
index e7ecb50e8c..50fb331cad 100644
--- a/lisp/transient.el
+++ b/lisp/transient.el
@@ -211,6 +211,11 @@ buffer became the current buffer, then that would change 
what is
 at point.  To that effect `inhibit-same-window' ensures that the
 selected window is not used to show the transient buffer.
 
+The use of a horizonal split to display the menu window can lead
+to incompatibilities and is thus discouraged.  Transient tries to
+mitigate such issue but cannot proactively deal with all possible
+configurations and combinations of third-party packages.
+
 It may be possible to display the window in another frame, but
 whether that works in practice depends on the window-manager.
 If the window manager selects the new window (Emacs frame),
@@ -3818,7 +3823,14 @@ have a history of their own.")
       (erase-buffer)
       (when transient-force-fixed-pitch
         (transient--force-fixed-pitch))
-      (setq window-size-fixed (if (window-full-height-p) 'width t))
+      (setq window-size-fixed
+            ;; If necessary, make sure the height of the minibuffer
+            ;; can be increased to display completion candidates.
+            ;; See https://github.com/minad/vertico/issues/532.
+            (if (and (not transient-hide-during-minibuffer-read)
+                     (window-full-height-p))
+                'width
+              t))
       (when (bound-and-true-p tab-line-format)
         (setq tab-line-format nil))
       (setq header-line-format nil)



reply via email to

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