]> git.eshelyaron.com Git - emacs.git/commitdiff
Eglot: allow skipping compile-time warnings about LSP interfaces
authorJoão Távora <joaotavora@gmail.com>
Sun, 11 Dec 2022 23:16:58 +0000 (23:16 +0000)
committerJoão Távora <joaotavora@gmail.com>
Sun, 11 Dec 2022 23:21:40 +0000 (23:21 +0000)
* lisp/progmodes/eglot.el (eglot-strict-mode): Add 'no-unknown-interfaces'.
(eglot--check-object): Honour new eglot-strict-mode value.

lisp/progmodes/eglot.el

index 2ef022992e7db6001455ed4a38c0006358edd5ef..2427e7b9d31d3311c390331f99da626796cfea61 100644 (file)
@@ -499,7 +499,7 @@ Here's what an element of this alist might look like:
       ;; disallow-non-standard-keys
       ;; enforce-required-keys
       ;; enforce-optional-keys
-      )
+      no-unknown-interfaces)
     "How strictly to check LSP interfaces at compile- and run-time.
 
 Value is a list of symbols (if the list is empty, no checks are
@@ -520,7 +520,10 @@ happens at run-time.  At compile-time, a warning is raised if a
 destructuring spec doesn't use all optional fields.
 
 If the symbol `disallow-unknown-methods' is present, Eglot warns
-on unknown notifications and errors on unknown requests."))
+on unknown notifications and errors on unknown requests.
+
+If the symbol `no-unknown-interfaces' is present, Eglot warns at
+compile time if an undeclared LSP interface is used."))
 
 (cl-defun eglot--check-object (interface-name
                                object
@@ -594,7 +597,7 @@ on unknown notifications and errors on unknown requests."))
                (when missing-out (byte-compile-warn
                                   "Destructuring for %s is missing out on %s"
                                   interface-name missing-out))))
-            (t
+            ((memq 'no-unknown-interfaces eglot-strict-mode)
              (byte-compile-warn "Unknown LSP interface %s" interface-name))))))
 
 (cl-defmacro eglot--dbind (vars object &body body)