GNU bug report logs - #64274
30.0.50; Eglot requests textDocument/documentSymbol if its not declared in the server capabilities

Previous Next

Package: emacs;

Reported by: Wilhelm Kirschbaum <wkirschbaum <at> gmail.com>

Date: Sat, 24 Jun 2023 19:48:02 UTC

Severity: normal

Found in version 30.0.50

Done: João Távora <joaotavora <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: João Távora <joaotavora <at> gmail.com>
To: Wilhelm Kirschbaum <wkirschbaum <at> gmail.com>
Cc: 64274 <at> debbugs.gnu.org
Subject: bug#64274: 30.0.50; Eglot requests textDocument/documentSymbol if its not declared in the server capabilities
Date: Sun, 25 Jun 2023 00:06:00 +0100
Wilhelm Kirschbaum <wkirschbaum <at> gmail.com> writes:

>> Thanks, i think the patch is in the right direction, but you could
>> use eglot--server-capable-or-lose.
>>
>
> The idea is to transparently just fall back to the non-eglot imenu and
> not sure if I want to see a warning for this every time imenu gets
> called. > Can you test it?

OK, this makes sense.  Then please test this instead.

João

diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index e2478f2dde3..c353ab6fce0 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -3348,9 +3348,11 @@ eglot--imenu-DocumentSymbol
                             (mapcar (lambda (c) (apply #'dfs c)) children))))))
     (mapcar (lambda (s) (apply #'dfs s)) res)))
 
-(defun eglot-imenu ()
+(cl-defun eglot-imenu ()
   "Eglot's `imenu-create-index-function'.
 Returns a list as described in docstring of `imenu--index-alist'."
+  (unless (eglot--server-capable :textDocument/documentSymbol)
+    (cl-return-from eglot-imenu))
   (let* ((res (eglot--request (eglot--current-server-or-lose)
                               :textDocument/documentSymbol
                               `(:textDocument




This bug report was last modified 2 years and 11 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.