GNU bug report logs - #73889
31.0.50; speedbar-expand-line-descendants produces nested "DEFUN" structures

Previous Next

Package: emacs;

Reported by: Eli Zaretskii <eliz <at> gnu.org>

Date: Sat, 19 Oct 2024 17:41:02 UTC

Severity: normal

Found in version 31.0.50

Full log


Message #8 received at 73889 <at> debbugs.gnu.org (full text, mbox):

From: Morgan Willcock <morgan <at> ice9.digital>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 73889 <at> debbugs.gnu.org
Subject: Re: bug#73889: 31.0.50; speedbar-expand-line-descendants produces
 nested "DEFUN" structures
Date: Sat, 19 Oct 2024 19:55:29 +0100
Here is an example to demonstrate the specifics of the problem:

  printf "DEFUN () {};\nDEFUN () {};\nDEFUN () {};\n" >/tmp/test.c

  emacs -Q \
        --eval "(require 'speedbar)" \
        --eval "(setq speedbar-tag-regroup-maximum-length 2)" \
        --eval "(setq speedbar-tag-split-minimum-length 2)" \
        --eval "(find-file \"/tmp/test.c\")" \
        --eval "(speedbar)"

Expanding the "test.c" item in the Speedbar will now show a single
"DEFUN" item, but expanding that "DEFUN" item will just insert an
additional "DEFUN" item that also needs to be expanded.  This behaviour
will repeat infinitely.

The problem appears to originate from when the item hierarchy is
modified by speedbar-prefix-group-tag-hierarchy, where exceeding the
limits for both speedbar-tag-regroup-maximum-length and
speedbar-tag-split-minimum-length will return all items with an
additional parent item:

  (speedbar-prefix-group-tag-hierarchy
   '(("DEFUN" . 1)
     ("DEFUN" . 5)
     ("DEFUN" . 10)))

  => (("DEFUN" ("DEFUN" . 1) ("DEFUN" . 5) ("DEFUN" . 10)))

-- 
Morgan Willcock




This bug report was last modified 239 days ago.

Previous Next


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