emacs-diffs
[Top][All Lists]
Advanced

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

feature/eglot2emacs 349f6b5f78 050/120: Don't advertise didchangewatched


From: João Távora
Subject: feature/eglot2emacs 349f6b5f78 050/120: Don't advertise didchangewatchedfiles on tramp
Date: Thu, 20 Oct 2022 07:16:52 -0400 (EDT)

branch: feature/eglot2emacs
commit 349f6b5f7894667b5acb5a6a3dd93bcf27751c75
Author: João Távora <joaotavora@gmail.com>
Commit: João Távora <joaotavora@gmail.com>

    Don't advertise didchangewatchedfiles on tramp
    
    * 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 | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index cc0a06f4cb..ea9299ab59 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -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))))
+
 
 ;;; Minor modes
 ;;;



reply via email to

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