Subject: Re: bug#11338: 24.1.50; read-buffer-completion-ignore-case fails on one-character names

From: Stephen Berman <[email-masked]>
Date: Mon, 07 Dec 2020 19:20:20 +0100

On Mon, 07 Dec 2020 18:20:48 +0100 Lars Ingebrigtsen <[email-masked]> wrote:

> Stephen Berman <[email-masked]> writes:
>
>> 0. emacs -Q
>> 1. M-x customize-option RET read-buffer-completion-ignore-case RET.
>>    Toggle to "on", set for the current session.
>> 2. Type `C-x b RET a', then `C-x b RET A', then `C-x b RET ahjk', then
>>    switch to buffer *scratch*.
>> 3. C-x b a TAB => Emacs correctly reports: "[Complete, but not unique]"
>> 4. TAB => *Completions* buffer contains, as expected: A a ahjk.
>> 5. C-x k ahjk RET.
>> 6. C-x b a TAB => Emacs incorrectly reports: "[Sole completion]".
>> 7. C-x b A TAB => Emacs incorrectly reports: "[Sole completion]".
>
> (This bug report unfortunately got no response at the time.)
>
> I tried this in Emacs 28, and I got:

[*Completions* buffer showing both A and a]

> So I'm going to go ahead and guess that this has been fixed at some
> point in the years since this was reported, and I'm closing this bug
> report.  If this is still and issue, please respond to the debbugs
> address, and we'll reopen.

Did you follow the above recipe exactly in order?  When I do that in
master, emacs-27 and emacs-26 (all with -Q), when at step 2 I type `C-x
b RET A' buffer `a' remains the current buffer and `C-x C-b' shows no
buffer `A'.  Only if I move step 1 of the recipe to after step 2 do I
get the same thing as in your screenshot.  So I agree that the bug I
reported seems to have been fixed, but there appears to be a new bug
which wasn't present in 24.1.50 (which I don't have readily available to
test now): that it's apparently not possible with
read-buffer-completion-ignore-case non-nil to switch to a non-existing
buffer whose name differs from an existing buffer only in case.  If you
confirm, I'll report a new bug.  Or is this considered expected behavior
(and if so, why)?

Steve Berman