Subject: 28.0.50; Speedbar cannot recognize complicated imenu index format

From: Liang-Jie Lee <[email-masked]>
Date: Sun, 20 Jun 2021 23:27:18 +0800

According to speedbar manual, it can recognize imenu as tagging
functions. However, I found its imenu support is quite limited. With
more complex form like (NAME . NESTED-SUB-LIST) with customized "go to"
function, I got a malformed error. To reproduce the error, try below
recipe:

1. M-x package-install eglot
2. Install any language server if you havn't. EX: apt install clangd
2. Open a C/C++ project, M-x eglot
3. M-x speedbar

Click on tags in the speedbar frame, and I got a malformed error.

See also https://github.com/joaotavora/eglot/issues/536 (which I report
the same bug to eglot author), I think it will be good to make speedbar
completely support imenu since it's one of the most popular project
navigation tools in Emacs.

In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
 of 2021-06-17 built on debian
Repository revision: ff053c706cb903534936c45b04a2aa38e3db1261
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux 11 (bullseye)

Configured using:
 'configure --with-mailutils --with-native-compilation --with-xwidgets
 --enable-link-time-optimization 'CFLAGS=-march=native -O3''

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 XWIDGETS GTK3 ZLIB

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=fcitx
  locale-coding-system: utf-8-unix

Major mode: C/*l

Minor modes in effect:
  eglot--managed-mode: t
  flymake-mode: t
  shell-dirtrack-mode: t
  async-bytecomp-package-mode: t
  show-paren-mode: t
  display-time-mode: t
  display-battery-mode: t
  mlscroll-mode: t
  recentf-mode: t
  delete-selection-mode: t
  electric-pair-mode: t
  global-so-long-mode: t
  savehist-mode: t
  save-place-mode: t
  windmove-mode: t
  winner-mode: t
  global-auto-revert-mode: t
  company-tng-mode: t
  global-company-mode: t
  company-mode: t
  minibuffer-depth-indicate-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  tab-bar-mode: t
  menu-bar-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
  temp-buffer-resize-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Load-path shadows:
/home/booaa/.emacs.d/elpa/transient-20210619.1100/transient hides /usr/local/share/emacs/28.0.50/lisp/transient

Features:
(cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs shadow sort mail-extr emacsbug message rmc puny dired
dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util
rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils cl-print pulse color vc-mtn vc-hg vc-bzr
vc-src vc-sccs vc-svn vc-cvs vc-rcs vc help-fns radix-tree eglot array
jsonrpc ert pp ewoc debug flymake-proc flymake compile
text-property-search tramp-archive tramp-gvfs tramp-cache zeroconf
helm-elisp helm-files tramp tramp-loaddefs trampver tramp-integration
files-x tramp-compat shell pcomplete comint ansi-color parse-time
iso8601 time-date ls-lisp helm-buffers helm-occur helm-tags helm-locate
helm-grep helm-regexp helm-eval edebug backtrace helm-info helm-utils
helm-types helm-help imenu find-func thingatpt xref project vc-git
diff-mode vc-dispatcher misearch multi-isearch helm async-bytecomp
helm-global-bindings helm-easymenu helm-source helm-multi-match helm-lib
async paren time format-spec battery dbus xml mlscroll recentf
tree-widget wid-edit delsel elec-pair so-long savehist saveplace
move-text windmove winner ring autorevert filenotify company-tng
company-keywords company-dabbrev-code company-dabbrev company-files
company-capf company pcase exwm-randr xcb-randr xcb-render
exwm-systemtray exwm-workspace server exwm-core xcb-systemtray xcb-ewmh
xcb-xembed xcb-icccm xcb xcb-xproto xcb-types xcb-debug init init-misc
init-exwm init-dev init-search init-completion mb-depth init-shell
init-mail init-dired init-buffer init-window init-editor edmacro kmacro
init-ui zenburn-theme init-packages no-littering use-package
use-package-ensure use-package-delight use-package-diminish
use-package-bind-key bind-key easy-mmode use-package-core info 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 eieio eieio-core eieio-loaddefs password-cache json map
url-vars comp comp-cstr warnings subr-x rx cl-seq cl-macs cl-extra
help-mode seq byte-opt gv cl-loaddefs cl-lib bytecomp byte-compile cconv
early-init iso-transl tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type 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 elisp-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 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 xwidget-internal 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 325233 407031)
 (symbols 48 29005 37)
 (strings 32 84336 115056)
 (string-bytes 1 3092800)
 (vectors 16 62382)
 (vector-slots 8 975167 667177)
 (floats 8 275 2003)
 (intervals 56 3199 2272)
 (buffers 992 29))