]> git.eshelyaron.com Git - emacs.git/commitdiff
Handle directory values of scopeUri in workspace/configuration
authorJimmy Yuen Ho Wong <wyuenho@gmail.com>
Thu, 31 Aug 2023 18:47:12 +0000 (19:47 +0100)
committerJoão Távora <joaotavora@gmail.com>
Thu, 31 Aug 2023 18:47:37 +0000 (19:47 +0100)
Even though scopeUri is specified to be of documentUri type, some
servers (notably pyright) insist on passing the pathname of a
directory there.  In pyright's case this is frequently useless, as the
directory is the project directory.  Nevertheless we can be lenient to
those servers by detecting whether the value is a directory and doing
the right thing.

Note that we do not (yet) support per-file configuration storage.

* lisp/progmodes/eglot.el (eglot--workspace-configuration-plist):
Rework.

Co-authored-by: João Távora <joaotavora@gmail.com>
GitHub-reference: https://github.com/joaotavora/eglot/pull/1281

lisp/progmodes/eglot.el

index 65daa0941d5c957879143be408f1043b7f9ef62f..6f08f26857b5805df851db3da9236df0be7710d5 100644 (file)
@@ -2608,8 +2608,10 @@ local value of the `eglot-workspace-configuration' variable, else
 use the root of SERVER's `eglot--project'."
   (let ((val (with-temp-buffer
                (setq default-directory
-                     (if path
-                         (file-name-directory path)
+                     ;; See github#1281
+                     (if path (if (file-directory-p path)
+                                  (file-name-as-directory path)
+                                (file-name-directory path))
                        (project-root (eglot--project server))))
                ;; Set the major mode to be the first of the managed
                ;; modes.  This is the one the user started eglot in.