bug#81514: 32.0.50; Eglot messages progress reporter shows errors

Stéphane Marks <[email protected]> Wed, 5 Aug 2026 16:08:21 +0200
Newsgroups gmane.emacs.bugs
Message-ID <CAN+1HbrXid7ExRHVTKWJ3Dn4KHiQ81H_SkpwSK2Xx61nNZDWSw@mail.gmail.com>
On Wed, Aug 5, 2026 at 10:05 AM Sean Whitton <[email protected]>
wrote:

> Stéphane Marks [05/Aug  3:56pm +02] wrote:
> > On Wed, Aug 5, 2026 at 7:34 AM Sean Whitton <[email protected]>
> > wrote:
> >
> >> João Távora [05/Aug 12:19pm +01] wrote:
> >> > On Wed, Aug 5, 2026, 12:15 João Távora <[email protected]> wrote:
> >> >
> >> >> Afaik, while Eglot had its shortcomings in its usage of progress
> >> >> reporters, now hopefully fixed, the real trigger for this regression
> >> was a
> >> >> backward incompatible change in progress reporters. Presumably
> Stéphane
> >> 's
> >> >> patch addresses that. If you don't install it, it could be that other
> >> Elisp
> >> >> code out there making similar poor usage of reporters as Eglot did
> until
> >> >> now will start breaking.
> >> >>
> >> >
> >> > [ Sorry sent too early.]
> >> >
> >> > ...anyway, could be a risk worth taking for the general improvement of
> >> > things, or not. Maintenance policy call... In any case, if so, it
> should
> >> be
> >> > listed under backward incompatible Lisp changes.
> >>
> >> Thanks, though I don't think I yet see what's backwards incompatible
> >> about it.  I'd like to know exactly what this is trying to fix and how.
> >>
> >
> > The one-line patch fixes the cases where a progress-reporter-update
> caller
> > does not follow the strict API that UPDATE-TEXT is a string, or when
> > missing, VALUE should be a string.  The now fixed eglot call to
> > progress-reporter-update using the numeric interface with a non-numeric
> > (pulsing) reporter tickled the type mismatch.  Our fix below is a
> defensive
> > fix should other progress reporter calls make the same mistake and will
> > prevent signaling an error in innocuous situations such as the eglot case
> > that was caught by a keen-eyed eglot user.
> >
> > -      (setq update-text (concat (if update-text " " "") update-text))
> > +      (setq update-text (if update-text (format " %s" update-text) ""))
>
> You and João seem to disagree about the status of this fix.  He thinks
> it's an incompatible change, you think it's innocuous.  Is that right?
> Do you think it's not an incompatible change?
>

It is 100% compatible except that now emacs-31 will not signal if a call to
progress-reporter-update uses the numeric calling convention for a
non-numeric progress reporter.  Joao's changes are independent of these and
are defensive in their own right now establishing a numeric progress
reporter from the outset, leaving the subsequent progress-reporter-update
numeric calling conventions in place, and also correctly calling
progress-reporter-done which was missing from eglot.