Subject: bug#70554: closed (Re: bug#70554: [PATCH] Eglot: Add 'command-modes' property to all suitable commands)

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 02 May 2024 08:53:02 +0000

Your bug report

#70554: [PATCH] Eglot: Add 'command-modes' property to all suitable commands

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].

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

Subject: Re: bug#70554: [PATCH] Eglot: Add 'command-modes' property to all suitable commands
From: Eli Zaretskii <[email-masked]>
To: Augusto Stoffel <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Thu, 02 May 2024 11:52:23 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Augusto Stoffel <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
> Date: Mon, 29 Apr 2024 20:12:14 +0200
> 
> On Sat, 27 Apr 2024 at 10:46, João Távora wrote:
> 
> > Isn't there a way to say this near where the commands are defined,
> > perhaps near the `interactive` which marks a given function as a 
> > command?  If there isn't, just install this, perhaps with a tweak 
> > to the commit message mentioning the top level form, and thanks.
> 
> This is not possible while keeping compatibility with older Emacs
> versions.  There's already a comment to that effect in the patch, so the
> change you mention can be made in the future.

Thanks, so I've now installed this on the master branch, and I'm
therefore closing this bug.

Subject: [PATCH] Eglot: Add 'command-modes' property to all suitable commands
From: Augusto Stoffel <[email-masked]>
To: [email-masked]
Date: Wed, 24 Apr 2024 20:45:54 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Tags: patch

See attachement.

>From 39b7e357706b6c7efb37f644d7ff990163c1db25 Mon Sep 17 00:00:00 2001
From: Augusto Stoffel <[email-masked]>
Date: Sun, 21 Apr 2024 11:21:58 +0200
Subject: [PATCH] Eglot: Add 'command-modes' property to all suitable commands

Those are the commands that call 'eglot--current-server-or-lose'.

* lisp/progmodes/eglot.el (eglot--managed-mode),
(eglot-list-connections-mode): Make non-interactive.
---
 lisp/progmodes/eglot.el | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index efdbfba1075..cddd8994212 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -1978,7 +1978,7 @@ eglot--track-changes
 
 (define-minor-mode eglot--managed-mode
   "Mode for source buffers managed by some Eglot project."
-  :init-value nil :lighter nil :keymap eglot-mode-map
+  :init-value nil :lighter nil :keymap eglot-mode-map :interactive nil
   (cond
    (eglot--managed-mode
     (pcase (plist-get (eglot--capabilities (eglot-current-server))
@@ -3951,6 +3951,7 @@ eglot--glob-emit-range
 (define-derived-mode eglot-list-connections-mode  tabulated-list-mode
   "" "Eglot mode for listing server connections
 \\{eglot-list-connections-mode-map}"
+  :interactive nil
   (setq-local tabulated-list-format
               `[("Language server" 16) ("Project name" 16) ("Modes handled" 16)])
   (tabulated-list-init-header))
@@ -4140,6 +4141,27 @@ eglot-inlay-hints-mode
               "https://debbugs.gnu.org/%s")
             (match-string 3))))
 
+;; Add command-mode property manually for compatibility with Emacs < 28.
+(dolist (sym '(eglot-clear-status
+               eglot-code-action-inline
+               eglot-code-action-organize-imports
+               eglot-code-action-quickfix
+               eglot-code-action-rewrite
+               eglot-code-action-rewrite
+               eglot-code-actions
+               eglot-find-declaration
+               eglot-find-implementation
+               eglot-find-typeDefinition
+               eglot-forget-pending-continuations
+               eglot-format
+               eglot-format-buffer
+               eglot-inlay-hints-mode
+               eglot-reconnect
+               eglot-rename
+               eglot-signal-didChangeConfiguration
+               eglot-stderr-buffer))
+  (function-put sym 'command-modes '(eglot--managed-mode)))
+
 (provide 'eglot)

-- 
2.44.0