unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Óscar Fuentes" <ofv@wanadoo.es>
To: emacs-devel@gnu.org
Subject: Re: Making `interactive' conditional
Date: Sun, 10 Jan 2016 17:47:32 +0100	[thread overview]
Message-ID: <878u3xfkkb.fsf@wanadoo.es> (raw)
In-Reply-To: 20160110152710.GB3580@acm.fritz.box

Alan Mackenzie <acm@muc.de> writes:

>> OK Yuri, now you've got me excited. Let's not talk about "filtering M-x";
>> let's talk about making `interactive' conditional. The former is a UI concern,
>> while the latter I consider a core API issue.
>
> What you're proposing is exactly "filtering M-x"; censoring it, if you
> will; a sort of "not in front of the children" attitude that restricts
> what you can see by somebody else's criteria.  I think most people on
> this list would be opposed to censorship in most areas (for example,
> national authorities deciding what part of the WWW is suitable for
> browsing).  Yet, here we are, talking about introducing the same sort of
> thing into Emacs.

The amount of drama an hyperbole in emacs-devel never ceases to surpass
my expectations. On any other place I would read your commentary as
tongue-in-cheek, but not in emacs-devel, I'm afraid... :-)

> This might be OK if the only reason you every use M-x is to execute a
> command.  But it's not.  People (in particular, me) use it to discover
> Emacs, to find the exact name of a command which has only vaguely
> embedded itself in the memory, to get this name into the kill ring to be
> yanked into another source file or into documentation, and so on.  Try
> M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> :-)

The current implementation of M-x is, possibly, the worst way of
exploring the wealth of Emacs commands. M-x is for *executing* commands,
not for learning about them (unless your learning method consists on
executing commands you don't know about). C-h f, the fine manual or,
better, browsing the sources is what I would do (and have done) for
exploring what Emacs has to offer.

Besides, if you insist on using M-x for learning about new commands, I
suppose that having only those that apply to your current context is
helpful, to say the least.

[snip]

> _ANY_ form of censorship must be optional, and not merely up to the
> point where some authority decides it's acceptable to impose on the
> masses.

To be on the safe side, I propose that we involve the EFF, Amnesty
International, Reporters Without Borders and the Council of Europe,
among others, as overseers of this process.

>> Thus, proper UI behavior for M-x falls out by design, and we get to make use
>> of conditionality for other purposes, such as better errors when command
>> functions are called outside their expected environment.
>
> Any chance of an example of such an improvement?  How are we to improve
> on, for example, "Can't execute - not in Foo mode"?
>
>> I'm open to a feature branch implementing such conditionality, as a candidate
>> for merging to master. As described above, I expect the C code impact to be
>> fairly minimal, and the changes to `M-x' to also be minor. The automation
>> logic seems like the trickiest part, as it would have to happen whenever a
>> feature is loaded.
>
> Again, what is this feature for?  Is it going to make editing easier for
> experienced users?  Is it really going to attract new users, ones who
> would be very happy in Emacs but for the huge number of commands
> presented to them in an M-x?

How user-friendly is to type M-x and be offered with thousands of
commands that have zero relation to the task you are performing? Some of
those commands can cause undesirable effects if you invoke them by
accident, I experienced that as a beginner and is very confusing.

Talking about discoverability and your M-x learning method, if I'm
interested on learning what can I do while editing a C file, how does
help me having to skim over thousands upon thousands of unrelated
commands that only make sense for their respective modes?

Why we hide the menus of the modes that are not active for the current
buffer? Why we have local keymaps? Where were you at the time those
repressing features were imposed on the masses?




  reply	other threads:[~2016-01-10 16:47 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
     [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                   ` Óscar Fuentes [this message]
2016-01-10 18:23                     ` Making `interactive' conditional 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

  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=878u3xfkkb.fsf@wanadoo.es \
    --to=ofv@wanadoo.es \
    --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 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).