summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Gutov <dmitry@gutov.dev>2024-06-06 23:26:25 +0300
committerDmitry Gutov <dmitry@gutov.dev>2024-06-06 23:35:20 +0300
commitb571c6571c8bc4c34569650104aee273c19cbfd4 (patch)
tree40c54dbbd91f46aa27a80ec89e21a78dd0eb8822
parent91f51f5ac5e6343359ffcadc8341b8da767aab87 (diff)
eglot-reconnect: Re-fetch the current project
* lisp/progmodes/eglot.el (eglot-reconnect): Retrieve the current project just in case something changed (bug#70724).
-rw-r--r--lisp/progmodes/eglot.el14
1 files changed, 9 insertions, 5 deletions
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 5ccae5210fe..f58a895a3f1 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1419,11 +1419,15 @@ INTERACTIVE is t if called interactively."
(interactive (list (eglot--current-server-or-lose) t))
(when (jsonrpc-running-p server)
(ignore-errors (eglot-shutdown server interactive nil 'preserve-buffers)))
- (eglot--connect (eglot--major-modes server)
- (eglot--project server)
- (eieio-object-class-name server)
- (eglot--saved-initargs server)
- (eglot--language-ids server))
+ (let* ((default-directory (project-root (eglot--project server)))
+ (project (eglot--current-project)))
+ (if (not project)
+ (eglot--error "Project in `%s' is gone!" default-directory)
+ (eglot--connect (eglot--major-modes server)
+ project
+ (eieio-object-class-name server)
+ (eglot--saved-initargs server)
+ (eglot--language-ids server))))
(eglot--message "Reconnected!"))
(defvar eglot--managed-mode) ; forward decl