Subject: Re: bug#67393: 29.1; Slow to open file if autosave exists

From: Juri Linkov <[email-masked]>
Date: Wed, 27 Dec 2023 19:20:07 +0200

>> > What I meant is to change the default `set-message-function' in such a
>> > way that it displays "important" messages for a custom time period, in
>> > addition to the last message.
>>
>> I agree.  The most annoying delay is in 'ispell-parse-output':
>>
>>     (ding) ; error message from ispell!
>>     (message "Ispell error: %s" output)
>>     (sit-for 5)
>>
>> So I need to waste 5 seconds several times during spell-checking.
>
> Only when there's an error, right?

Often during spell-checking it's really not an error, but a warning
that text in some unsupported encoding can't be spell-checked.

>> It would be nicer to prepend this error message to any last displayed
>> message during these 5 seconds.
>
> We don't really know whether doing that will be effective.  Given N
> lines of messages in the echo-area, what are the chances that the user
> will see all of them, or even the most important one(s)?
>
> IOW, we don't have any real experience with this kind of UI.  We need
> to collect such experience first, before we conclude that this could
> be used as an alternative to sit-for.

I propose to refactor such code

  (message "Ispell error: %s" output)
  (sit-for 5)

to a new separate function, e.g.

  (important-message 5 "Ispell error: %s" output)

with a simple implementation

  (defun important-message (seconds format-string &rest args)
    (apply #'message format-string args)
    (sit-for seconds))

Then users could easily override such annoying delay.
Or maybe even the default implementation can check
if set-message-functions already contains set-multi-message
that ensures that the important message will not be missed,
and not to use sit-for in this case.