flymake 设置为“保存时检查”后遇到的问题:需要重复保存两次才能提示正确的检查结果

我发现问题了,似乎是和 eglot 一起使用的时候才会出现这个问题,要么将 eglot-send-changed-idle-time 设置为 0,要么不将 flymake-no-changes-timeout 设置为 nil

这里 flymake 可能是让 eglot 作为后端的。假设我让 eglot-send-changed-idle-time = 1flymake-no-changes-timeout = nil,那么我打了一大段字然后马上按 C-x C-s,此时eglot一直没有访问 LSP server,所以拿到的都是旧数据。因此报的错也都是旧的错误。

实际上最好是当我按下 C-x C-s 的时候,eglot 先和 LSP server 通信更新错误列表,然后再让 flymake 显示。

2 个赞