Subject: bug#40774: Error messages shouldn't be hidden when the user is idle

From: Eli Zaretskii <[email-masked]>
Date: Mon, 13 Dec 2021 18:48:24 +0200

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked],  [email-masked],  [email-masked]
> Date: Sun, 12 Dec 2021 22:18:29 +0200
> 
> >> > Btw, what does the change of the order between the call of
> >> > clear-message-function and setting echo_area_buffer[0] to nil mean,
> >> > compatibility-wise? won't it also produce different results, even if
> >> > the return value is nil?
> >>
> >> When the return value is nil, it will still clear the echo area.
> >
> > That wasn't what I asked.  I asked whether the change in the order
> > could matter.  Specifically, we now set echo_area_buffer[0] to nil
> > after we run clear-message-function, not before.  Can that affect
> > some customization of clear-message-function?
> 
> Actually, it should not affect customizations because such customizations
> should not touch the echo-area.  It's the task of clear_message
> to handle the echo-area.

Isn't there some Lisp-visible effect of that, like that the echo-area
will appear empty after the assignment?  If so, then the
clear-message-function was previously running with the echo-area
buffer nil, but now it won't.

> >> > IOW, shouldn't we provide some completely different optional feature
> >> > for this use case?  Like a special buffer that pops up or a special
> >> > frame?  Echo-area is not suited for showing large chunks of text, and
> >> > my gut feeling is that we will bump into problems on this path.  E.g.,
> >> > what happens when there are enough accumulated messages that they can
> >> > no longer be shown with the maximum allowed height of the mini-window?
> >>
> >> This is exactly what functions bound to clear-message-function intended to do.
> >
> > ??? This function is about _clearing_ the echo-area, whereas I was
> > talking about the _display_ in the echo-area.  I'm saying that I'm not
> > sure echo-area display is suited for the jobs that this bug wants it
> > to do.  As an example, I asked what would happen when the echo-area
> > can no longer be resized to accommodate all the messages that were not
> > cleared.
> 
> clear-message-function can handle not only echo-area but also e.g.
> the minibuffer messages.  In case of the returned value, by using
> 'dont-clear-message' it can sometimes tell the function clear_message
> to not clear the echo-area, so there are no resizing problems.
> It doesn't add more lines to the existing echo-area.

I gave an example of how using this for that purpose could be a
problem, and you responded only to that example.  But the problem that
bothers me is much more general, and you are silent about that larger
problem.

I'm asking once again: aren't we trying to use echo-area messages or
minibuffer messages displayed in the mini-window for a job that they
weren't intended to do: showing large amounts of messages at the same
time?