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

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

[elpa] externals/eglot 4501831 02/11: Close #12: support purposedly igno


From: João Távora
Subject: [elpa] externals/eglot 4501831 02/11: Close #12: support purposedly ignoring a server capability
Date: Sun, 10 Jun 2018 09:57:28 -0400 (EDT)

branch: externals/eglot
commit 45018319e8ede9734929baf2f45bffcea80b0e48
Author: João Távora <address@hidden>
Commit: João Távora <address@hidden>

    Close #12: support purposedly ignoring a server capability
    
    * eglot.el (eglot-ignored-server-capabilites): New defcustom.
    (eglot--server-capable): Use it.
---
 eglot.el | 26 ++++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/eglot.el b/eglot.el
index de8d990..0869bd5 100644
--- a/eglot.el
+++ b/eglot.el
@@ -816,16 +816,26 @@ If optional MARKER, return a marker instead"
       (ignore-errors (funcall mode))
       (insert string) (font-lock-ensure) (buffer-string))))
 
+(defcustom eglot-ignored-server-capabilites (list)
+  "LSP server capabilities that Eglot could use, but won't.
+You could add, for instance, the symbol
+`:documentHighlightProvider' to prevent automatic highlighting
+under cursor."
+  :type '(repeat symbol))
+
 (defun eglot--server-capable (&rest feats)
   "Determine if current server is capable of FEATS."
-  (cl-loop for caps = (eglot--capabilities (eglot--current-server-or-lose))
-           then (cadr probe)
-           for feat in feats
-           for probe = (plist-member caps feat)
-           if (not probe) do (cl-return nil)
-           if (eq (cadr probe) t) do (cl-return t)
-           if (eq (cadr probe) :json-false) do (cl-return nil)
-           finally (cl-return (or probe t))))
+  (unless (cl-some (lambda (feat)
+                     (memq feat eglot-ignored-server-capabilites))
+                   feats)
+    (cl-loop for caps = (eglot--capabilities (eglot--current-server-or-lose))
+             then (cadr probe)
+             for feat in feats
+             for probe = (plist-member caps feat)
+             if (not probe) do (cl-return nil)
+             if (eq (cadr probe) t) do (cl-return t)
+             if (eq (cadr probe) :json-false) do (cl-return nil)
+             finally (cl-return (or probe t)))))
 
 (defun eglot--range-region (range &optional markers)
   "Return region (BEG . END) that represents LSP RANGE.



reply via email to

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