]> git.eshelyaron.com Git - emacs.git/commitdiff
Add a generic eglot-execute-command api
authorMichal Krzywkowski <k.michal@zoho.com>
Thu, 9 Aug 2018 13:24:29 +0000 (15:24 +0200)
committerJoão Távora <joaotavora@gmail.com>
Sat, 11 Aug 2018 16:14:05 +0000 (17:14 +0100)
* eglot.el (eglot-execute-command): New defgeneric and method.  Use it
  to request :workspace/executeCommand.
(eglot-code-actions): Use it.

lisp/progmodes/eglot.el

index 9e16d4316e48bb06e9f53e6098af5f886e19a11a..e250ce09243f883751f6e8139831f57d9399103b 100644 (file)
@@ -158,6 +158,9 @@ lasted more than that many seconds."
 (cl-defgeneric eglot-handle-notification (server method id &rest params)
   "Handle SERVER's METHOD notification with PARAMS.")
 
+(cl-defgeneric eglot-execute-command (server command arguments)
+  "Execute on SERVER COMMAND with ARGUMENTS.")
+
 (cl-defgeneric eglot-initialization-options (server)
   "JSON object to send under `initializationOptions'"
   (:method (_s) nil)) ; blank default
@@ -886,6 +889,14 @@ Uses THING, FACE, DEFS and PREPEND."
   "Handle unknown request"
   (jsonrpc-error "Unknown request method `%s'" method))
 
+(cl-defmethod eglot-execute-command
+  (server command arguments)
+  "Execute command by making a :workspace/executeCommand request."
+  (jsonrpc-request
+   server
+   :workspace/executeCommand
+   `(:command ,command :arguments ,arguments)))
+
 (cl-defmethod eglot-handle-notification
   (_server (_method (eql window/showMessage)) &key type message)
   "Handle notification window/showMessage"
@@ -1576,7 +1587,8 @@ If SKIP-SIGNATURE, don't try to send textDocument/signatureHelp."
                        (keyboard-quit)
                      retval))))))
     (if command-and-args
-        (jsonrpc-request server :workspace/executeCommand command-and-args)
+        (eglot-execute-command server (plist-get command-and-args :command)
+                               (plist-get command-and-args :arguments))
       (eglot--message "No code actions here"))))