unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Michael Albinus <michael.albinus@gmx.de>
Cc: Eli Zaretskii <eliz@gnu.org>, fgunbin@fastmail.fm, emacs-devel@gnu.org
Subject: RE: C-x &
Date: Mon, 6 Aug 2018 13:57:46 -0700 (PDT)	[thread overview]
Message-ID: <7c607922-5ad4-4aff-b988-a464d06439d4@default> (raw)
In-Reply-To: <87zhxzuwwp.fsf@gmx.de>

> Yes. I haven't said otherwise, at least in my last email.
> 
> > If you wanted to call command `universal-async-argument' a "prefix
> > command" you could do so. But `C-x &' is not a prefix command or any
> > other kind of command.
> 
> I haven't said that `C-x &' is any kind of command, at least in my last
> email.

Right. You didn't. But some others did. And it wasn't obvious (to me) that you didn't mean to say that `C-x &' is a "prefix command". If you meant only that `universal-sync-argument' is a prefix command then, as I said, that's OK by me. (The doc should then define "prefix command".)

> >> So I don't see what's wrong with "prefix command" - it is a command
> >> which precedes another command.
> >
> > Command `universal-async-argument', when invoked, precedes invocation
> > of the command bound to the key sequence read by
> > `universal-asyn-argument'. Yes.
> >
> > And using `C-x &' precedes reading of that second key sequence. But
> > neither of those things make `C-x &' into a command, prefix, postfix,
> > or *fix.
> 
> Again, I haven't said that `C-x &' is a command, in my last email.
> 
> Let's agree the obvious: `universal-async-argument' is a command, by
> default bound to the key sequences `C-x &' and `M-x  u n i v e r s a l -
> a s y n c - a r g u m e n t RET.'

Agreed.

(Although I wouldn't say that the command is bound to `M-x...'. That sequence of keys invokes `u-a-a', but the command is not bound to it. We just don't say that kind of thing in Emacs. The key sequences bound to a command are well defined, and they don't include `M-x' followed by keys spelling out the command name. Similarly, the command is not bound to `M-x uni-a-arg TAB RET' etc.)

> The only raison d'être of `universal-async-argument' is to read another
> key sequence, which invokes the command bound to that key sequence. This
> means, the command `universal-async-argument' always precedes another
> command, which I call a prefix in my understanding. 

Agreed. (Although the command that is preceded by `u-a-a' is, if anything, a suffix of it, not a prefix. I suspect you just misspoke in the last phrase.)

> Therefore, I've proposed to call `universal-async-argument' a "prefix command".

