Subject: RE: bug#22107: 25.1; Wrong docstring for this-single-command-keys

From: Drew Adams <[email-masked]>
Date: Sun, 13 Dec 2015 09:25:50 -0800 (PST)

> >> Stefan, can you summarize an argument for why it should change in 25.1?
> >
> > Because it's better to get rid of all the C-u special case handling and
> > make C-u be a normal command so that GNU ELPA packages can implement
> > their own form of prefix command.

That's a bit vague, even as a summary.

> I think we should do this.

Why do you think so?

> > The immediate need for the new behavior is to be able to implement
> > C-x 4 and C-x 5 as prefix argument (rather than keymaps) so as to
> > be able to get rid of all the foo-other-window and foo-other-frame
> > and the concomitant need to find key bindings for them.

Caveat: I have not been following this thread much, so it's not
very clear to me what is being proposed, or why.  So yes, I am
relatively uninformed about this.

I can say that it sounds like what is being considered will likely
break some of my code, including key completion (in Icicles).

Why the change?  I don't see anything broken that needs "fixing"
here.  I know that Stefan has long touted getting rid of separate
`*-other-[window|frame]' commands as a great idea.  I disagree
with that.  To me that sounds like both a YAGNI and painting
yourself into a corner.

AFAICT, what Stefan has proposed, previously at least, increases
one-size-fits-all rigidity, with no benefit other than dispensing
with the need to define and bind separate `*-other-*' commands.

To me, being able to define, or not define, such commands
individually, and to make their behaviors be anything one likes,
is a plus, not a minus.  I don't see the "bother" of defining
and binding them to be a giant hurdle which should be eliminated
by redesigning the longstanding `C-u' and `C-x [45]' behavior.

Straitjacketing `C-x [45]...' bindings to automatically be only
a predefined "other" version of the command that is bound to
`C-x ...' (without [45]), would be a step backward, IMO.

(A macro to define & bind such a command could perhaps suffice
to accomplish only that, when desired, possibly with the
addition of a hook that the macro can use.  That would not
impose such command definitions and bindings everywhere.  But
even without such a macro, the typical definition and binding
of an `*-other-*' command amounts to only a few lines of code.

Changing how `C-u' is implemented will also likely break my
code that echoes the prefix arg when the minibuffer is active
(e.g., for individual minibuffer keys that perform actions).

(In Icicles it is common to use minibuffer keys that act on
one or more completion candidates.  Such keys can make use of
the prefix arg, so it is important to echo it in this context.)

Another consideration, but minor: If the `*-other-*' commands
are eliminated then you will presumably no longer be able to
invoke them using `M-x'.  The hard-coded `C-x [45]' keys will,
in effect, replace the commands that have (sometimes) been
bound to them.  I like having not only a key but a command
that is associated with it - which I can invoke in various
ways.  (That's the basic Emacs design.)

AFAICT, special-casing `C-x [45]' - making it exceptional,
is oddly enough being made as an argument in favor of more
consistency.  Yes, one person's consistency can be another
person's bother.  I, for one, am not bothered by the need
(and possibility) to define separate `*-other-*' commands.