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

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

[elpa] externals/eglot 27fb0c6 18/54: Support serverInfo of LSP 3.15.0


From: João Távora
Subject: [elpa] externals/eglot 27fb0c6 18/54: Support serverInfo of LSP 3.15.0
Date: Thu, 16 Apr 2020 05:31:47 -0400 (EDT)

branch: externals/eglot
commit 27fb0c6c6738809a1e0e7ff83eda2c8e72fd929e
Author: Felicián Németh <address@hidden>
Commit: Felicián Németh <address@hidden>

    Support serverInfo of LSP 3.15.0
    
    Add support for serverInfo from the upcoming specification.  This
    changeset just stores the info sent by the server and slightly changes
    a greeting message.  But it opens up the possibility to identify
    servers even when eglot uses a TCP connection and therefore makes
    possible to implement server specific features (in eglot-x).
    
    Old message:
    ```
    Connected! Server `EGLOT (test-ccls/c++-mode)' now managing `c++-mode' 
buffers in project `test-ccls'.
    ```
    
    New message:
    ```
    Connected! Server `ccls' now managing `c++-mode' buffers in project 
`test-ccls'.
    ```
    
    * eglot.el (eglot--lsp-interface-alist):  Extend it with serverInfo.
    (eglot-lsp-server): Add member variable server-info.
    (eglot--connect): Store server-info and display server's name
    when connected.
---
 eglot.el | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/eglot.el b/eglot.el
index 0022737..a7b5d59 100644
--- a/eglot.el
+++ b/eglot.el
@@ -229,7 +229,7 @@ let the buffer grow forever."
       (DocumentHighlight (:range) (:kind))
       (FileSystemWatcher (:globPattern) (:kind))
       (Hover (:contents) (:range))
-      (InitializeResult (:capabilities))
+      (InitializeResult (:capabilities) (:serverInfo))
       (Location (:uri :range))
       (LogMessageParams (:type :message))
       (MarkupContent (:kind :value))
@@ -531,6 +531,9 @@ treated as in `eglot-dbind'."
    (capabilities
     :documentation "JSON object containing server capabilities."
     :accessor eglot--capabilities)
+   (server-info
+    :documentation "JSON object containing server info."
+    :accessor eglot--server-info)
    (shutdown-requested
     :documentation "Flag set when server is shutting down."
     :accessor eglot--shutdown-requested)
@@ -856,11 +859,12 @@ This docstring appeases checkdoc, that's all."
                                                     server)
                             :capabilities (eglot-client-capabilities server))
                       :success-fn
-                      (eglot--lambda ((InitializeResult) capabilities)
+                      (eglot--lambda ((InitializeResult) capabilities 
serverInfo)
                         (unless cancelled
                           (push server
                                 (gethash project eglot--servers-by-project))
                           (setf (eglot--capabilities server) capabilities)
+                          (setf (eglot--server-info server) serverInfo)
                           (jsonrpc-notify server :initialized 
(make-hash-table))
                           (dolist (buffer (buffer-list))
                             (with-current-buffer buffer
@@ -888,7 +892,9 @@ This docstring appeases checkdoc, that's all."
                           (eglot--message
                            "Connected! Server `%s' now managing `%s' buffers \
 in project `%s'."
-                           (jsonrpc-name server) managed-major-mode
+                           (or (plist-get serverInfo :name)
+                               (jsonrpc-name server))
+                           managed-major-mode
                            (eglot--project-nickname server))
                           (when tag (throw tag t))))
                       :timeout eglot-connect-timeout



reply via email to

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