OK by me (where "it" is the command, not `C-x &'). "Prefix command" then needs to be described/defined/explained in the manual.

> The Emacs manual distinguishes between commands and the key (sequence) a
> command is bound to. But it explicitely says, that both could be used
> equal:
> 
> --8<---------------cut here---------------start------------->8---
>    In this manual, we will often speak of keys like ‘C-n’ as commands,
> even though strictly speaking the key is bound to a command.
> --8<---------------cut here---------------end--------------->8---
> 
> See (info "(emacs) Commands")

Yeah. I was afraid someone might quote that passage. ;-) 

I don't have a problem with that text, because its purpose is to state that we sometimes speak that way even though it is not really correct. It's not defining a key sequence as the command that it's bound to - quite the opposite. It both (1) points out that a key sequence is not the same thing as the command that it's bound to and (2) mentions that sometimes we gloss over that difference, for brevity and when the context makes the meaning clear.

> So it would be also allowed to speak about the key sequence `C-x &' as a
> command, but I don't insist on this if it makes you feel bad.

It would be allowed to say "command `C-x &'", yes, for brevity. That's a far cry from defining a new term "prefix command" and applying it to `C-x &'. (Especially since there is also a notion of prefix key, which is something quite different.)

In sum, I don't have a problem with calling `universal-async-argument' a "prefix command", if that term is defined in the manual.

----

About the command name (FWIW):

I'm not crazy about the name "universal-async-argument'. I realize that it's modeled on `universal-argument', and I can live with it. But I wish that both of those commands were named differently. (No, I'm not proposing a name change for `u-a' at this late date.)

`u-a-a' doesn't necessarily provide a (non-default) prefix arg to a command. It invokes a command (bound to a key sequence that it reads).

It's somewhat akin to `execute-extended-command' or `comint-redirect-send-command'. Those read a command name and not a key sequence, so in that respect they differ. But I think it might be better for `u-a-a' to be named `<something>-command', where <something> does not suggest "universal argument".

Unlike `u-a', you need not provide a prefix arg to `u-a-a'. It's not really the same kind of command. `u-a-a' does accept and take into account a prefix arg, if you provide one; but it's not required (IIUC). (Maybe I'm wrong about this. What prefix arg does bare `C-x &' provide? Does it provide `(4)', as `C-u' does?

No, I don't feel strongly about the command name. Yes, I understand why you proposed "universal-async-argument". But I think its association with `universal-argument' confuses more than clarifies. No, I don't have a great suggestion for the command name. Ideally it should convey "read a key sequence and invoke the command bound to it" (and the doc string would explain that it will also read a prefix arg and pass that to the command). Maybe `invoke-command-bound-to' or some such.



  reply	other threads:[~2018-08-06 20:57 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-23 15:58 Introducing thread-safe Tramp Michael Albinus
2018-07-23 16:06 ` Eli Zaretskii
2018-07-23 16:11   ` Michael Albinus
2018-07-23 16:37     ` Eli Zaretskii
2018-07-23 16:55       ` Michael Albinus
2018-07-24  8:25 ` Ken Raeburn
2018-07-24 12:52   ` Michael Albinus
2018-07-24 13:20     ` martin rudalics
2018-07-25  9:51       ` Michael Albinus
2018-07-25 14:44         ` Eli Zaretskii
2018-07-25 17:32           ` Eli Zaretskii
2018-07-25 17:53             ` Michael Albinus
2018-07-26  7:56             ` martin rudalics
2018-07-26  8:14               ` Michael Albinus
2018-07-26  9:02                 ` martin rudalics
2018-07-26 17:24               ` Eli Zaretskii
2018-07-24 15:06     ` Drew Adams
2018-07-25  9:46       ` Michael Albinus
2018-07-25 11:54         ` Phil Sainty
2018-07-25 12:14           ` Andreas Schwab
2018-07-25 13:02           ` Michael Albinus
2018-07-25 13:31             ` Robert Pluim
2018-07-27 15:05               ` Michael Albinus
2018-08-01 16:27                 ` Robert Pluim
2018-08-01 21:28                   ` Michael Albinus
2018-07-27 19:04         ` Filipp Gunbin
2018-07-27 19:42           ` Michael Albinus
2018-07-28  0:14             ` Filipp Gunbin
2018-07-28  7:01               ` Eli Zaretskii
2018-07-28  9:48             ` Michael Albinus
2018-07-29 18:29               ` Drew Adams
2018-07-30  8:44                 ` Michael Albinus
2018-07-30 14:23                   ` Eli Zaretskii
2018-08-04 12:47                     ` Michael Albinus
2018-08-04 12:49                       ` Michael Albinus
2018-08-04 15:00                         ` Eli Zaretskii
2018-08-04 15:12                           ` Michael Albinus
2018-08-04 15:43                             ` Eli Zaretskii
2018-08-04 15:58                               ` Michael Albinus
2018-08-04 16:11                                 ` Eli Zaretskii
2018-08-04 16:18                                   ` Michael Albinus
2018-08-04 16:58                                     ` Eli Zaretskii
2018-08-04 17:29                                       ` Michael Albinus
2018-08-04 18:34                                         ` Eli Zaretskii
2018-08-05  9:51                                           ` Michael Albinus
2018-08-05 15:06                                             ` Eli Zaretskii
2018-08-06 10:54                                               ` Michael Albinus
2018-08-06 14:55                                                 ` Drew Adams
2018-08-06 15:25                                                   ` C-x & (was: Introducing thread-safe Tramp) Michael Albinus
2018-08-06 17:59                                                     ` Drew Adams
2018-08-06 19:17                                                       ` C-x & Michael Albinus
2018-08-06 20:57                                                         ` Drew Adams [this message]
2018-08-06 23:16                                                           ` Drew Adams
2018-08-07  7:05                                                             ` Michael Albinus
2018-08-07  7:01                                                           ` Michael Albinus
2018-08-06 15:48                                                   ` Introducing thread-safe Tramp Stefan Monnier
2018-08-06 15:24                                                 ` Eli Zaretskii
2018-08-06 15:29                                                   ` C-x & (was: Introducing thread-safe Tramp) Michael Albinus
2018-08-06 18:32                                                 ` Introducing thread-safe Tramp Filipp Gunbin
2018-08-07 14:20                                                   ` Michael Albinus
2018-08-07 14:53                                                     ` Stephen Berman
2018-08-07 15:02                                                       ` Robert Pluim
2018-08-07 15:06                                                         ` Stephen Berman
2018-08-07 16:00                                                           ` Michael Albinus
2018-08-07 15:58                                                         ` Michael Albinus
2018-08-07 15:33                                                       ` Drew Adams
2018-08-07 16:01                                                         ` Michael Albinus
2018-08-07 16:12                                                         ` Drew Adams
2018-08-07 16:18                                                           ` Michael Albinus
2018-08-07 15:56                                                       ` Michael Albinus
2018-08-07 16:24                                                         ` Eli Zaretskii
2018-08-07 16:30                                                           ` Michael Albinus
2018-08-07 15:56                                                     ` Eli Zaretskii
2018-08-07 16:09                                                       ` Michael Albinus
2018-08-07 16:23                                                         ` Drew Adams
2018-08-07 16:46                                                           ` Drew Adams
2018-08-07 16:54                                                             ` Michael Albinus
2018-08-07 17:11                                                             ` Eli Zaretskii
2018-08-08  8:18                                                           ` Michael Albinus
2018-08-08 19:01                                                     ` Filipp Gunbin
2018-08-08 20:52                                                       ` Stefan Monnier
2018-08-08 20:54                                                         ` Drew Adams
2018-08-04 15:42                         ` Drew Adams
2018-08-04 15:56                           ` Michael Albinus
2018-08-04 16:16                             ` Drew Adams
2018-08-04 17:36                               ` Michael Albinus
2018-08-04 22:41                                 ` Drew Adams
2018-08-05 10:03                                   ` Michael Albinus
2018-08-04 16:08                           ` Eli Zaretskii
     [not found]                         ` <<7c28f9d8-e2bb-4778-ab92-92707f12718f@default>
     [not found]                           ` <<837el6t8r3.fsf@gnu.org>
2018-08-04 16:27                             ` Drew Adams
2018-08-04 16:59                               ` Eli Zaretskii
2018-08-05  1:59                               ` Richard Stallman
2018-08-05 10:07                                 ` Michael Albinus
2018-08-06  1:20                                   ` Richard Stallman
2018-08-05 15:36                                 ` Drew Adams
2018-08-06  4:21                                   ` Howard Melman
2018-08-06  4:39                                     ` Werner LEMBERG
2018-08-06  8:07                                     ` Michael Albinus
2018-08-06 13:50                                       ` Clément Pit-Claudel
2018-08-06 14:57                                         ` Drew Adams
2018-08-06 14:52                                       ` Drew Adams
2018-08-06 15:52                                         ` Howard Melman
2018-08-06 15:46                                     ` Stefan Monnier
2018-07-27 21:08           ` Eli Zaretskii
2018-07-28  0:24             ` Filipp Gunbin
2018-07-28  9:02               ` Michael Albinus
2018-07-27 19:19         ` Dmitry Gutov
2018-07-27 19:32           ` Michael Albinus
2018-07-27 19:40             ` Yuri Khan
2018-07-27 19:43               ` Michael Albinus
2018-07-27 20:09                 ` Yuri Khan
2018-07-27 21:15                   ` Eli Zaretskii
2018-07-28  9:11                     ` Michael Albinus
2018-07-28  9:57                       ` Eli Zaretskii
2018-07-28 10:04                         ` Michael Albinus
2018-07-27 22:57             ` Dmitry Gutov
2018-07-27 22:59         ` Dmitry Gutov
2018-07-28  9:18           ` Michael Albinus
2018-07-28  9:36             ` Dmitry Gutov
2018-07-28  9:51               ` Michael Albinus
2018-07-28  9:59 ` Dmitry Gutov
2018-07-28 10:13   ` Michael Albinus
2018-07-28 22:20     ` Dmitry Gutov
2018-07-29  9:54       ` Michael Albinus
2018-08-08 16:49         ` Dmitry Gutov

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=7c607922-5ad4-4aff-b988-a464d06439d4@default \
    --to=drew.adams@oracle.com \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=fgunbin@fastmail.fm \
    --cc=michael.albinus@gmx.de \
    /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).