Also per https://github.com/joaotavora/eglot/issues/957.
Only actually and eagerly report LSP diagnotics if the user has
Flymake starting automatically on a timer (flymake-no-changes-timeout
is a number).
By contrast, if flymake-no-changes-timeout is nil, the user starts the
diagnostic collection process on-demand via 'M-x flymake-start'.
Since the control of such collection is impossible with LSP, we should
just hold on to whatever diagnostics we have (which are presumably
up-to-date) until the next invocation of 'eglot-flymake-backend'.
For now, this doesn't affect Flymake "list-only" diagnostics. Those
are reported via the 'flymake-list-only-diagonstics' variable and
are always communicated immediately to it.
* eglot.el: (eglot-handle-notification
textDocument/publishDiagnostics): Consult flymake-no-changes-timeout.
Suggested-by: Jim Davis <jim.jd.davis@gmail.com>
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/508
collect it)))
`((face . ,faces))))))
into diags
- finally (cond (eglot--current-flymake-report-fn
+ finally (cond ((and
+ ;; only add to current report if Flymake
+ ;; starts on idle-timer (github#958)
+ (not (null flymake-no-changes-timeout))
+ eglot--current-flymake-report-fn)
(eglot--report-to-flymake diags))
(t
(setq eglot--diagnostics diags)))))