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

From: Juri Linkov <[email-masked]>
Date: Sun, 08 May 2022 21:18:28 +0300

>> (pop-to-buffer (generate-new-buffer "*edit string*")
>>                 '(display-buffer-below-selected
>>                   (window-height . (lambda (window)
>>                                      (fit-window-to-buffer window nil 10)))))
>
> Sounds too complicated IMO.

Actually a lambda is already supported, so no changes are required.

> Let's stick to your earlier proposal as
>
> 	  (ignore-errors
>             (if (eq height 'fit-window-to-buffer)
>                 (fit-window-to-buffer
>                  window nil (cdr (assq 'window-min-height alist)))
>               (funcall height window)))
>
> say something like "As a special case, if `window-height' specifies
> `fit-window-to-buffer' and ALIST contains a `window-min-height' entry,
> pass the value of that entry as MIN-HEIGHT argument to
> `fit-window-to-buffer'." and do a similar thing for `window-min-width'.

A special case for fit-window-to-buffer, shrink-window-* and other similar
could be implemented only when you are sure that a `window-min-height' entry
is not going to be used for other purposes besides of using it as an argument
of a window-height entry.

BTW, fit-window-to-buffer has also other arguments: MAX-WIDTH and MIN-WIDTH.
Would they be useful for a window-width entry?

> And if we really want to, we can always add a MIN-HEIGHT argument to
> 'shrink-window-if-larger-than-buffer' and handle it the same way.

This is very much needed, thanks.