GNU bug report logs - #78862
31.0.50; Eglot couldn't refresh Flymake diagnostics on Rust project

Previous Next

Package: emacs;

Reported by: Eason Huang <aqua0210 <at> foxmail.com>

Date: Sun, 22 Jun 2025 07:13:02 UTC

Severity: normal

Found in version 31.0.50

To reply to this bug, email your comments to 78862 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78862; Package emacs. (Sun, 22 Jun 2025 07:13:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Eason Huang <aqua0210 <at> foxmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 22 Jun 2025 07:13:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 31.0.50; Eglot couldn't refresh Flymake diagnostics on Rust project
Date: Sun, 22 Jun 2025 15:05:06 +0800
Hello Emacs dev,

Recently, I found that if flymake-mode enabled before eglot,eglot can not
refresh the Flymake diagnostics.
Disable flymake with `M-x flymake-mode`, and then enable eglot
with `M-x eglot` can fix the issue. Or with the below snippet can fix
it:

```
(with-eval-after-load 'eglot
    (add-hook 'eglot-managed-mode-hook (lambda ()
                                         (flymake-mode -1)
                                         (flymake-mode 1))))

```

Steps to reproduce:

1. put below config into the init.el file
```
(use-package flymake
  :hook (prog-mode . flymake-mode))

(use-package rust-mode
  :ensure t
  :defer t
  :custom (rust-mode-treesitter-derive (and (fboundp 'treesit-available-p)
                                            (treesit-available-p))))
```
2. Start Emacs 31
3. Open any Rust project with a dependency
4. Open any Rust file in a rust project(make sure it use a dependency),
such as main.rs, then flymake will report errors. Because I don't have
flymake rust backends,the errors is expected.
  
5. Make sure `rust-analyzer` is in the PATH,My rust toolchain is as
below:

```
rustc --version
rustc 1.87.0 (17067e9ac 2025-05-09)

rust-analyzer --version
rust-analyzer 1.87.0 (17067e9ac6d 2025-05-09)
``
6. Start eglot with `M-x eglot`, now the errors still exist. This is the
issue.

7. `M-x flymake-mode` to disable flymake
8. `M-x eglot-reconnect` will refresh the Flymake diagnostics,and no
errors reported if your Rust project is compiled.


The issue only happened on Emacs 31, it works as expected on Emacs 30.  

----
Eason Huang


In GNU Emacs 31.0.50 (build 1, x86_64-apple-darwin24.5.0, NS
 appkit-2575.60 Version 15.5 (Build 24F74), git sha1 c916f816e0f) of
 2025-06-22 built on 192.168.1.9
Windowing system distributor 'Apple', version 10.3.2575
System Description:  macOS 15.5

Configured using:
 'configure --without-native-compilation --without-dbus
 'CPPFLAGS=-I/opt/local/include
 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
 'LDFLAGS=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-rpath
 /opt/local/lib/gcc14
 -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
 -arch x86_64''

Configured features:
ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS
PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
WEBP XIM ZLIB

Important settings:
  value of $LANG: zh_CN.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Elisp/l

Minor modes in effect:
  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-regexp-mode: t
  line-number-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 message yank-media puny rfc822 mml
mml-sec epa derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils noutline
outline eglot tree-widget wid-edit external-completion jsonrpc xref diff
ert pp ewoc debug backtrace find-func filenotify imenu pcase vc-git
diff-mode track-changes easy-mmode files-x vc-dispatcher rust-utils
rust-mode-treesitter rust-ts-mode rx c-ts-common treesit rust-mode
rust-playpen rust-compile rust-cargo rust-common rust-rustfmt dired-aux
dired dired-loaddefs time-date checkdoc lisp-mnt flymake project compile
text-property-search comint ansi-osc ansi-color ring warnings thingatpt
use-package-ensure cl-extra help-mode use-package-core emacs-git-version
rust-mode-autoloads package browse-url xdg url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt
gv bytecomp byte-compile url-vars cl-loaddefs cl-lib china-util rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win
ucs-normalize mule-util term/common-win 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 kqueue cocoa ns lcms2
multi-tty make-network-process tty-child-frames emacs)

Memory information:
((conses 16 124358 19418) (symbols 48 13713 0) (strings 32 38113 1660)
 (string-bytes 1 1006591) (vectors 16 25656)
 (vector-slots 8 302210 13180) (floats 8 63 99) (intervals 56 820 2)
 (buffers 1064 21))

-- 
Eason Huang





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78862; Package emacs. (Sun, 22 Jun 2025 08:00:02 GMT) Full text and rfc822 format available.

Message #8 received at 78862 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Eason Huang <aqua0210 <at> foxmail.com>, João Távora
 <joaotavora <at> gmail.com>, Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 78862 <at> debbugs.gnu.org
Subject: Re: bug#78862: 31.0.50;
 Eglot couldn't refresh Flymake diagnostics on Rust project
Date: Sun, 22 Jun 2025 10:59:27 +0300
> From: Eason Huang <aqua0210 <at> foxmail.com>
> Date: Sun, 22 Jun 2025 15:05:06 +0800
> 
> Hello Emacs dev,
> 
> Recently, I found that if flymake-mode enabled before eglot,eglot can not
> refresh the Flymake diagnostics.
> Disable flymake with `M-x flymake-mode`, and then enable eglot
> with `M-x eglot` can fix the issue. Or with the below snippet can fix
> it:
> 
> ```
> (with-eval-after-load 'eglot
>     (add-hook 'eglot-managed-mode-hook (lambda ()
>                                          (flymake-mode -1)
>                                          (flymake-mode 1))))
> 
> ```
> 
> Steps to reproduce:
> 
> 1. put below config into the init.el file
> ```
> (use-package flymake
>   :hook (prog-mode . flymake-mode))
> 
> (use-package rust-mode
>   :ensure t
>   :defer t
>   :custom (rust-mode-treesitter-derive (and (fboundp 'treesit-available-p)
>                                             (treesit-available-p))))
> ```
> 2. Start Emacs 31
> 3. Open any Rust project with a dependency
> 4. Open any Rust file in a rust project(make sure it use a dependency),
> such as main.rs, then flymake will report errors. Because I don't have
> flymake rust backends,the errors is expected.
>   
> 5. Make sure `rust-analyzer` is in the PATH,My rust toolchain is as
> below:
> 
> ```
> rustc --version
> rustc 1.87.0 (17067e9ac 2025-05-09)
> 
> rust-analyzer --version
> rust-analyzer 1.87.0 (17067e9ac6d 2025-05-09)
> ``
> 6. Start eglot with `M-x eglot`, now the errors still exist. This is the
> issue.
> 
> 7. `M-x flymake-mode` to disable flymake
> 8. `M-x eglot-reconnect` will refresh the Flymake diagnostics,and no
> errors reported if your Rust project is compiled.
> 
> 
> The issue only happened on Emacs 31, it works as expected on Emacs 30.  

Thanks, I hope João and Spencer will have comments or suggestions
about this.

> ----
> Eason Huang
> 
> 
> In GNU Emacs 31.0.50 (build 1, x86_64-apple-darwin24.5.0, NS
>  appkit-2575.60 Version 15.5 (Build 24F74), git sha1 c916f816e0f) of
>  2025-06-22 built on 192.168.1.9
> Windowing system distributor 'Apple', version 10.3.2575
> System Description:  macOS 15.5
> 
> Configured using:
>  'configure --without-native-compilation --without-dbus
>  'CPPFLAGS=-I/opt/local/include
>  -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk'
>  'LDFLAGS=-L/opt/local/lib -Wl,-headerpad_max_install_names -Wl,-rpath
>  /opt/local/lib/gcc14
>  -Wl,-syslibroot,/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
>  -arch x86_64''
> 
> Configured features:
> ACL GIF GLIB GMP GNUTLS JPEG LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS
> PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER
> WEBP XIM ZLIB
> 
> Important settings:
>   value of $LANG: zh_CN.UTF-8
>   locale-coding-system: utf-8-unix
> 
> Major mode: Elisp/l
> 
> Minor modes in effect:
>   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-regexp-mode: t
>   line-number-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 message yank-media puny rfc822 mml
> mml-sec epa derived epg rfc6068 epg-config gnus-util mm-decode mm-bodies
> mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail
> rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils noutline
> outline eglot tree-widget wid-edit external-completion jsonrpc xref diff
> ert pp ewoc debug backtrace find-func filenotify imenu pcase vc-git
> diff-mode track-changes easy-mmode files-x vc-dispatcher rust-utils
> rust-mode-treesitter rust-ts-mode rx c-ts-common treesit rust-mode
> rust-playpen rust-compile rust-cargo rust-common rust-rustfmt dired-aux
> dired dired-loaddefs time-date checkdoc lisp-mnt flymake project compile
> text-property-search comint ansi-osc ansi-color ring warnings thingatpt
> use-package-ensure cl-extra help-mode use-package-core emacs-git-version
> rust-mode-autoloads package browse-url xdg url url-proxy url-privacy
> url-expand url-methods url-history url-cookie generate-lisp-file
> url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
> eieio eieio-core cl-macs icons password-cache json subr-x map byte-opt
> gv bytecomp byte-compile url-vars cl-loaddefs cl-lib china-util rmc
> iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
> vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win
> ucs-normalize mule-util term/common-win 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 kqueue cocoa ns lcms2
> multi-tty make-network-process tty-child-frames emacs)
> 
> Memory information:
> ((conses 16 124358 19418) (symbols 48 13713 0) (strings 32 38113 1660)
>  (string-bytes 1 1006591) (vectors 16 25656)
>  (vector-slots 8 302210 13180) (floats 8 63 99) (intervals 56 820 2)
>  (buffers 1064 21))
> 
> -- 
> Eason Huang
> 
> 
> 
> 
> 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78862; Package emacs. (Sun, 22 Jun 2025 11:34:02 GMT) Full text and rfc822 format available.

