From: Drew Adams <drew.adams@oracle.com>
To: "Clément Pit--Claudel" <clement.pit@gmail.com>, emacs-devel@gnu.org
Subject: RE: Making `interactive' conditional
Date: Sun, 10 Jan 2016 09:55:57 -0800 (PST) [thread overview]
Message-ID: <74e37b32-1c4c-42b2-a98e-ab3ea7086e2c@default> (raw)
In-Reply-To: <56922DDC.1080702@gmail.com>
> I think this is converging to what Stefan pointed earlier (which I found
> very convincing/exciting): in its most basic form, this proposal could
> supersede a lot of ad-hoc checking that many many commands do (by calling
> `barf-if-buffer-read-only', for example).
Those commands still need to do that in their bodies, for the same
reason that a command does it in the body today, even when it might
also do it in the `interactive' form (e.g., to prevent further
processing of an `interactive' form that reads multiple inputs).
Regardless of how or where or why such a function is invoked, it
needs to raise such an error and let the user know what the
invocation problem is.
Preventing a function from being calling incorrectly (in your view)
interactively does not prevent it from being called incorrectly (in
your view) non-interactively.
> Similarly, there are many commands that are marked interactive because
> they are bound to keys in certain contexts, but make no sense (and will
> just immediately error out if called from M-x) otherwise.
The way we handle that normally is for such keys to be bound in a
mode map. If you are in that mode then they are bound to those
context-specific commands; otherwise, no.
In such a case it makes sense to not make those commands available
on key bindings outside of the mode.
That rationale is entirely absent for the case of `M-x', which is
(and should be) completely general.
Leave it to the context-defining mode to decide whether a given
command should be bound in that context. Don't cripple `M-x'.
> I find it reasonable to think that if a command is just going to
> exit in error as soon as I call it I probably don't want it to
> feature prominently among M-x completions.
1. But the proposal now being considered goes far beyond not
showing it as a command-name completion for `M-x'. It is no
longer about the possibility of _completion_ but is instead
about the possibility of _invocation_ - in any way (IIUC).
2. Sometimes a user wants to see what commands exist (e.g. match
a given pattern), whether or not a given command can be used
in the current context.
Completion lets you see what the matching command names are,
irrespective of whether you might want to invoke a particular
one - or any one.
It is up to the particular _command that is completing_
function names to match input to decide whether to remove
some names from the outset.
`M-x' is one particular command that completes function names.
But it is the most general command-invoking command we have.
It should not filter beyond `commandp' at the outset. But a
user could well be given minibuffer keys that let the _user_
filter `M-x' candidates in additional ways.
3. A user might well _want_ to see the specific error message,
in particular because it might not be obvious _why_ (in your
view) a given command name is not available as a candidate.
Making `M-x' filter out certain candidates beforehand tells
the user _nothing_ about (a) whether such commands exist or
(b) why they are currently considered unavailable. IOW,
less help for a user.
next prev parent reply other threads:[~2016-01-10 17:55 UTC|newest]
Thread overview: 141+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-25 6:21 4K Bugs Lars Ingebrigtsen
2015-12-25 7:46 ` Eli Zaretskii
2015-12-25 17:00 ` John Wiegley
2015-12-25 17:30 ` Lars Ingebrigtsen
2015-12-25 17:51 ` John Wiegley
2015-12-25 17:53 ` Lars Ingebrigtsen
2015-12-25 17:59 ` John Wiegley
2015-12-25 18:27 ` jpff
2015-12-25 18:35 ` Lars Ingebrigtsen
2015-12-25 18:33 ` Dmitry Gutov
2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-25 18:54 ` Lars Ingebrigtsen
2015-12-25 19:46 ` Dmitry Gutov
2015-12-25 20:06 ` Lars Ingebrigtsen
2015-12-25 19:36 ` John Wiegley
2015-12-25 19:56 ` Dmitry Gutov
2015-12-25 20:05 ` Eli Zaretskii
2015-12-25 20:26 ` Lars Ingebrigtsen
2015-12-26 13:16 ` Michael Albinus
2015-12-26 8:07 ` Andreas Röhler
2015-12-26 10:29 ` Eli Zaretskii
2015-12-26 15:14 ` Andreas Röhler
2015-12-26 16:34 ` Eli Zaretskii
2015-12-26 16:41 ` Lars Ingebrigtsen
2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Lars Ingebrigtsen
2015-12-26 17:55 ` Ivan Shmakov
2015-12-26 17:58 ` Lars Ingebrigtsen
2015-12-26 18:12 ` Ivan Shmakov
2015-12-26 18:21 ` Lars Ingebrigtsen
2015-12-26 18:42 ` Ivan Shmakov
2015-12-26 18:48 ` Lars Ingebrigtsen
2015-12-27 22:41 ` Per Starbäck
2015-12-28 9:44 ` Andreas Röhler
2015-12-28 20:18 ` John Wiegley
2015-12-26 16:59 ` Paul Eggert
2015-12-26 17:48 ` Lars Ingebrigtsen
2015-12-28 20:15 ` John Wiegley
2015-12-26 14:55 ` Lars Ingebrigtsen
2015-12-27 2:52 ` Richard Stallman
2015-12-27 6:07 ` Lars Ingebrigtsen
2016-01-07 20:10 ` Phillip Lord
2016-01-07 22:38 ` Phillip Lord
2016-01-09 4:26 ` Andrew Hyatt
2016-01-09 9:20 ` Michael Albinus
2016-01-07 23:32 ` John Wiegley
2016-01-08 0:17 ` Xue Fuqiao
2016-01-08 12:49 ` Phillip Lord
2016-01-08 1:41 ` Alexis
2016-01-08 1:50 ` Richard Copley
2016-01-08 2:41 ` Alexis
2016-01-09 1:51 ` John Wiegley
2016-01-08 12:48 ` Phillip Lord
2016-01-08 13:06 ` Michael Albinus
2016-01-08 13:59 ` Phillip Lord
2016-01-08 14:12 ` Michael Albinus
2016-01-09 2:52 ` Alexis
2016-01-10 15:58 ` Michael Albinus
2016-01-11 8:05 ` Alexis
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 12:57 ` Phillip Lord
2016-01-08 13:37 ` Michael Albinus
2016-01-08 13:52 ` Lars Magne Ingebrigtsen
2016-01-11 13:52 ` Phillip Lord
2016-01-11 16:18 ` Lars Magne Ingebrigtsen
2016-01-08 15:05 ` Stefan Monnier
2016-01-08 23:16 ` Leaving out non-applicable commands on Mx (was: 4K Bugs) Óscar Fuentes
2016-01-09 0:22 ` Leaving out non-applicable commands on Mx John Wiegley
2016-01-09 0:55 ` Óscar Fuentes
2016-01-09 1:46 ` John Wiegley
2016-01-09 1:54 ` Spencer Boucher
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:37 ` Óscar Fuentes
2016-01-09 2:15 ` Óscar Fuentes
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:49 ` Óscar Fuentes
2016-01-09 4:14 ` Stefan Monnier
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:08 ` Drew Adams
2016-01-09 3:33 ` Óscar Fuentes
2016-01-09 9:05 ` Yuri Khan
2016-01-09 19:27 ` Drew Adams
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
2016-01-09 21:53 ` Drew Adams
2016-01-11 12:02 ` Drew Adams
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
2016-01-10 10:09 ` Clément Pit--Claudel
2016-01-10 17:55 ` Drew Adams [this message]
[not found] ` <CAAdUY-Kfm-0JbOLpi4KE5wkmp6hfG+-y3V-_vTExaFkmF5RmEg@mail.gmail.com>
2016-01-10 12:36 ` Artur Malabarba
2016-01-11 3:46 ` Richard Stallman
2016-01-11 15:13 ` Lars Magne Ingebrigtsen
2016-01-11 6:13 ` Stefan Monnier
2016-01-11 6:48 ` Óscar Fuentes
2016-01-11 14:08 ` Herring, Davis
2016-01-11 16:34 ` Óscar Fuentes
2016-01-12 4:46 ` Herring, Davis
2016-01-12 4:59 ` Óscar Fuentes
2016-01-11 15:15 ` Lars Magne Ingebrigtsen
2016-01-12 2:14 ` Clément Pit--Claudel
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
2016-01-10 18:23 ` Drew Adams
2016-01-10 19:31 ` Óscar Fuentes
2016-01-10 22:40 ` Drew Adams
2016-01-10 23:19 ` Óscar Fuentes
2016-01-10 18:22 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Drew Adams
2016-01-11 6:29 ` Making `interactive' conditional Stefan Monnier
2016-01-11 11:48 ` Drew Adams
2016-01-10 18:33 ` Clément Pit--Claudel
2016-01-10 22:28 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Marcin Borkowski
2016-01-11 6:19 ` Making `interactive' conditional Stefan Monnier
2016-01-19 6:24 ` John Wiegley
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 11:17 ` Lars Magne Ingebrigtsen
2016-01-19 13:31 ` Stefan Monnier
2016-01-19 16:52 ` Drew Adams
2016-01-19 15:28 ` Óscar Fuentes
2016-01-19 16:07 ` Lars Magne Ingebrigtsen
2016-01-19 20:24 ` Óscar Fuentes
2016-01-19 16:20 ` John Wiegley
2016-01-19 17:55 ` Lars Magne Ingebrigtsen
2016-01-19 18:39 ` John Wiegley
2016-01-19 19:02 ` Lars Magne Ingebrigtsen
2016-01-19 20:23 ` Óscar Fuentes
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
2016-01-09 14:50 ` Óscar Fuentes
2016-01-09 17:32 ` Stefan Monnier
2016-01-10 8:53 ` Lars Magne Ingebrigtsen
2016-01-10 16:05 ` Stefan Monnier
2016-02-04 3:19 ` Lars Ingebrigtsen
2016-01-10 16:07 ` Stefan Monnier
2016-01-10 16:14 ` Óscar Fuentes
2016-01-08 10:50 ` 4K Bugs Michael Albinus
2016-01-08 13:21 ` Phillip Lord
2016-01-08 13:33 ` Michael Albinus
2016-01-08 14:08 ` Phillip Lord
2016-01-09 4:21 ` Andrew Hyatt
2016-01-09 8:42 ` Michael Albinus
2016-01-11 13:54 ` Phillip Lord
2016-01-08 19:27 ` Stephen Leake
2016-01-08 20:52 ` Michael Albinus
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=74e37b32-1c4c-42b2-a98e-ab3ea7086e2c@default \
--to=drew.adams@oracle.com \
--cc=clement.pit@gmail.com \
--cc=emacs-devel@gnu.org \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.