Subject: bug#44764: 28.0.50; Wrong menu binding for file in tree fileset

From: Mauro Aranda <[email-masked]>
Date: Fri, 20 Nov 2020 12:45:24 -0300

To reproduce:
0) Setup a directory with subdirectories and files, for later definition
of a tree fileset:
mkdir fileset-test
cd fileset-test
touch file.el
mkdir subdir
cd subdir
touch file1.el file2.el file3.el file4.el file5.el

5 files seems kinda arbitrary, but it's needed so that one of the files
is left alone as a menu item.

1) Start Emacs: emacs -Q

2) Eval: (filesets-init)

3) M-x set-variable RET filesets-max-submenu-length RET 3

This is so I don't bore you with creating more than 25 files.

4) M-x filesets-edit

Add a new entry to filesets-data, like so:
Name: test
In Data, select the Directory Tree option and then:
Dir: /path/to/fileset-test
Pattern: ^.+\.el$

Set for current session.

Now data should look like this:
(("test (:tree "path/to/fileset-test" "^.+\\.el$")))

5) Click the File menu, and follow the Filesets entry, then the test
entry and finally the subdir entry.

You should see that file1.el and file2.el are grouped.  Also, file3.el
and file4.el got grouped, while file5.el is left alone.  This is OK.

Clicking any file but file5.el works fine.  But clicking file5.el raises
an error:
Invalid function: (filesets-file-open nil
'"/path/to/fileset-test/subdir/file5.el" '"test")

The menu entry for file5.el is wrong.

In GNU Emacs 28.0.50 (build 38, x86_64-pc-linux-gnu, GTK+ Version 3.22.30,
cairo version 1.15.10)
 of 2020-11-20 built on tbb-desktop
Repository revision: b4b1bd6e03d739871dd3ba51e8de0be2d272b766
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Ubuntu 18.04.5 LTS

Configured features:
XPM JPEG TIFF GIF PNG CAIRO SOUND DBUS GSETTINGS GLIB NOTIFY INOTIFY
LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ ZLIB TOOLKIT_SCROLL_BARS
GTK3 X11 XDBE XIM MODULES THREADS PDUMPER

Important settings:
  value of $LC_MONETARY: es_AR.UTF-8
  value of $LC_NUMERIC: es_AR.UTF-8
  value of $LC_TIME: es_AR.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml easymenu mml-sec epa derived epg epg-config gnus-util rmail
rmail-loaddefs auth-source cl-seq eieio eieio-core cl-macs
eieio-loaddefs password-cache json map text-property-search time-date
subr-x seq byte-opt gv bytecomp byte-compile cconv mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs
cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
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
timer select scroll-bar mouse jit-lock font-lock syntax facemenu
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 dbusbind
inotify dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 50661 8454)
 (symbols 48 6724 0)
 (strings 32 18220 2426)
 (string-bytes 1 603826)
 (vectors 16 11421)
 (vector-slots 8 163042 11826)
 (floats 8 22 40)
 (intervals 56 196 0)
 (buffers 984 11))