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

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

[elpa] externals/elpa b19b294 64/71: Close #558: handle LSP 3.15's isPre


From: João Távora
Subject: [elpa] externals/elpa b19b294 64/71: Close #558: handle LSP 3.15's isPreferred code action property
Date: Wed, 16 Dec 2020 11:42:27 -0500 (EST)

branch: externals/elpa
commit b19b294198b1d05a5cc9dfcf9b5a236519fdbd7b
Author: Damien Merenne <damien@bloom-life.com>
Commit: João Távora <joaotavora@gmail.com>

    Close #558: handle LSP 3.15's isPreferred code action property
    
    * eglot.el (eglot--lsp-interface-alist): Add :isPreferred to CodeAction.
    (eglot-client-capabilities):  Announce :isPreferredSupport.
    (eglot-code-actions): Consider preferred CodeAction item.
    
    Co-authored-by: João Távora <joaotavora@gmail.com>
---
 eglot.el | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/eglot.el b/eglot.el
index 60bc56e..bd3bb53 100644
--- a/eglot.el
+++ b/eglot.el
@@ -244,7 +244,7 @@ let the buffer grow forever."
 (eval-and-compile
   (defvar eglot--lsp-interface-alist
     `(
-      (CodeAction (:title) (:kind :diagnostics :edit :command))
+      (CodeAction (:title) (:kind :diagnostics :edit :command :isPreferred))
       (ConfigurationItem () (:scopeUri :section))
       (Command ((:title . string) (:command . string)) (:arguments))
       (CompletionItem (:label)
@@ -576,7 +576,8 @@ treated as in `eglot-dbind'."
                                      ["quickfix"
                                       "refactor" "refactor.extract"
                                       "refactor.inline" "refactor.rewrite"
-                                      "source" "source.organizeImports"])))
+                                      "source" "source.organizeImports"]))
+                                  :isPreferredSupport t)
              :formatting         `(:dynamicRegistration :json-false)
              :rangeFormatting    `(:dynamicRegistration :json-false)
              :rename             `(:dynamicRegistration :json-false)
@@ -2516,12 +2517,19 @@ code actions at point"
                         (cons title all))
                       actions)
               (eglot--error "No code actions here")))
+         (preferred-action (cl-find-if
+                             (jsonrpc-lambda (&key isPreferred 
&allow-other-keys)
+                               isPreferred)
+                             actions))
          (menu `("Eglot code actions:" ("dummy" ,@menu-items)))
          (action (if (listp last-nonmenu-event)
                      (x-popup-menu last-nonmenu-event menu)
                    (cdr (assoc (completing-read "[eglot] Pick an action: "
                                                 menu-items nil t
-                                                nil nil (car menu-items))
+                                                nil nil (or (plist-get
+                                                             preferred-action
+                                                             :title)
+                                                            (car menu-items)))
                                menu-items)))))
     (eglot--dcase action
       (((Command) command arguments)



reply via email to

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