From fad48a20e665e6b5b51c417e9c04946517a2aa2f Mon Sep 17 00:00:00 2001 From: Jimmy Yuen Ho Wong Date: Thu, 31 Aug 2023 19:47:12 +0100 Subject: [PATCH] Handle directory values of scopeUri in workspace/configuration MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 GitHub-reference: https://github.com/joaotavora/eglot/pull/1281 --- lisp/progmodes/eglot.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 65daa0941d5..6f08f26857b 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -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. -- 2.39.2