From: João Távora Date: Thu, 19 May 2022 08:59:55 +0000 (+0100) Subject: Don't ignore flymake-no-changes-timeout X-Git-Tag: emacs-29.0.90~1616^2~524^2~4^2~44 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5c6eb3caa903ad1479b3e901cee4b845bada1f1e;p=emacs.git Don't ignore flymake-no-changes-timeout 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 GitHub-reference: fix https://github.com/joaotavora/eglot/issues/508 --- diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index e8f060cd64e..4e28de18754 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/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)))))