]> git.eshelyaron.com Git - emacs.git/commitdiff
Robustify Eglot for "transient" projects
authorJoão Távora <joaotavora@gmail.com>
Sat, 4 Mar 2023 12:49:00 +0000 (12:49 +0000)
committerJoão Távora <joaotavora@gmail.com>
Sat, 4 Mar 2023 12:49:00 +0000 (12:49 +0000)
When Eglot needs to synthesize a "transient" project for
default-directory sometimes the value of that variable is set to an
unexpanded value, sometimes not.  This can cause simple invocations
like.

   Emacs -Q ~/path/to-some-python-file.py -f eglot

to fail, because eglot--current-server will be looking for a project
in the registry called

    (transient . "~/path")

where in reality it is stored there as

    (transient . "/home/someuser/path")

The fix is to always expand default-directory in eglot--current-project.

* lisp/progmodes/eglot.el (eglot--current-project): Use
expand-file-name.

lisp/progmodes/eglot.el

index c74b13d33803511574d8e869d10ae761ff130b71..1f213d4e254b9b380289f7a115047ccf4b286cb3 100644 (file)
@@ -1079,7 +1079,8 @@ variable (which see) can query the value `eglot-lsp-context' to
 decide whether a given directory is a project containing a
 suitable root directory for a given LSP server's purposes."
   (let ((eglot-lsp-context t))
-    (or (project-current) `(transient . ,default-directory))))
+    (or (project-current)
+        `(transient . ,(expand-file-name default-directory)))))
 
 ;;;###autoload
 (defun eglot (managed-major-mode project class contact language-id