Subject: bug#60557: closed (Re: bug#60557: [PATCH] Fix eglot prompt when connection already exists)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 16 Jan 2023 14:55:02 +0000

Your bug report

#60557: [PATCH] Fix eglot prompt when connection already exists

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
60557: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60557
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#60557: [PATCH] Fix eglot prompt when connection already exists
From: Eli Zaretskii <[email-masked]>
To: João Távora <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Mon, 16 Jan 2023 16:54:14 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: João Távora <[email-masked]>
> Date: Mon, 16 Jan 2023 14:42:25 +0000
> Cc: [email-masked], [email-masked]
> 
> >   In eglot:
> >   progmodes/eglot.el:1078:44: Warning: Unused lexical argument `interactive'
> >
> > because the INTERACTIVE argument is now unused. 
> 
> You're right, I missed that. Sorry.
>  
> > Should it be renamed to _interactive?
> 
> Yes, that would be fine.  As would removing  the argument entirely. 
> 
> M-x eglot is _not_ meant  to be called from Lisp at at all, but some time 
> ago I found at least one user on emacs-devel was doing so.  So removing 
> it may break some code (that is probably already broken anyway, but still...).

I renamed it and updated the doc string to that effect.

Closing.

Subject: [PATCH] Fix eglot prompt when connection already exists
From: Evgeni Kolev <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Wed, 4 Jan 2023 17:44:27 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

[CC-ing João Távora, author of eglot]

This patch fixes an incorrect behavior of eglot. To reproduce:
- run M-x eglot
- run M-x eglot (again)
- eglot now prompts whether to reconnect to the existing LSP
- enter "n" (for no)
- now eglot shuts down the LSP process and reconnects - this is not
correct, the expected behavior is to not reconnect

The patch is below.

commit f7626c070d4bd63fab1df33153ab9deaec0a3f7b (HEAD -> master)
Author: Evgeni Kolev <[email-masked]>
Date:   Wed Jan 4 17:36:30 2023 +0200

    Fix eglot prompt when connection already exists

    When M-x eglot is executed twice, the second time it prompts whether
    to reconnect. Answering "no" was not working correctly - the existing
    LSP process was still reconnected.

    This behavior is fixed, answering "no" results in keeping the existing
    connection.

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index 6d192d9b333..7ac123f3c09 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1116,10 +1116,9 @@ eglot
   (setq managed-major-mode (eglot--ensure-list managed-major-mode))
   (let* ((current-server (eglot-current-server))
          (live-p (and current-server (jsonrpc-running-p current-server))))
-    (if (and live-p
-             interactive
-             (y-or-n-p "[eglot] Live process found, reconnect instead? "))
-        (eglot-reconnect current-server interactive)
+    (if (and live-p interactive)
+        (when (y-or-n-p "[eglot] Live process found, reconnect instead? ")
+          (eglot-reconnect current-server interactive))
       (when live-p (ignore-errors (eglot-shutdown current-server)))
       (eglot--connect managed-major-mode project class contact language-id))))