Subject: bug#77718: 31.0.50; completion styles substring and flex are broken

From: Ship Mints <[email-masked]>
Date: Tue, 15 Apr 2025 07:16:58 -0400

On Tue, Apr 15, 2025 at 2:26 AM Eli Zaretskii <[email-masked]> wrote:

> > From: Spencer Baugh <[email-masked]>
> > Cc: [email-masked],  Eli Zaretskii <[email-masked]>,  Stephen
> Berman
> >   <[email-masked]>
> > Date: Mon, 14 Apr 2025 16:30:09 -0400
> >
> > +     (;; Ensure we discard text before // by always using sifn in that
> case.
> > +      (unless (string-search "//" orig)
> > +        (complete-with-action action table orig pred)))
>
> AFAIU, this ignores the case of UNC file names, which begin with "//",
> and other complications with file names on Windows.  Emacs on Windows
> reacts differently to "//" than it does on Posix systems, and it does
> so for very good reasons.
>
> Please don't break file-name completion on Windows.  It took us many
> iterations to get it right, and the result is fragile.  Be sure to
> test each change on Windows as well before installing.
>
> For the same reasons, please test thoroughly with remote file names of
> different formats.
>
> Given the fragility of this, I'd tend to suggest to define a new style
> with these changes, and leave alone the existing styles, even if you
> consider them "broken".
>

The POSIX standard allows "pathnames" that start with "//" and Emacs, for
sure, should respect file names that begin with //.

"A pathname that begins with two successive slashes may be interpreted in
an implementation-defined manner, although more than two leading slashes
shall be treated as a single slash."

"A pathname may optionally contain one or more trailing slashes."

"Multiple successive slashes are considered to be the same as one slash."

For mailing list posterity:

https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_271:~:text=in%20Filename.-,3.273,-Path%20Prefix
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_271:~:text=in%20their%20execution.-,3.40,-Basename
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#:~:text=If%20a%20pathname%20begins%20with%20two%20successive%20%3Cslash%3E%20characters%2C%20the%20first%20component%20following%20the%20leading%20%3Cslash%3E%20characters%20may%20be%20interpreted%20in%20an%20implementation%2Ddefined%20manner%2C%20although%20more%20than%20two%20leading%20%3Cslash%3E%20characters%20shall%20be%20treated%20as%20a%20single%20%3Cslash%3E%20character.
https://pubs.opengroup.org/onlinepubs/007904875/basedefs/xbd_chap03.html#tag_03_266:~:text=A%20pathname%20may%20optionally%20contain%20one%20or%20more%20trailing%20slashes.%20Multiple%20successive%20slashes%20are%20considered%20to%20be%20the%20same%20as%20one%20slash.

-Stephane