unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: "Lars Ingebrigtsen" <larsi@gnus.org>, "Óscar Fuentes" <ofv@wanadoo.es>
Cc: emacs-devel@gnu.org
Subject: Re: Current mode command discovery
Date: Wed, 17 Feb 2021 18:26:16 +0200	[thread overview]
Message-ID: <1fb773f6-1480-53ce-08ae-1f7d0ba23428@yandex.ru> (raw)
In-Reply-To: <87eehfnd83.fsf@gnus.org>

On 17.02.2021 13:30, Lars Ingebrigtsen wrote:
> Note: THIS IS NOT A DISCUSSION ABOUT M-X.
> 
> Óscar Fuentes <ofv@wanadoo.es> writes:
> 
>> That would be very interesting, but AFAIU with the current
>> implementation it has some problems.
>>
>> It would miss some candidates which belong to the current mode although
>> they are not marked as mode-specific because they are also applicable to
>> other contexts. This would be confusing for the user.
>>
>> So we need a mechanism for saying `foo-bar-command' belongs to
>> `foo-mode', but it is not specific of that mode.
> 
> Yes, that's a problem.
> 
> Hm...  there's two obvious sources if information about what commands
> "belong" to a mode: There's the key bindings, and then there's the new
> mode tagging.  We could perhaps use both in this new command?  I.e., if
> somebody has gone to the trouble to add a command to the keymap of the
> mode, then it's probably pretty useful for that mode?

If someone annotated a command with applicability conditions, we should 
probably combine them with 'or' (like if it has both (declare (modes 
...)) and (declare (completion ...))). Having a command belong to a 
keymap could be a new implicit applicability condition.

> A more serious problem that this brings up is the problem with
> non-mode-specific predicates: They don't convey any information about
> why the predicate is t/nil.  Say you have
> 
> (defun foo-spiffy-command ()
>    (declare (predicate my-clever-predicate-p))
>    (interactive))
> 
> When listing mode-specific commands, and this predicate returns t,
> should it be included?  Yes?  No?  There's no way of saying, really...
> 
> So: Tagging by mode conveys more information to the system than just
> having predicates, and we can use that.  This also means that
> 
>    (declare (modes ...))
> 
> should be implemented differently than it is today (which is just
> slapping a predicate onto the symbol-plist).

Moving the checking logic inside the read-extended-command-predicate 
implementation seems logical. (declare (modes ...)) would just add a tag 
to the command, with natural possibility to add other tags, which a 
different read-extended-command-predicate could use.



  reply	other threads:[~2021-02-17 16:26 UTC|newest]

