branch: externals/eglot commit 2b87b06d9ef15e7c39d87fd5a4375b6deaa7e322 Author: João Távora <joaotav...@gmail.com> Commit: João Távora <joaotav...@gmail.com>
Fix #508: Don't ignore flymake-no-changes-timeout Also per #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.da...@gmail.com> --- eglot.el | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/eglot.el b/eglot.el index e8f060cd64..4e28de1875 100644 --- a/eglot.el +++ b/eglot.el @@ -1996,7 +1996,11 @@ COMMAND is a symbol naming the command." 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)))))