GNU bug report logs - #60645
30.0.50; interactive MODES not detected properly

Previous Next

Package: emacs;

Reported by: Jean Louis <bugs <at> gnu.support>

Date: Sun, 8 Jan 2023 06:21:02 UTC

Severity: normal

Found in version 30.0.50

To reply to this bug, email your comments to 60645 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Sun, 08 Jan 2023 06:21:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Jean Louis <bugs <at> gnu.support>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sun, 08 Jan 2023 06:21:02 GMT) Full text and rfc822 format available.

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

From: Jean Louis <bugs <at> gnu.support>
To: bug-gnu-emacs <at> gnu.org
Subject: 30.0.50; interactive MODES not detected properly
Date: Sun, 08 Jan 2023 09:19:35 +0300
* Eli Zaretskii <eliz <at> gnu.org> [2023-01-08 09:07]:
> > And I expect not to see it.
> > 
> > What am I doing wrong?
> 
> The doc string is wrong: the default is to show all commands.  If you
> want to see only those relevant to MODES, either use M-X (upper-case
> X) or customize read-extended-command-predicate's value to be the
> function command-completion-default-include-p.

Now we know that there is some inconsistency, thanks for confirming
it.

For this function:

(defun my-function ()
  (interactive nil '(text-mode mail-mode))
  (message "Hello"))

major-mode ➜ mail-mode

My default was:
(setq read-extended-command-predicate nil)

- I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'

- I can see 9819 possible completions with M-x in mail-mode, WITH `my-function'

when I turn it on:

(setq read-extended-command-predicate 'command-completion-default-include-p)

- I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'

- I can see 9819 possible completions with M-x in mail-mode, WITHOUT `my-function'

Which means that my function cannot be found with recommended
settings in mail-mode, so there must be more inconsistencies.



In GNU Emacs 30.0.50 (build 2, x86_64-pc-linux-gnu, X toolkit, cairo
 version 1.17.6, Xaw3d scroll bars) of 2023-01-08 built on
 protected.rcdrun.com
Repository revision: 5d1e14bd8b9a11ab860937d3ab97248ddeef30b1
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Parabola GNU/Linux-libre

Configured using:
 'configure --with-x-toolkit=lucid --with-mailutils'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
JPEG JSON LCMS2 LIBOTF LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY
INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XAW3D XDBE XIM XINPUT2 XPM
LUCID ZLIB

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

Major mode: Fundamental

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

Load-path shadows:
None found.

Features:
(shadow mailalias emacsbug message yank-media puny dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util text-property-search time-date mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils hyperbole-autoloads
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie generate-lisp-file url-domsuf url-util mailcap
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs
password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv 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 nadvice seq simple
cl-generic indonesian philippine 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 abbrev obarray oclosure cl-preloaded button
loaddefs theme-loaddefs faces cus-face macroexp files window
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget keymap hashtable-print-readable backquote threads
dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo x-toolkit xinput2 x multi-tty
make-network-process emacs)

Memory information:
((conses 16 56097 9398)
 (symbols 48 6869 0)
 (strings 32 20672 1400)
 (string-bytes 1 616964)
 (vectors 16 14339)
 (vector-slots 8 199578 12461)
 (floats 8 29 36)
 (intervals 56 342 0)
 (buffers 984 10))


-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Sun, 08 Jan 2023 09:00:02 GMT) Full text and rfc822 format available.

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

From: Jean Louis <bugs <at> gnu.support>
To: 60645 <at> debbugs.gnu.org
Subject: Re: bug#60645: Acknowledgement (30.0.50; interactive MODES not
 detected properly)
Date: Sun, 8 Jan 2023 09:33:50 +0300
I wanted to say 8777 instead of 9819 here below, correction:

