Subject: bug#46368: Completion vs. "*" buffer names

From: 積丹尼 Dan Jacobson <[email-masked]>
Date: Wed, 10 Feb 2021 08:31:54 +0800

The problem is emacs prompts with A when it should prompt with B:

[A] Switch to buffer (default *scratch*): scratch*
[B] Switch to buffer (default *scratch*): *scratch*

There is no basis for emacs to produce A.
The line is not too long so need to be truncated at the front.
The asterisk at the front is not more boring than the asterisk at the end.
Emacs simply makes a mistake, dropping the asterisk at the front.
If it kept the asterisk on the front, matching would work properly.

Your tests are biased, in that you are still executing from one of the
buffers involved. My tests move to a third neutral buffer.

$ emacs -Q --eval '(progn(clone-buffer)(switch-to-buffer "x"))'
Then typs
 C-x b			;; switch-to-buffer
 s			;; self-insert-command
 c			;; self-insert-command
 <tab>			;; minibuffer-complete
 <tab>			;; minibuffer-complete
 C-h l			;; view-lossage

And, even if matching, say, still works super duper, etc. By forgetting
the asterisk at front, emacs looks like it forgot something.

>>>>> "GH" == Gregory Heytings <[email-masked]> writes:

GH> Thank you.  Here's a shorter recipe:

GH> emacs -Q
GH> M-x clone-buffer
GH> C-x b RET
GH> C-x b s TAB

GH> At that point it is possible to select "*scratch*<2>" by typing < TAB,
GH> but it is not possible to select "*scratch*".  With

GH> C-x b *s TAB

GH> there is no problem however, there is no problem, so I'm not sure it's
GH> a bug.