Eglot: Add 'command-modes' property to all suitable commands
authorAugusto Stoffel <arstoffel@gmail.com>
Sun, 21 Apr 2024 09:21:58 +0000 (11:21 +0200)
committerEli Zaretskii <eliz@gnu.org>
Thu, 2 May 2024 08:50:57 +0000 (11:50 +0300)
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.  (Bug#70554)

lisp/progmodes/eglot.el

index a2ef0599305e970e00012ef8b9a331623015eaa9..407707d41225213f431bf13ec3be6eb1cd35d67e 100644 (file)
@@ -1977,7 +1977,7 @@ Use `eglot-managed-p' to determine if current buffer is managed.")
 
 (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))
@@ -3954,6 +3954,7 @@ If NOERROR, return predicate, else erroring function."
 (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))
@@ -4143,6 +4144,27 @@ If NOERROR, return predicate, else erroring function."
               "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)