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

"Jacek Świerk" <[email protected]>
Newsgroups gmane.emacs.bugs
Message-ID <[email protected]>
When Eglot is configured with `eglot-report-progress` set to `messages`, it
reports an error while trying to use the progress reporter in a nontrivial
project.

Reproduction using rust-analyzer:
1. Clone https://github.com/BurntSushi/ripgrep
2. Open ripgrep/crates/core/main.rs
3. M-: (setopt eglot-report-progress 'messages)
4. M-x toggle-debug-on-error
5. M-x eglot

Debugger entered--Lisp error: (wrong-type-argument sequencep 100)
   progress-reporter-echo-area((7 . [1785304002.532535 nil nil "[eglot] 
ripgrep rustAnalyzer/Building compile-time-deps: Building 
compile-time-deps..." 1 0.2 nil nil]) 7 100)
   progress-reporter-do-update((7 . [1785304002.532535 nil nil "[eglot] 
ripgrep rustAnalyzer/Building compile-time-deps: Building 
compile-time-deps..." 1 0.2 nil nil]) 100 nil)
   eglot--reporter-update((7 . [1785304002.532535 nil nil "[eglot] 
ripgrep rustAnalyzer/Building compile-time-deps: Building 
compile-time-deps..." 1 0.2 nil nil]) 100 nil)
   #f(compiled-function (arg1 arg2 arg3 arg4 &rest rest) #<bytecode 
0x1c7b74ccff3232d6>)(#<eglot-lsp-server 1008c31da7cc> 
"rustAnalyzer/Building compile-time-deps" 100 nil)
   #f(compiled-function (arg1 arg2 &rest rest) "Handle $/progress 
notification identified by TOKEN from SERVER." #<bytecode 
-0x35b89fe1a323862>)(#<eglot-lsp-server 1008c31da7cc> $/progress :token 
"rustAnalyzer/Building compile-time-deps" :value (:kind "end"))
   apply(#f(compiled-function (arg1 arg2 &rest rest) "Handle $/progress 
notification identified by TOKEN from SERVER." #<bytecode 
-0x35b89fe1a323862>) #<eglot-lsp-server 1008c31da7cc> $/progress (:token 
"rustAnalyzer/Building compile-time-deps" :value (:kind "end")))
   eglot-handle-notification(#<eglot-lsp-server 1008c31da7cc> $/progress 
:token "rustAnalyzer/Building compile-time-deps" :value (:kind "end"))
   apply(eglot-handle-notification #<eglot-lsp-server 1008c31da7cc> 
$/progress (:token "rustAnalyzer/Building compile-time-deps" :value 
(:kind "end")))
   #f(compiled-function (server method params) #<bytecode 
0x1f1068c682e838aa>)(#<eglot-lsp-server 1008c31da7cc> $/progress (:token 
"rustAnalyzer/Building compile-time-deps" :value (:kind "end")))
   jsonrpc-connection-receive(#<eglot-lsp-server 1008c31da7cc> (:jsonrpc 
"2.0" :method "$/progress" :params (:token "rustAnalyzer/Building 
compile-time-deps" :value (:kind "end"))))
   #f(compiled-function (conn msg) #<bytecode 
0x1bafe9b6d4ce09dc>)(#<eglot-lsp-server 1008c31da7cc> (:jsonrpc "2.0" 
:method "$/progress" :params (:token "rustAnalyzer/Building 
compile-time-deps" :value (:kind "end"))))
   apply(#f(compiled-function (conn msg) #<bytecode 0x1bafe9b6d4ce09dc>) 
(#<eglot-lsp-server 1008c31da7cc> (:jsonrpc "2.0" :method "$/progress" 
:params (:token "rustAnalyzer/Building compile-time-deps" :value (:kind 
"end")))))
   timer-event-handler([t 27241 37827 781121 nil #f(compiled-function 
(conn msg) #<bytecode 0x1bafe9b6d4ce09dc>) (#<eglot-lsp-server 
1008c31da7cc> (:jsonrpc "2.0" :method "$/progress" :params (:token 
"rustAnalyzer/Building compile-time-deps" :value (:kind "end")))) nil 
734000 nil])

This seems to be introduced by the following commit
https://github.com/emacs-mirror/emacs/commit/b6849229003f214570acedfa7e2755051c0e4305
and most likely affects Emacs 31 as well.


In GNU Emacs 32.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
  3.24.52, cairo version 1.18.4) of 2026-07-29 built on arch
Repository revision: 9a431e431ad92f94f4290c3f0bf043b0f97a7b56
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12401013
System Description: Arch Linux

Configured using:
  'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
  --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
  --with-modules --without-m17n-flt --without-gconf
  --with-native-compilation=yes --with-xinput2 --with-x-toolkit=gtk3
  --without-xaw3d --with-sound=no --with-tree-sitter --without-gpm
  --without-compress-install 'CFLAGS=-march=native -O2 -pipe -fno-plt
  -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security
  -fstack-clash-protection -fcf-protection -fno-omit-frame-pointer
  -mno-omit-leaf-frame-pointer' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common
  -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,pack-relative-relocs
  -fuse-ld=mold''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSYSTEMD LIBXML2 MODULES NATIVE_COMP NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM XRANDR GTK3 ZLIB

Important settings:
   value of $LC_MESSAGES: en_US.UTF-8
   value of $LANG: en_US.UTF-8
   value of $XMODIFIERS: im=fcit
   locale-coding-system: utf-8-unix

Major mode: Elisp/l

Minor modes in effect:
   eglot-semantic-tokens-mode: t
   eglot-inlay-hints-mode: t
   eglot--managed-mode: t
   flymake-mode: t
   tooltip-mode: t
   global-eldoc-mode: t
   eldoc-mode: t
   show-paren-mode: t
   electric-indent-mode: t
   mouse-wheel-mode: t
   tool-bar-mode: t
   menu-bar-mode: t
   file-name-shadow-mode: t
   global-font-lock-mode: t
   font-lock-mode: t
   blink-cursor-mode: t
   minibuffer-nonselected-mode: t
   minibuffer-regexp-mode: t
   buffer-read-only: t
   line-number-mode: t
   indent-tabs-mode: t
   transient-mark-mode: t
   auto-composition-mode: t
   auto-encryption-mode: t
   auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug lisp-mnt message mailcap yank-media puny
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader sendmail
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils help-fns radix-tree cl-print time-date byte-opt cl-extra
eglot tree-widget external-completion jsonrpc xref flymake thingatpt
project diff diff-mode track-changes easy-mmode ert ewoc debug backtrace
help-mode find-func filenotify warnings compile text-property-search
comint ansi-osc ansi-color ring url-util url-parse auth-source eieio
eieio-core cl-macs gv password-cache json subr-x mule-util map url-vars
imenu cus-edit pp cus-start cus-load icons wid-edit pcase vc-git files-x
vc-dispatcher cl-seq rust-ts-mode c-ts-common treesit comp-run bytecomp
byte-compile comp-common rx dired-aux cl-loaddefs cl-lib dired
dired-loaddefs rmc iso-transl tooltip cconv eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel
term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd fontset
image regexp-opt fringe tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process
tty-child-frames native-compile emacs)

Memory information:
((conses 16 179879 13773) (symbols 48 14783 0) (strings 32 44223 2401)
  (string-bytes 1 1465434) (vectors 16 26030)
  (vector-slots 8 328856 9043) (floats 8 160 3) (intervals 56 2109 0)
  (buffers 1064 23))
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.