Subject: bug#50178: 28.0.50; Size of echo area does not account for line-spacing

From: Eli Zaretskii <[email-masked]>
Date: Tue, 24 Aug 2021 21:49:08 +0300

> From: Óscar Fuentes <[email-masked]>
> Cc: [email-masked]
> Date: Tue, 24 Aug 2021 20:38:56 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > But the former is basically impossible to provide, not in Emacs 21+
> > with its support for variable-size fonts and display of images and
> > xwidgets as part of text.  Even with just different fonts, N lines
> > using font of size X are not the same as N lines with size Y.
> 
> We are talking about the mini window here. It's contents are much more
> restricted, in the sense that it is determined by some command.

I don't really see how can we say that, given the proliferation of the
various completion packages, which display everything that can be
displayed in the mini-window.

> This bug report is about such command wanting to show at least N
> lines, using the current display settings (font, line spacing, etc).

And I still don't understand what is wrong with the recipe you've
shown.  In my testing, I see a very long list of candidates, with
several ones fully visible and one visible only partially.  I can
scroll down the list to see more candidates, including the one which
was initially displayed partially.  I fail to see a problem with that,
sorry.

> >> You can't navigate around on the contents of the mini-window.
> >
> > ??? Of course, I can.  What do you mean by "you can't"?  The
> > mini-window is just another window, so as long as you can make it the
> > selected window (e.g., when the minibuffer is active), you can
> > navigate there.
> 
> Allowing the user to move around on the mini window possibly is at odds
> with the UI of the command using the mini window. Certainly, it would be
> an inconvenience, as I mentioned before.

Again, I don't see any inconvenience.  It's just the normal vertical
motion of the cursor, not unlike any other window.

> Curiously, something like
> 
> (message "foo1\nfoo2\nfoo3\nfoo4\nfoo4\nfoo5\nfoo6\nfoo7\nfoo8")
> 
> doesn't show truncated lines because it apparently ignores the value of
> line-spacing.

It does here, I guess you didn't turn line-spacing by default or
something.  Try

  emacs -Q --eval "(setq-default line-spacing 0.2)"

> ido-grid-mode does not support vertical scrolling (it is not supposed to
> do that and it would be a burden if it did) and with certain values of
> line-spacing the last line(s) are partially visible or invisible. It's
> as simple as that. It uses max-mini-window-height for ensuring that the
> text fits on the mini-window, but that doesn't work on the presence of
> line-spacing.
> 
> One workround would be to locally set line-spacing to nil (overriding
> the user's preferences), but this does not protect against other current
> or future settings that might affect how the lines are rendered.

Or it could calculate max-mini-window-height more accurately.