GNU bug report logs - #77718
31.0.50; completion styles substring and flex are broken

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Thu, 10 Apr 2025 22:23:02 UTC

Severity: normal

Found in version 31.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Full log


Message #35 received at 77718 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Spencer Baugh <sbaugh <at> janestreet.com>
Cc: 77718 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, stephen.berman <at> gmx.net
Subject: Re: bug#77718: 31.0.50; completion styles substring and flex are
 broken
Date: Tue, 15 Apr 2025 17:04:43 -0400
> Fix various bugs, including bug#77718, by rewriting the way file
> name completion handles environment variable expansion.  Instead
> of using completion-table-with-quoting to manipulate the string
> being completed on, simply make the completion table itself
> understand substitute-in-file-name.

OK.

> The completion table first tries to complete without
> substituting environment variables; this allows completion to
> work on file names which contain things which look like
> environment variables.  If that fails, we call
> substitute-in-file-name and then complete again.

Why?  `substitute-in-file-name` presumably already takes care of that:

    (substitute-in-file-name "/foo/$NOTAVAR/bar")
    => "/foo/$NOTAVAR/bar"

> Tests are updated: we no longer duplicate $s in file names,
> since that's not necessary.

AFAIK it is still needed for the (null action) case.

> And partial-completion now
> preserves unexpanded environment variables.  However,
> partial-completion no longer works across environment variables
> containing delimiters; that's an acceptable sacrifice.

Agreed.

> * lisp/minibuffer.el (completion--replace-prefix)
> (completion--complete-on-expansion): Add.
> (completion--file-name-table): Rewrite to use
> substitute-in-file-name explicitly. (bug#77718)

I think you can also delete `completion--sifn-requote` while at it.


        Stefan





This bug report was last modified today.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.