Thread overview: 177+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-14 17:19 Current mode command discovery Lars Ingebrigtsen
2021-02-14 17:26 ` Sean Whitton
2021-02-15  3:00   ` Lars Ingebrigtsen
2021-02-14 17:29 ` Gregory Heytings
2021-02-15  3:02   ` Lars Ingebrigtsen
2021-02-16 12:21     ` Stefan Kangas
2021-02-16 12:38       ` Lars Ingebrigtsen
2021-02-16 12:56         ` Dmitry Gutov
2021-02-14 17:51 ` Eli Zaretskii
2021-02-14 17:56   ` Lars Ingebrigtsen
2021-02-14 18:15     ` Eli Zaretskii
2021-02-15  3:04       ` Lars Ingebrigtsen
2021-02-15 15:13         ` Eli Zaretskii
2021-02-16 12:04           ` Lars Ingebrigtsen
2021-02-16 15:36             ` Eli Zaretskii
2021-02-16 16:28               ` Lars Ingebrigtsen
2021-02-16 17:06                 ` Eli Zaretskii
2021-02-16 18:08               ` Basil L. Contovounesios
2021-02-16 18:12                 ` Lars Ingebrigtsen
2021-02-16 18:18                 ` Eli Zaretskii
2021-02-16 18:37                   ` Lars Ingebrigtsen
2021-02-16 18:51                     ` Eli Zaretskii
2021-02-16 18:57                       ` Lars Ingebrigtsen
2021-02-16 19:24                         ` Eli Zaretskii
2021-02-16 19:33                           ` Lars Ingebrigtsen
2021-02-16 19:50                             ` Eli Zaretskii
2021-02-16 20:55                               ` Lars Ingebrigtsen
2021-02-17  3:25                                 ` Eli Zaretskii
2021-02-17 11:11                                   ` Lars Ingebrigtsen
2021-02-17 17:01                                     ` Eli Zaretskii
2021-02-18  6:02                                   ` Richard Stallman
2021-02-16 23:32                               ` Óscar Fuentes
2021-02-17 15:38                                 ` Eli Zaretskii
2021-02-17 16:28                                   ` tomas
2021-02-17 17:49                                   ` Lars Ingebrigtsen
2021-02-17 19:25                                     ` Eli Zaretskii
2021-02-17 19:33                                       ` Lars Ingebrigtsen
2021-02-17 18:00                                   ` Óscar Fuentes
2021-02-17 19:34                                     ` Eli Zaretskii
2021-02-19  5:41                                     ` Richard Stallman
2021-02-19  8:57                                       ` Eli Zaretskii
2021-02-19 12:52                                         ` Lars Ingebrigtsen
2021-02-19 22:33                                           ` chad
2021-02-19 23:01                                             ` Stefan Monnier
2021-02-19 23:19                                               ` [External] : " Drew Adams
2021-02-20  7:01                                                 ` Eli Zaretskii
2021-02-20 19:43                                                   ` Drew Adams
2021-02-21 17:10                                                     ` Drew Adams
2021-02-20 13:15                                               ` Lars Ingebrigtsen
2021-02-20 14:36                                                 ` Stefan Monnier
2021-02-22  4:00                                                   ` Lars Ingebrigtsen
2021-02-22  5:27                                                     ` [External] : " Drew Adams
2021-02-20 19:43                                                 ` Drew Adams
2021-02-19 14:52                                         ` Stefan Kangas
2021-02-17 18:32                                   ` [External] : " Drew Adams
2021-02-20 11:16                                 ` Jean Louis
2021-02-17  8:34                           ` Robert Pluim
2021-02-17 11:15                             ` Lars Ingebrigtsen
2021-02-14 23:30     ` [External] : " Drew Adams
2021-02-14 19:53   ` Óscar Fuentes
2021-02-14 20:25     ` Alan Mackenzie
2021-02-14 21:20       ` tomas
2021-02-14 23:02         ` Stefan Kangas
2021-02-14 23:30         ` [External] : " Drew Adams
2021-02-14 21:20       ` Philip Kaludercic
2021-02-14 21:39       ` Óscar Fuentes
2021-02-14 22:07         ` tomas
2021-02-14 23:30           ` [External] : " Drew Adams
2021-02-14 23:30         ` Drew Adams
2021-02-14 23:30     ` Drew Adams
2021-02-14 23:30   ` Drew Adams
2021-02-14 19:37 ` Dmitry Gutov
2021-02-14 20:00   ` Óscar Fuentes
2021-02-14 20:16     ` Dmitry Gutov
2021-02-14 20:49       ` Óscar Fuentes
2021-02-14 21:56         ` Dmitry Gutov
2021-02-14 23:18           ` Stefan Kangas
2021-02-14 23:46             ` Lars Ingebrigtsen
2021-02-15  2:26             ` Dmitry Gutov
2021-02-15  0:29 ` Matt Armstrong
2021-02-15  2:45   ` Lars Ingebrigtsen
2021-02-17  2:20 ` Óscar Fuentes
2021-02-17 11:29   ` Dmitry Gutov
2021-02-17 11:30   ` Lars Ingebrigtsen
2021-02-17 16:26     ` Dmitry Gutov [this message]
2021-02-17 17:52       ` Lars Ingebrigtsen
2021-02-17 22:46         ` Dmitry Gutov
2021-02-18 10:14           ` Lars Ingebrigtsen
2021-02-18 13:05             ` Dmitry Gutov
2021-02-18 14:06               ` Lars Ingebrigtsen
2021-02-18 17:15                 ` Dmitry Gutov
2021-02-19 12:23                   ` Lars Ingebrigtsen
2021-02-19 12:30                     ` Eli Zaretskii
2021-02-19 12:34                       ` Lars Ingebrigtsen
2021-02-19 12:42                         ` Eli Zaretskii
2021-02-19 12:59                           ` Lars Ingebrigtsen
2021-02-19 13:40                             ` Eli Zaretskii
2021-02-19 13:45                               ` Lars Ingebrigtsen
2021-02-19 13:54                                 ` Eli Zaretskii
2021-02-19 14:07                                   ` Lars Ingebrigtsen
2021-02-19 12:35                       ` Dmitry Gutov
2021-02-19 12:43                         ` Eli Zaretskii
2021-02-19 12:52                           ` Dmitry Gutov
2021-02-19 12:38                     ` Dmitry Gutov
2021-02-17 18:21     ` Matt Armstrong
2021-02-17 18:32       ` Lars Ingebrigtsen
2021-02-17 22:26         ` Matt Armstrong
2021-02-17 22:33           ` Lars Ingebrigtsen
2021-02-17 18:41       ` Stefan Kangas
2021-02-17 22:28         ` Matt Armstrong
2021-02-20 11:55     ` Jean Louis
2021-02-20 11:49   ` Jean Louis
2021-02-20 14:18 ` Lars Ingebrigtsen
2021-02-20 14:29   ` Eli Zaretskii
2021-02-20 14:31     ` Lars Ingebrigtsen
2021-02-20 14:38       ` Eli Zaretskii
2021-02-20 14:51         ` Alfred M. Szmidt
2021-02-20 16:52           ` Gregory Heytings
2021-02-20 17:20             ` Alfred M. Szmidt
2021-02-20 17:43               ` Gregory Heytings
2021-02-20 17:31           ` Andreas Schwab
2021-02-20 20:17             ` Alfred M. Szmidt
2021-02-20 21:10               ` Stefan Monnier
2021-02-20 22:09                 ` Alfred M. Szmidt
2021-02-21  6:15                 ` Richard Stallman
2021-02-21 15:13                   ` Eli Zaretskii
2021-02-20 21:43               ` Gregory Heytings
2021-02-20 22:09                 ` Alfred M. Szmidt
2021-02-20 22:22                   ` Gregory Heytings
2021-02-20 23:53                     ` Alfred M. Szmidt
2021-02-20 21:58               ` Andreas Schwab
2021-02-20 23:53                 ` Alfred M. Szmidt
2021-02-28 12:32               ` Jean Louis
2021-02-28 12:41                 ` Andreas Schwab
2021-02-28 17:21                   ` Alfred M. Szmidt
2021-02-20 14:51         ` Lars Ingebrigtsen
2021-02-20 15:23           ` Eli Zaretskii
2021-02-20 16:17             ` Dmitry Gutov
2021-02-20 19:45               ` [External] : " Drew Adams
2021-02-21 16:55                 ` Drew Adams
2021-02-21 21:39                   ` Kévin Le Gouguec
2021-02-21 22:46                     ` [External] : " Drew Adams
2021-02-21 12:42             ` Lars Ingebrigtsen
2021-02-20 14:57         ` Lars Ingebrigtsen
2021-02-20 15:11           ` Eli Zaretskii
2021-02-21 15:44             ` Lars Ingebrigtsen
2021-02-21 17:00               ` Eli Zaretskii
2021-02-21 17:46                 ` Lars Ingebrigtsen
2021-02-21 18:09                   ` Eli Zaretskii
2021-02-22 14:34                     ` Lars Ingebrigtsen
2021-02-22 15:53                       ` Eli Zaretskii
2021-02-20 19:45           ` [External] : " Drew Adams
2021-02-20 14:56   ` Stefan Monnier
2021-02-20 14:59     ` Lars Ingebrigtsen
2021-02-20 15:37   ` Stefan Kangas
2021-02-20 16:05     ` Eli Zaretskii
2021-02-20 16:18       ` Stefan Monnier
2021-02-20 16:22       ` Dmitry Gutov
2021-02-20 16:23       ` Stefan Kangas
2021-02-20 16:44         ` Eli Zaretskii
2021-02-20 17:25           ` Stefan Kangas
2021-02-20 17:29             ` Eli Zaretskii
2021-02-21  6:18               ` Richard Stallman
2021-02-21 15:19                 ` Eli Zaretskii
2021-02-21 16:54                   ` [External] : " Drew Adams
2021-02-21 16:44                 ` Drew Adams
2021-02-21  6:23               ` Richard Stallman
2021-02-21 12:55     ` Lars Ingebrigtsen
2021-02-21 15:33       ` Eli Zaretskii
2021-02-21 15:47         ` Lars Ingebrigtsen
2021-02-21 17:03           ` Eli Zaretskii
2021-02-21 17:44             ` Lars Ingebrigtsen
2021-02-21 18:01               ` Eli Zaretskii
2021-02-21 18:21                 ` Lars Ingebrigtsen
2021-02-21 18:28                   ` Eli Zaretskii
2021-02-21 18:37                     ` Lars Ingebrigtsen
2021-02-21 19:20                       ` Eli Zaretskii

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1fb773f6-1480-53ce-08ae-1f7d0ba23428@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=emacs-devel@gnu.org \
    --cc=larsi@gnus.org \
    --cc=ofv@wanadoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).