From: João Távora Date: Sat, 4 Mar 2023 12:49:00 +0000 (+0000) Subject: Robustify Eglot for "transient" projects X-Git-Tag: emacs-29.0.90~250 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0bfba49ca7c;p=emacs.git Robustify Eglot for "transient" projects 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. --- diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index c74b13d3380..1f213d4e254 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -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