Subject: bug#1512: 23.0.60; SPC, TAB during completion do not do word completion, prefix completion

From: "Drew Adams" <[email-masked]>
Date: Sun, 14 Dec 2008 01:00:51 -0800

> > Why "in the context of partial completion"? Emacs word completion is
> > not (has never been) partial completion.  That's the point.
> 
> That's your interpretation.  

My "interpretation" is just (1) what the doc says and (2) what the behavior has
always been. There is nothing interpretative in that. Nothing new and nothing
Drew in it.

> The current interpretation is that SPC is a variant of TAB
> which works similarly except that it stops completion at a
> word boundary and adds a - or a SPC if that can enable completion.

The "current interpretation"? The doc has not changed - where is this new
interpretation? You changed the default behavior and you invent a new
interpretation accordingly. OK. But that's not what the doc says, and that's not
what the behavior has always been. It's your behavior and your interpretation.

Like our dear King George W, you are The Decider, and you can redefine red as
blue. Can't argue with that, except to say that red is not really blue, even if
you rename it so.

> This allows SPC to obey completion-styles. Your interpretation
> basically implies that SPC can't obey completion-styles.

No. My "interpretation" is only what the doc says. And that does not describe
the current default behavior.

It's one thing (and a good thing) to extend the possible behaviors of SPC and
TAB to alternatives. Neither I nor the existing doc "imply that SPC can't obey
`completion-styles'". The doc needs to describe the default behavior, and it
does not describe the behavior of the current default value of
`completion-styles'. It describes what the behavior has always been before,
which is what the default behavior should still be.

Partial completion using SPC does not, as the doc says SPC should, "Complete up
to one word from the minibuffer text before point". Instead, it completes _all_
of the partial words of text before point. It completes `g-ca' to `gnus-cache'
(skipping `gnus-jog-cache', BTW) - hardly "up to one word". But you will no
doubt just redefine what "up to one word" means and what it means to complete
the "text before point".

The right thing to do is to keep the standard behavior by default, and keep the
doc as it is, adding that it describes the default behavior but, depending on
customization of `completion-styles', the actual behavior might be different.

If it turns out later that most users prefer the default behavior to become
basic + partial-completion, then we can change it at that time. That's typically
how default behavior changes in Emacs (transient mark mode, font lock,...), and
that's the right way to proceed. Change shouldn't simply be about making Emacs
act like your .emacs by default. A little more conservatism in changing
longstanding default behavior is called for. Be liberal adding new and
experimental optional features, but be conservative about changing the default
behavior.

> > Emacs word completion (SPC), just like Emacs prefix completion
> > (TAB) has always had, as part of its behavior, the display of
> > a [No match] message when it cannot complete a word at a time
> > or cannot complete a prefix.  That's part of what word and
> > prefix completion mean.
> 
> To me the above tells me you don't want partial completion.

Not as the default behavior, no. I have nothing against it being an option, as
it has always been. What is wrong with that? You have not given one argument why
we should not keep the long-standing behavior as the default. You made a
significant change without the least justifying argument. Proof by
pontification?

> I changed the default on purpose.

Yes, there has never been any doubt of that. That's not an argument why the
change is a good idea. It's your idea, sure, but why is it a good one for Emacs?
Have many users been asking for partial-completion as the default behavior? It's
been available for years. I don't see a push for it as the default, except from
you.

I gave reasons why it is a bad choice as default, showing examples of confusing
(even baffling) behavior and behavior that slows down simple typo correction.
You neither address my arguments nor provide any arguments in favor of your
change.

You summarily reject any objection to your change, just as you did when I
objected to the change in default behavior for C-x C-f from lax completion to
confirmed completion. No argument, no rebuttal to reasons given, just the simple
words "You're wrong." Fortunately, in that case others brought up the same
objection later, in a different thread, you discussed the matter a bit, and
ultimately compromised. There were not more or different arguments than those I
had already given; there were only more voices.