Package: emacs;
Reported by: Phil Hagelberg <phil <at> hagelb.org>
Date: Sat, 9 Mar 2024 23:21:02 UTC
Severity: normal
Found in version 28.2
Done: Felician Nemeth <felician.nemeth <at> gmail.com>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 69683 in the body.
You can then email your comments to 69683 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#69683
; Package emacs
.
(Sat, 09 Mar 2024 23:21:02 GMT) Full text and rfc822 format available.Phil Hagelberg <phil <at> hagelb.org>
:bug-gnu-emacs <at> gnu.org
.
(Sat, 09 Mar 2024 23:21:02 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Phil Hagelberg <phil <at> hagelb.org> To: bug-gnu-emacs <at> gnu.org Subject: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Sat, 09 Mar 2024 23:19:25 +0000
When invoking M-x imenu in a buffer with eglot enabled, it uses eglot's LSP-aware implementation of imenu. However, not all LSP servers handle that functionality. When connected to a server that does not offer this functionality, eglot signals an error: jsonrpc-error: "request id=11 failed:", (jsonrpc-error-code . -32601), (jsonrpc-error-message . "\"textDocument/documentSymbol\" is not in the request-handlers table"), (jsonrpc-error-data) However, usually there is a perfectly good functional imenu implementation that the user wants to invoke; they just can't do it because eglot took over the imenu command. Ideally eglot should only add its functionality to the imenu command when it's connected to a server that actually supports the endpoint needed to handle it. You can reproduce this problem with fennel-mode and fennel-ls. * Install fennel-mode: https://git.sr.ht/~technomancy/fennel-mode Cloning and running M-x eval-buffer on fennel-mode.el is sufficient. * Install fennel-ls: https://git.sr.ht/~xerool/fennel-ls Clone and run `make install PREFIX=$WHATEVER', then evaluate this: (with-eval-after-load 'eglot (add-to-list 'eglot-server-programs '(fennel-mode . ("fennel-ls")))) * Open a new file, say /tmp/scratch.fnl and insert: (fn abc []) * Run M-x imenu, and see the error. * Run M-x eglot-shutdown. * Run M-x imenu, and it succeeds. I'm sure you could reproduce the same problem in another language where the Emacs mode supports imenu but the language server doesn't. But I don't know what other language fits that criteria. In GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.37, cairo version 1.16.0) of 2023-05-14, modified by Debian built on x86-ubc-01 Windowing system distributor 'The X.Org Foundation', version 11.0.12101007 System Description: Debian GNU/Linux 12 (bookworm) Configured using: 'configure --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/libexec --localstatedir=/var/lib --infodir=/usr/share/info --mandir=/usr/share/man --with-libsystemd --with-pop=yes --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/28.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/28.2/site-lisp:/usr/share/emacs/site-lisp --with-sound=alsa --without-gconf --with-mailutils --with-native-compilation --with-cairo --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars 'CFLAGS=-g -O2 -ffile-prefix-map=/build/emacs-mPr7Vr/emacs-28.2+1=. -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro' Configured features: ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM GTK3 ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Fennel Minor modes in effect: recentf-mode: t eglot--managed-mode: t flymake-mode: t paredit-mode: t whitespace-mode: t idle-highlight-mode: t hl-line-mode: t company-mode: t shell-dirtrack-mode: t winner-mode: t display-battery-mode: t display-time-mode: t save-place-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t prettify-symbols-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-mode-site-file hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-mode-site-file /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-autoloads hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-autoloads /usr/share/emacs/site-lisp/elpa/caml-4.6/inf-caml hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/inf-caml /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-hilit hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-hilit /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-types hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-types /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-compat hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-compat /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-pkg hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-pkg /usr/share/emacs/site-lisp/elpa/caml-4.6/caml hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-emacs hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-emacs /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-font-old hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-font-old /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-font hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-font /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-help hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-help /usr/share/emacs/site-lisp/elpa/caml-4.6/caml-xemacs hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/caml-xemacs /usr/share/emacs/site-lisp/elpa/caml-4.6/camldebug hides /usr/share/emacs/site-lisp/elpa-src/caml-4.6/camldebug /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-folders hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-folders /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-mark hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-mark /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-contrib hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-contrib /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-context hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-context /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-speedbar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-speedbar /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-contacts hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-contacts /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-actions hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-actions /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-search hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-search /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-lists hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-lists /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-message hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-message /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-headers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-headers /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-helpers hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-helpers /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-view hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-view /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-compose hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-compose /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-bookmarks hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-bookmarks /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-draft hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-draft /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-update hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-update /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-config hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-config /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-main hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-main /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-vars hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-vars /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-org hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-org /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-server hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-server /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-pkg hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-pkg /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-autoloads hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-autoloads /usr/share/emacs/site-lisp/elpa/mu4e-1.8.14/mu4e-icalendar hides /usr/share/emacs/site-lisp/elpa-src/mu4e-1.8.14/mu4e-icalendar /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-pkg hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-pkg /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-opam hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-opam /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-jbuild hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-jbuild /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-menhir hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-menhir /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/ocamldebug hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/ocamldebug /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/dot-emacs hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/dot-emacs /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-autoloads hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-autoloads /usr/share/emacs/site-lisp/elpa/tuareg-2.2.0/tuareg-site-file hides /usr/share/emacs/site-lisp/elpa-src/tuareg-2.2.0/tuareg-site-file /usr/share/emacs/site-lisp/utop hides /usr/share/emacs/site-lisp/elpa-src/utop-1.11/utop ~/.emacs.d//phil/../custom hides /usr/share/emacs/28.2/lisp/custom Features: (shadow sort mail-extr emacsbug sendmail wdired goto-addr vc-dir vc-filewise expand loadhist em-tramp em-rebind em-smart woman thai-util thai-word vc-annotate utop utop-minor-mode tuareg caml caml-help caml-types caml-emacs novice epa-file apropos mode-local perl-mode scheme rcirc info ibuf-ext pulse etags fileloop completion org-element avl-tree generator ol-eww ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-search gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud checkdoc bug-reference scpaste htmlize nroff-mode tar-mode dired-aux tmm log-view hippie-exp mhtml-mode css-mode eww xdg url-queue shr kinsoku svg mm-url sgml-mode facemenu dom url-file url-dired eieio-opt speedbar ezimage dframe shortdoc nnimap nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus nnheader ol-docview doc-view jka-compr ol-bibtex ol-bbdb ol-w3m ol-doi org-link-doi org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src ob-comint org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex ol org-keys oc org-compat org-macs org-loaddefs cal-menu calendar cal-loaddefs mm-archive gnutls url-cache url-dav parse-time iso8601 url-http url-auth url-gw help-fns radix-tree arc-mode archive-mode js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs network-stream nsm image-mode exif cl-print ielm sh-script smie executable conf-mode tabify man files-x grep pcmpl-gnu view monroe clojure-mode lisp-mnt align smerge-mode diff misearch multi-isearch yaml-mode magit-bisect magit-key-mode magit log-edit message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa epg rfc6068 epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log mule-util ibuffer ibuffer-loaddefs make-mode hi-lock flyspell ispell markdown-mode color noutline outline recentf tree-widget face-remap antifennel lua-mode time-date vc-mtn vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher eglot derived easy-mmode array filenotify jsonrpc ert ewoc debug backtrace find-func flymake-proc flymake compile text-property-search imenu fennel-mode xref project inf-lisp pcmpl-unix paredit whitespace idle-highlight-mode thingatpt hl-line company-dabbrev-code company-dabbrev company-files company-capf cus-start smex company pcase em-unix em-term term disp-table shell ehelp em-script em-prompt em-ls em-hist em-pred em-glob em-cmpl em-dirs esh-var pcomplete comint ansi-color em-basic em-banner em-alias esh-mode eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util winner ring exwm-randr xcb-randr format-spec battery dbus ido-completing-read+ cus-edit pp cus-load wid-edit minibuf-eldef xml time exwm-systemtray xcb-systemtray xcb-xembed exwm-config exwm exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb xcb-xproto xcb-types xcb-debug server advice my-autoload comp comp-cstr warnings rx cl-extra help-mode edmacro kmacro saveplace ido package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite emoji-zwj charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice button loaddefs faces cus-face macroexp files window text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting cairo move-toolbar gtk x-toolkit x multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 2259837 441168) (symbols 48 65692 26) (strings 32 294146 27789) (string-bytes 1 11657421) (vectors 16 137620) (vector-slots 8 3750584 290488) (floats 8 1069 2257) (intervals 56 269565 5487) (buffers 992 410))
bug-gnu-emacs <at> gnu.org
:bug#69683
; Package emacs
.
(Sun, 10 Mar 2024 05:57:02 GMT) Full text and rfc822 format available.Message #8 received at 69683 <at> debbugs.gnu.org (full text, mbox):
From: Eli Zaretskii <eliz <at> gnu.org> To: Phil Hagelberg <phil <at> hagelb.org>, João Távora <joaotavora <at> gmail.com> Cc: 69683 <at> debbugs.gnu.org Subject: Re: bug#69683: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Sun, 10 Mar 2024 07:53:43 +0200
> From: Phil Hagelberg <phil <at> hagelb.org> > Date: Sat, 09 Mar 2024 23:19:25 +0000 > > When invoking M-x imenu in a buffer with eglot enabled, it uses eglot's > LSP-aware implementation of imenu. However, not all LSP servers handle > that functionality. When connected to a server that does not offer this > functionality, eglot signals an error: > > jsonrpc-error: "request id=11 failed:", (jsonrpc-error-code . -32601), (jsonrpc-error-message . "\"textDocument/documentSymbol\" is not in the request-handlers table"), (jsonrpc-error-data) > > However, usually there is a perfectly good functional imenu > implementation that the user wants to invoke; they just can't do it > because eglot took over the imenu command. > > Ideally eglot should only add its functionality to the imenu command > when it's connected to a server that actually supports the endpoint > needed to handle it. Thanks. Would you like to suggest a patch along these lines? An alternative would be to catch this error and fall back on the imenu implementation. Not being an LSP expert, I'm unsure which approach is better/cleaner.
bug-gnu-emacs <at> gnu.org
:bug#69683
; Package emacs
.
(Sun, 10 Mar 2024 09:48:01 GMT) Full text and rfc822 format available.Message #11 received at 69683 <at> debbugs.gnu.org (full text, mbox):
From: Felician Nemeth <felician.nemeth <at> gmail.com> To: Phil Hagelberg <phil <at> hagelb.org> Cc: 69683 <at> debbugs.gnu.org Subject: Re: bug#69683: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Sun, 10 Mar 2024 10:46:04 +0100
Phil Hagelberg <phil <at> hagelb.org> writes: > When invoking M-x imenu in a buffer with eglot enabled, it uses eglot's > LSP-aware implementation of imenu. However, not all LSP servers handle > that functionality. When connected to a server that does not offer this > functionality, eglot signals an error: > > jsonrpc-error: "request id=11 failed:", (jsonrpc-error-code . -32601), (jsonrpc-error-message . "\"textDocument/documentSymbol\" is not in the request-handlers table"), (jsonrpc-error-data) > I'm surprised to see this error message since eglot-imenu starts with this: (cl-defun eglot-imenu () (unless (eglot-server-capable :documentSymbolProvider) (cl-return-from eglot-imenu)) That is if the LSP server does not have the necessary capability it doesn't send any jsonrpc messages to the server that would lead to the error above. (And it falls back to normal imenu.) Can you run edebug on eglot-imenu to see what I misunderstand?
bug-gnu-emacs <at> gnu.org
:bug#69683
; Package emacs
.
(Sun, 10 Mar 2024 11:05:02 GMT) Full text and rfc822 format available.Message #14 received at 69683 <at> debbugs.gnu.org (full text, mbox):
From: João Távora <joaotavora <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 69683 <at> debbugs.gnu.org, Phil Hagelberg <phil <at> hagelb.org> Subject: Re: bug#69683: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Sun, 10 Mar 2024 11:02:49 +0000
On Sun, Mar 10, 2024 at 5:53 AM Eli Zaretskii <eliz <at> gnu.org> wrote: > > > From: Phil Hagelberg <phil <at> hagelb.org> > > Date: Sat, 09 Mar 2024 23:19:25 +0000 > > > > When invoking M-x imenu in a buffer with eglot enabled, it uses eglot's > > LSP-aware implementation of imenu. However, not all LSP servers handle > > that functionality. When connected to a server that does not offer this > > functionality, eglot signals an error: > > > > jsonrpc-error: "request id=11 failed:", (jsonrpc-error-code . -32601), (jsonrpc-error-message . "\"textDocument/documentSymbol\" is not in the request-handlers table"), (jsonrpc-error-data) > > > > However, usually there is a perfectly good functional imenu > > implementation that the user wants to invoke; they just can't do it > > because eglot took over the imenu command. > > > > Ideally eglot should only add its functionality to the imenu command > > when it's connected to a server that actually supports the endpoint > > needed to handle it. > > Thanks. Would you like to suggest a patch along these lines? You should both see bug#64274 before doing that. Possibly just a server bug. João
bug-gnu-emacs <at> gnu.org
:bug#69683
; Package emacs
.
(Sun, 10 Mar 2024 19:31:02 GMT) Full text and rfc822 format available.Message #17 received at 69683 <at> debbugs.gnu.org (full text, mbox):
From: Phil Hagelberg <phil <at> hagelb.org> To: Felician Nemeth <felician.nemeth <at> gmail.com> Cc: 69683 <at> debbugs.gnu.org Subject: Re: bug#69683: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Sun, 10 Mar 2024 12:27:26 -0700
[Message part 1 (text/plain, inline)]
Felician Nemeth <felician.nemeth <at> gmail.com> writes: > I'm surprised to see this error message since eglot-imenu starts with > this: > > (cl-defun eglot-imenu () > (unless (eglot-server-capable :documentSymbolProvider) > (cl-return-from eglot-imenu)) > > That is if the LSP server does not have the necessary capability it > doesn't send any jsonrpc messages to the server that would lead to the > error above. (And it falls back to normal imenu.) Apologies--I pulled down the latest emacs from git to test this with, but I forgot to test with -Q, and so I accidentally loaded an older version of eglot.el that I had on my load-path. You're correct, and this bug has actually already been fixed. My bad! This bug report can be closed as invalid. -Phil
[signature.asc (application/pgp-signature, inline)]
Felician Nemeth <felician.nemeth <at> gmail.com>
:Phil Hagelberg <phil <at> hagelb.org>
:Message #22 received at 69683-done <at> debbugs.gnu.org (full text, mbox):
From: Felician Nemeth <felician.nemeth <at> gmail.com> To: 69683-done <at> debbugs.gnu.org Subject: Re: bug#69683: 28.2; eglot overrides imenu without fallback even when unsupported by server Date: Mon, 11 Mar 2024 09:43:28 +0100
Phil Hagelberg <phil <at> hagelb.org> writes: > This bug report can be closed as invalid. OK.
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Mon, 08 Apr 2024 11:24:11 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.