bug#81514: 32.0.50; Eglot messages progress reporter shows errors
Stéphane Marks <[email protected]>
| Newsgroups | gmane.emacs.bugs |
|---|---|
| Message-ID | <CAN+1HboTSyCcejU6UR5s32EO=CzsdB9DDAEXtvP5knmBgT2w_A@mail.gmail.com> |
On Wed, Jul 29, 2026 at 7:37 AM Eli Zaretskii <[email protected]> wrote: > > From: "Jacek Świerk" <[email protected]> > > Date: Wed, 29 Jul 2026 09:41:39 +0200 > > > > 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. > > Thanks. > > Stéphane, please look into fixing this. > I don't use rust so I don't have that toolchain installed. I tried to trigger this condition using clangd on src/emacs.c and it works fine. Perhaps my clangd configuration does not emit the asynchronous notifications that touch that eglot code path. If we can create a recipe that works with clangd that would be ideal.