]> git.eshelyaron.com Git - emacs.git/commitdiff
eglot-reconnect: Re-fetch the current project
authorDmitry Gutov <dmitry@gutov.dev>
Thu, 6 Jun 2024 20:26:25 +0000 (23:26 +0300)
committerEshel Yaron <me@eshelyaron.com>
Fri, 7 Jun 2024 10:44:25 +0000 (12:44 +0200)
* lisp/progmodes/eglot.el (eglot-reconnect): Retrieve the current
project just in case something changed (bug#70724).

(cherry picked from commit b571c6571c8bc4c34569650104aee273c19cbfd4)

lisp/progmodes/eglot.el

index 22cee1ada7bc5dfcc683176adc147b412ef844ba..6b4c00fdb5505bbaeab505c5d635ca950fb395f6 100644 (file)
@@ -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