Subject: Re: bug#11339: 24.1.50; read-{buffer,file-name}-completion-ignore-case fails on non-ascii

From: Stefan Monnier <[email-masked]>
Date: Thu, 07 Nov 2019 11:27:50 -0500

>> I think the core of the bug is reproduced below:
>> 
>>     M-: (let ((completion-ignore-case t)) (try-completion "bah" '("bah" "bAh")))
>> 
>> this returns t instead of returning "bah".
>> Probably an error in the handling of `matchcount` in `try-completion`.
>
> Are you sure?

I think so, yes.

> I think the return value of t is expected, per these
> comments in try-completion:

I don't think so:

> 		  /* If this is an exact match except for case,
> 		     use it as the best match rather than one that is not an
> 		     exact match.  This way, we get the case pattern
> 		     of the actual match.  */

This says that (try-completion "bah" '("bAh" "bahfoo")) should return "bAh"

> 		      /* If there is more than one exact match ignoring case,
> 			 and one of them is exact including case,
> 			 prefer that one.  */

This says (try-completion "bah" '("bah" "bAh")) should return "bah" rather
than "bAh", which also agrees with I said above (it should not return t).

> 		      /* If there is no exact match ignoring case,
> 			 prefer a match that does not change the case
> 			 of the input.  */

This says that (try-completion "bah" '("bAhbar" "bahfoo")) should return
"bah" rather than "bAh".

        Stefan