]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't advertise didchangewatchedfiles on tramp
authorJoão Távora <joaotavora@gmail.com>
Tue, 15 Mar 2022 10:20:24 +0000 (10:20 +0000)
committerJoão Távora <joaotavora@gmail.com>
Tue, 15 Mar 2022 10:21:22 +0000 (10:21 +0000)
* eglot.el (eglot--trampish-p): New helper.
(eglot-client-capabilities): Use it.
(eglot--uri-to-path): Use it.

GitHub-reference: per https://github.com/joaotavora/eglot/issues/883

lisp/progmodes/eglot.el

index cc0a06f4cbd788259435e444d7fb38a29328ab09..ea9299ab59e22062bbfbd0d3e97a40a41b49e6f0 100644 (file)
@@ -644,13 +644,15 @@ treated as in `eglot-dbind'."
 
 (cl-defgeneric eglot-client-capabilities (server)
   "What the EGLOT LSP client supports for SERVER."
-  (:method (_s)
+  (:method (s)
            (list
             :workspace (list
                         :applyEdit t
                         :executeCommand `(:dynamicRegistration :json-false)
                         :workspaceEdit `(:documentChanges t)
-                        :didChangeWatchedFiles `(:dynamicRegistration t)
+                        :didChangeWatchedFiles
+                        `(:dynamicRegistration
+                          ,(if (eglot--trampish-p s) :json-false t))
                         :symbol `(:dynamicRegistration :json-false)
                         :configuration t)
             :textDocument
@@ -1401,9 +1403,7 @@ If optional MARKER, return a marker instead"
   "Convert URI to file path, helped by `eglot--current-server'."
   (when (keywordp uri) (setq uri (substring (symbol-name uri) 1)))
   (let* ((server (eglot-current-server))
-         (remote-prefix (and server
-                             (file-remote-p
-                              (project-root (eglot--project server)))))
+         (remote-prefix (and server (eglot--trampish-p server)))
          (retval (url-filename (url-generic-parse-url (url-unhex-string uri))))
          ;; Remove the leading "/" for local MS Windows-style paths.
          (normalized (if (and (not remote-prefix)
@@ -1518,6 +1518,10 @@ and just return it.  PROMPT shouldn't end with a question mark."
              (cl-find read servers :key name :test #'equal)))
           (t (car servers)))))
 
+(defun eglot--trampish-p (server)
+  "Tell if SERVER's project root is `file-remote-p'."
+  (file-remote-p (project-root (eglot--project server))))
+
 \f
 ;;; Minor modes
 ;;;