]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't ignore flymake-no-changes-timeout
authorJoão Távora <joaotavora@gmail.com>
Thu, 19 May 2022 08:59:55 +0000 (09:59 +0100)
committerJoão Távora <joaotavora@gmail.com>
Thu, 19 May 2022 09:00:13 +0000 (10:00 +0100)
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

lisp/progmodes/eglot.el

index e8f060cd64ed933e8b839af52952afbc325c9cbf..4e28de18754f1d8aeb0461cffab46dff62eb066a 100644 (file)
@@ -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)))))