emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/elpa d2eca65 045/139: Fix another Flymake sync bug


From: João Távora
Subject: [elpa] externals/elpa d2eca65 045/139: Fix another Flymake sync bug
Date: Mon, 14 May 2018 09:53:32 -0400 (EDT)

branch: externals/elpa
commit d2eca65b86acea1e7ce293f737806affec8f89c4
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Fix another Flymake sync bug
    
    * eglot.el (eglot-flymake-backend): Only report unreported sometimes.
    (eglot--maybe-activate-editing-mode): Start flymake explicitly
    when didOpen.
    (eglot--textDocument/publishDiagnostics): No need to set
    unreported-diagnostics to nil.
    (flymake): Require it.
---
 eglot.el | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/eglot.el b/eglot.el
index ccf4b72..3561da2 100644
--- a/eglot.el
+++ b/eglot.el
@@ -32,6 +32,7 @@
 (require 'pcase)
 (require 'compile) ; for some faces
 (require 'warnings)
+(require 'flymake)
 
 (defgroup eglot nil
   "Interaction with Language Server Protocol servers"
@@ -657,12 +658,11 @@ running.  INTERACTIVE is t if called interactively."
                                   message))))
                    into diags
                    finally
-                   (if (null eglot--current-flymake-report-fn)
-                       (setq eglot--unreported-diagnostics
-                             diags)
-                     (funcall eglot--current-flymake-report-fn
-                              diags)
-                     (setq eglot--unreported-diagnostics nil))))))
+                   (if eglot--current-flymake-report-fn
+                       (funcall eglot--current-flymake-report-fn
+                                diags)
+                     (setq eglot--unreported-diagnostics
+                           diags))))))
      (t
       (eglot--message "OK so %s isn't visited" filename)))))
 
@@ -724,7 +724,8 @@ that case, also signal textDocument/didOpen."
                 (and proc (eq proc cur)))
         (unless eglot-editing-mode
           (eglot-editing-mode 1))
-        (eglot--signalDidOpen)))))
+        (eglot--signalDidOpen)
+        (flymake-start)))))
 
 (add-hook 'find-file-hook 'eglot--maybe-activate-editing-mode)
 
@@ -947,10 +948,11 @@ Records START, END and LENGTH locally."
 (defun eglot-flymake-backend (report-fn &rest _more)
   "An EGLOT Flymake backend.
 Calls REPORT-FN maybe if server publishes diagnostics in time."
-  ;; Call immediately with anything unreported (this will clear any
-  ;; pending diags)
-  (funcall report-fn eglot--unreported-diagnostics)
-  (setq eglot--unreported-diagnostics nil)
+  ;; Maybe call immediately if anything unreported (this will clear
+  ;; any pending diags)
+  (when eglot--unreported-diagnostics
+    (funcall report-fn eglot--unreported-diagnostics)
+    (setq eglot--unreported-diagnostics nil))
   ;; Setup so maybe it's called later, too.
   (setq eglot--current-flymake-report-fn report-fn)
   ;; Take this opportunity to signal a didChange that might eventually



reply via email to

[Prev in Thread] Current Thread [Next in Thread]