]> git.eshelyaron.com Git - emacs.git/commitdiff
Merge master into jsonrpc-refactor
authorJoão Távora <joaotavora@gmail.com>
Fri, 8 Jun 2018 17:48:06 +0000 (18:48 +0100)
committerJoão Távora <joaotavora@gmail.com>
Fri, 8 Jun 2018 17:48:06 +0000 (18:48 +0100)
1  2 
lisp/progmodes/eglot.el

index cdb1c5b097c20a347c88c9088ef33342af3806f0,81a63fdbea9cf61806eb516fa9f8372552a66930..70d133bc49fbaa74916315fbbe80ea49a6894ac9
@@@ -590,20 -900,18 +590,24 @@@ If optional MARKERS, make markers.
  (add-hook 'eglot--managed-mode-hook 'flymake-mode)
  (add-hook 'eglot--managed-mode-hook 'eldoc-mode)
  
 +(defun eglot--find-current-server ()
 +  "Find the current logical EGLOT server."
 +  (let* ((probe (or (project-current) `(transient . ,default-directory))))
 +    (cl-find major-mode (gethash probe eglot--servers-by-project)
 +             :key #'eglot--major-mode)))
 +
+ (defvar-local eglot--unreported-diagnostics nil
+   "Unreported Flymake diagnostics for this buffer.")
  (defun eglot--maybe-activate-editing-mode (&optional server)
    "Maybe activate mode function `eglot--managed-mode'.
  If SERVER is supplied, do it only if BUFFER is managed by it.  In
  that case, also signal textDocument/didOpen."
    ;; Called even when revert-buffer-in-progress-p
 -  (let* ((cur (and buffer-file-name (eglot--current-server)))
 +  (let* ((cur (and buffer-file-name (eglot--find-current-server)))
           (server (or (and (null server) cur) (and server (eq server cur) cur))))
      (when server
+       (setq eglot--unreported-diagnostics `(:just-opened . nil))
        (eglot--managed-mode-onoff server 1)
        (eglot--signal-textDocument/didOpen))))
  
@@@ -727,14 -1058,11 +731,11 @@@ Uses THING, FACE, DEFS and PREPEND.
    "Handle notification window/logMessage") ;; noop, use events buffer
  
  (cl-defmethod eglot-handle-notification
 -  (_server (_method (eql :telemetry/event)) &rest _any)
 +  (_server (_method (eql telemetry/event)) &rest _any)
    "Handle notification telemetry/event") ;; noop, use events buffer
  
- (defvar-local eglot--unreported-diagnostics nil
-   "Unreported diagnostics for this buffer.")
  (cl-defmethod eglot-handle-notification
 -  (server (_method (eql :textDocument/publishDiagnostics)) &key uri diagnostics)
 +  (server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics)
    "Handle notification publishDiagnostics"
    (if-let ((buffer (find-buffer-visiting (eglot--uri-to-path uri))))
        (with-current-buffer buffer