unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#44764: 28.0.50; Wrong menu binding for file in tree fileset
@ 2020-11-20 15:45 Mauro Aranda
  2020-11-20 15:56 ` Mauro Aranda
  0 siblings, 1 reply; 4+ messages in thread
From: Mauro Aranda @ 2020-11-20 15:45 UTC (permalink / raw)
  To: 44764

[-- Attachment #1: Type: text/plain, Size: 4184 bytes --]

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))

[-- Attachment #2: Type: text/html, Size: 4718 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#44764: 28.0.50; Wrong menu binding for file in tree fileset
  2020-11-20 15:45 bug#44764: 28.0.50; Wrong menu binding for file in tree fileset Mauro Aranda
@ 2020-11-20 15:56 ` Mauro Aranda
  2020-11-24  6:45   ` Lars Ingebrigtsen
  0 siblings, 1 reply; 4+ messages in thread
From: Mauro Aranda @ 2020-11-20 15:56 UTC (permalink / raw)
  To: 44764


[-- Attachment #1.1: Type: text/plain, Size: 1452 bytes --]

tags 44764 patch
quit

Mauro Aranda <maurooaranda@gmail.com> writes:

> 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.

The attached patch should fix it.  OK to install?

[-- Attachment #1.2: Type: text/html, Size: 1913 bytes --]

[-- Attachment #2: 0001-Fix-menu-binding-for-files-in-fileset.patch --]
[-- Type: text/x-patch, Size: 965 bytes --]

From 6f5012d7cc7cb1bf3e650366b14fc367261c186f Mon Sep 17 00:00:00 2001
From: Mauro Aranda <maurooaranda@gmail.com>
Date: Fri, 20 Nov 2020 12:52:56 -0300
Subject: [PATCH] Fix menu binding for files in fileset

* lisp/filesets.el (filesets-remake-shortcut): We want the callback of
the menu item, not a list that contains the callback.  (Bug#44764)
---
 lisp/filesets.el | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lisp/filesets.el b/lisp/filesets.el
index c7ec3f77f4..cddaccbb2a 100644
--- a/lisp/filesets.el
+++ b/lisp/filesets.el
@@ -1878,8 +1878,7 @@ filesets-remake-shortcut
 		       (substring (elt submenu 0) 2))))
     (if (listp submenu)
 	(cons name (cdr submenu))
-      (apply 'vector (list name (cdr (append submenu nil)))))))
-;      (vconcat `[,name] (subseq submenu 1)))))
+      (apply 'vector (list name (cadr (append submenu nil)))))))
 
 (defun filesets-wrap-submenu (submenu-body)
   "Split long submenus."
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* bug#44764: 28.0.50; Wrong menu binding for file in tree fileset
  2020-11-20 15:56 ` Mauro Aranda
@ 2020-11-24  6:45   ` Lars Ingebrigtsen
  2020-11-24 11:51     ` Mauro Aranda
  0 siblings, 1 reply; 4+ messages in thread
From: Lars Ingebrigtsen @ 2020-11-24  6:45 UTC (permalink / raw)
  To: Mauro Aranda; +Cc: 44764

Mauro Aranda <maurooaranda@gmail.com> writes:

> The attached patch should fix it.  OK to install?

[...]

> -      (apply 'vector (list name (cdr (append submenu nil)))))))
> -;      (vconcat `[,name] (subseq submenu 1)))))
> +      (apply 'vector (list name (cadr (append submenu nil)))))))

I'm not very familiar with the filesets code, but I think this makes
sense.  I wonder slightly about that commented-out code, but it's been
there since the file was added to Emacs, so I guess we won't find out
what that's about.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#44764: 28.0.50; Wrong menu binding for file in tree fileset
  2020-11-24  6:45   ` Lars Ingebrigtsen
@ 2020-11-24 11:51     ` Mauro Aranda
  0 siblings, 0 replies; 4+ messages in thread
From: Mauro Aranda @ 2020-11-24 11:51 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: 44764

tags 44764 fixed
close 44764
quit


Lars Ingebrigtsen <larsi@gnus.org> writes:

> Mauro Aranda <maurooaranda@gmail.com> writes:

>> -      (apply 'vector (list name (cdr (append submenu nil)))))))
>> -;      (vconcat `[,name] (subseq submenu 1)))))
>> +      (apply 'vector (list name (cadr (append submenu nil)))))))
>
> I'm not very familiar with the filesets code, but I think this makes
> sense.  I wonder slightly about that commented-out code, but it's been
> there since the file was added to Emacs, so I guess we won't find out
> what that's about.

I think it's an attempt to do the same operation, but using subseq, or
cl-subseq nowadays.  It's not a big deal, so I kept that commented
out code, in case someone wants to take a look at that someday.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-24 11:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-20 15:45 bug#44764: 28.0.50; Wrong menu binding for file in tree fileset Mauro Aranda
2020-11-20 15:56 ` Mauro Aranda
2020-11-24  6:45   ` Lars Ingebrigtsen
2020-11-24 11:51     ` Mauro Aranda

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).