Eglot: better fix for bug#70724
If the project's root is or destroyed , this may happen for a variety of reasons, including reasons affecting non-reconnection scenarios, so better to check in eglot--connect. An Eglot "reconnection" has always created as accurate a copy of the previous server object as possible, down to the 'eq'ness or the saved initargs, language ids, etc. So re-querying for projects is not the thing to do here. A new different server can be created with `M-x eglot` which will ask about shutting down the existing one. * lisp/progmodes/eglot.el (eglot-reconnect): Revert previous change. (eglot--connect): Do sanity check here
This commit is contained in:
parent
b571c6571c
commit
6906ed28f1
1 changed files with 11 additions and 10 deletions
|
@ -1419,15 +1419,11 @@ 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)))
|
||||
(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--connect (eglot--major-modes server)
|
||||
(eglot--project server)
|
||||
(eieio-object-class-name server)
|
||||
(eglot--saved-initargs server)
|
||||
(eglot--language-ids server))
|
||||
(eglot--message "Reconnected!"))
|
||||
|
||||
(defvar eglot--managed-mode) ; forward decl
|
||||
|
@ -1518,7 +1514,12 @@ Each function is passed the server as an argument")
|
|||
This docstring appeases checkdoc, that's all."
|
||||
(let* ((default-directory (project-root project))
|
||||
(nickname (project-name project))
|
||||
(readable-name (format "EGLOT (%s/%s)" nickname managed-modes))
|
||||
(readable-name
|
||||
(progn
|
||||
(unless (file-exists-p default-directory)
|
||||
;; could happen because of bug#70724 or just because
|
||||
(eglot--error "Project '%s' is gone!" nickname))
|
||||
(format "EGLOT (%s/%s)" nickname managed-modes)))
|
||||
server-info
|
||||
(contact (if (functionp contact) (funcall contact) contact))
|
||||
(initargs
|
||||
|
|
Loading…
Add table
Reference in a new issue