(defun my-function ()
  (interactive nil '(text-mode mail-mode))
  (message "Hello"))

major-mode ➜ mail-mode

My default was:
(setq read-extended-command-predicate nil)

- I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'

- I can see 9819 possible completions with M-x in mail-mode, WITH `my-function'

when I turn it on:

(setq read-extended-command-predicate 'command-completion-default-include-p)

- I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'

- I can see 8777 possible completions with M-x in mail-mode, WITHOUT `my-function'


--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Sun, 08 Jan 2023 09:16:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jean Louis <bugs <at> gnu.support>
Cc: 60645 <at> debbugs.gnu.org
Subject: Re: bug#60645: 30.0.50; interactive MODES not detected properly
Date: Sun, 08 Jan 2023 11:15:42 +0200
> Date: Sun, 08 Jan 2023 09:19:35 +0300
> From: Jean Louis <bugs <at> gnu.support>
> 
> 
> * Eli Zaretskii <eliz <at> gnu.org> [2023-01-08 09:07]:
> > > And I expect not to see it.
> > > 
> > > What am I doing wrong?
> > 
> > The doc string is wrong: the default is to show all commands.  If you
> > want to see only those relevant to MODES, either use M-X (upper-case
> > X) or customize read-extended-command-predicate's value to be the
> > function command-completion-default-include-p.
> 
> Now we know that there is some inconsistency, thanks for confirming
> it.
> 
> For this function:
> 
> (defun my-function ()
>   (interactive nil '(text-mode mail-mode))
>   (message "Hello"))
> 
> major-mode ➜ mail-mode
> 
> My default was:
> (setq read-extended-command-predicate nil)
> 
> - I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'
> 
> - I can see 9819 possible completions with M-x in mail-mode, WITH `my-function'
> 
> when I turn it on:
> 
> (setq read-extended-command-predicate 'command-completion-default-include-p)
> 
> - I can see 90 possible completions with M-X in mail-mode, WITHOUT `my-function'
> 
> - I can see 9819 possible completions with M-x in mail-mode, WITHOUT `my-function'
> 
> Which means that my function cannot be found with recommended
> settings in mail-mode, so there must be more inconsistencies.

Maybe one of the inconsistencies is your expectations.  What did you
expect to happen in each case, and why?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Sun, 08 Jan 2023 11:49:02 GMT) Full text and rfc822 format available.

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

From: Jean Louis <bugs <at> gnu.support>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 60645 <at> debbugs.gnu.org
Subject: Re: bug#60645: 30.0.50; interactive MODES not detected properly
Date: Sun, 8 Jan 2023 14:26:18 +0300
* Eli Zaretskii <eliz <at> gnu.org> [2023-01-08 12:15]:
> Maybe one of the inconsistencies is your expectations.  What did you
> expect to happen in each case, and why?

For this function:

(defun my-function ()
  (interactive nil '(text-mode mail-mode))
  (message "Hello"))

> If MODES is present, it should be a list of mode names (symbols) that
> this command is applicable for.  The main effect of this is that
> ‘M-x TAB’ (by default) won’t list this command if the current buffer’s
> mode doesn’t match the list.  That is, if either the major mode isn’t
> derived from them, or (when it’s a minor mode) the mode isn’t in effect.

I expect that M-x TAB shows it in this mail-mode, but it does not show
it this time. That is one of expectations, among several.

In general, I would like to setup functions NOT to show in modes where
they should not be shown.

I feel this function does not work.

If you have working example, show me.

--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/












Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Sun, 08 Jan 2023 12:11:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Jean Louis <bugs <at> gnu.support>
Cc: 60645 <at> debbugs.gnu.org
Subject: Re: bug#60645: 30.0.50; interactive MODES not detected properly
Date: Sun, 08 Jan 2023 14:11:08 +0200
> Date: Sun, 8 Jan 2023 14:26:18 +0300
> From: Jean Louis <bugs <at> gnu.support>
> Cc: 60645 <at> debbugs.gnu.org
> 
> * Eli Zaretskii <eliz <at> gnu.org> [2023-01-08 12:15]:
> > Maybe one of the inconsistencies is your expectations.  What did you
> > expect to happen in each case, and why?
> 
> For this function:
> 
> (defun my-function ()
>   (interactive nil '(text-mode mail-mode))
>   (message "Hello"))
> 
> > If MODES is present, it should be a list of mode names (symbols) that
> > this command is applicable for.  The main effect of this is that
> > ‘M-x TAB’ (by default) won’t list this command if the current buffer’s
> > mode doesn’t match the list.  That is, if either the major mode isn’t
> > derived from them, or (when it’s a minor mode) the mode isn’t in effect.
> 
> I expect that M-x TAB shows it in this mail-mode, but it does not show
> it this time. That is one of expectations, among several.
> 
> In general, I would like to setup functions NOT to show in modes where
> they should not be shown.
> 
> I feel this function does not work.
> 
> If you have working example, show me.

The interactive form is wrong.  It should be this:

 (defun my-function ()
   (interactive nil text-mode mail-mode)
   (message "Hello"))

IOW, no quoting and no explicit list.  The documentation clearly says

  (interactive &optional ARG-DESCRIPTOR &rest MODES)

"&rest MODES" means zero or more symbols, not a quoted list.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#60645; Package emacs. (Mon, 09 Jan 2023 05:47:01 GMT) Full text and rfc822 format available.

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

From: Jean Louis <bugs <at> gnu.support>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 60645 <at> debbugs.gnu.org
Subject: Re: bug#60645: 30.0.50; interactive MODES not detected properly
Date: Mon, 9 Jan 2023 00:39:26 +0300
* Eli Zaretskii <eliz <at> gnu.org> [2023-01-08 15:11]:
> > > If MODES is present, it should be a list of mode names (symbols) that
> > > this command is applicable for.  The main effect of this is that
> > > ‘M-x TAB’ (by default) won’t list this command if the current buffer’s
> > > mode doesn’t match the list.  That is, if either the major mode isn’t
> > > derived from them, or (when it’s a minor mode) the mode isn’t in effect.

> IOW, no quoting and no explicit list.  The documentation clearly says
> 
>   (interactive &optional ARG-DESCRIPTOR &rest MODES)
> 
> "&rest MODES" means zero or more symbols, not a quoted list.

I was confused with "If MODES is present, it should be a list of mode
names (symbols) that..."


--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/





This bug report was last modified 1 year and 108 days ago.

Previous Next


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