Message #11 received at 78862 <at> debbugs.gnu.org (full text, mbox):

From: Eason Huang <aqua0210 <at> foxmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Spencer Baugh <sbaugh <at> janestreet.com>, 78862 <at> debbugs.gnu.org,
 João Távora <joaotavora <at> gmail.com>
Subject: Re: bug#78862: 31.0.50; Eglot couldn't refresh Flymake diagnostics
 on Rust project
Date: Sun, 22 Jun 2025 19:27:56 +0800
Eli Zaretskii <eliz <at> gnu.org> writes:

>> From: Eason Huang <aqua0210 <at> foxmail.com>
>> Date: Sun, 22 Jun 2025 15:05:06 +0800
>> 
>> Hello Emacs dev,
>> 
>> Recently, I found that if flymake-mode enabled before eglot,eglot can not
>> refresh the Flymake diagnostics.
>> Disable flymake with `M-x flymake-mode`, and then enable eglot
>> with `M-x eglot` can fix the issue. Or with the below snippet can fix
>> it:
>> 
>> ```
>> (with-eval-after-load 'eglot
>>     (add-hook 'eglot-managed-mode-hook (lambda ()
>>                                          (flymake-mode -1)
>>                                          (flymake-mode 1))))
>> 
>> ```
>> 
>> Steps to reproduce:
>> 
>> 1. put below config into the init.el file
>> ```
>> (use-package flymake
>>   :hook (prog-mode . flymake-mode))
>> 
>> (use-package rust-mode
>>   :ensure t
>>   :defer t
>>   :custom (rust-mode-treesitter-derive (and (fboundp 'treesit-available-p)
>>                                             (treesit-available-p))))
>> ```
>> 2. Start Emacs 31
>> 3. Open any Rust project with a dependency
>> 4. Open any Rust file in a rust project(make sure it use a dependency),
>> such as main.rs, then flymake will report errors. Because I don't have
>> flymake rust backends,the errors is expected.
>>   
>> 5. Make sure `rust-analyzer` is in the PATH,My rust toolchain is as
>> below:
>> 
>> ```
>> rustc --version
>> rustc 1.87.0 (17067e9ac 2025-05-09)
>> 
>> rust-analyzer --version
>> rust-analyzer 1.87.0 (17067e9ac6d 2025-05-09)
>> ``
>> 6. Start eglot with `M-x eglot`, now the errors still exist. This is the
>> issue.
>> 
>> 7. `M-x flymake-mode` to disable flymake
>> 8. `M-x eglot-reconnect` will refresh the Flymake diagnostics,and no
>> errors reported if your Rust project is compiled.
>> 
>> 
>> The issue only happened on Emacs 31, it works as expected on Emacs 30.  
>
> Thanks, I hope João and Spencer will have comments or suggestions
> about this.
>

>
>

Hello Eli, João and Spencer,

I find out that it is related to `rust-ts-flymake-command`, when
customize it's value to `'("cargo" "clippy")`, it works as expected.

It works with below rust config:

```
(use-package rust-mode
  :defer t
  :custom
  (rust-mode-treesitter-derive (and (fboundp 'treesit-available-p)
                                    (treesit-available-p)))
  (rust-ts-flymake-command '("cargo" "clippy")))

```

May be this information help.

-- 
Eason Huang





This bug report was last modified 2 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.