Subject: bug#55169: Can't combine window-min-height with window-height

From: Juri Linkov <[email-masked]>
Date: Thu, 12 May 2022 20:03:59 +0300

>> I have an example only for 'fit-window-to-buffer':
>>
>>    (pop-to-buffer (generate-new-buffer "*edit string*")
>>                   '(display-buffer-below-selected
>>                     (window-height . (lambda (window)
>>                                        (fit-window-to-buffer window nil 10)))))
>
> I meant an example for how to put a lambda into 'display-buffer-alist'.
>
> In either case, I still think we should provide an option where we pass
> the window _and_ the alist to that function.  Your example illustrates
> well that we cannot integrate a user supplied 'window-min-height' entry
> say into the application provided lambda.  Vice versa, user supplied
> functions cannot interact with application provided 'window-min-height'
> entries.

Adding an alist is a good idea, but unfortunately it's not backwards-compatible.

> Think of an application suggesting 'fit-window-to-buffer' with some
> 'window-min-height' value and a user who wants to use
> 'shrink-window-if-larger-than-buffer' instead but still use the
> 'window-min-height' value proposed by the application.  How would we do
> that?

I have no idea how to make this backwards-compatible.

>> I wonder why other 'display-buffer-*' function wouldn't need the same?
>
> All of 'display-buffer-same-window', 'display-buffer-reuse-window' and
> 'display-buffer-pop-up-window' should get the same treatment, probably.

Definitively the functions that create a new window
should take into account height constraints.
But not sure about functions that select the existing window.
Should they resize the existing window?