|
From: | Aaron Cohen |
Subject: | bug#49761: file-cache-minibuffer-complete has become unusable for duplicate file names in MacOSX 27.x emacs |
Date: | Mon, 2 Aug 2021 13:12:07 -0700 |
Very much appreciated!!And thank you for investigating and isolating the issue: I had misidentified the actual problem and didn't provide a duplication recipe, making your job much harder.I promise to do better next time, and provide a test case. :-)Thanks again!!On Sun, Aug 1, 2021 at 1:41 AM Juri Linkov <juri@linkov.net> wrote:tags 49761 fixed
close 49761 28.0.50
thanks
> Well, it's now the default behavior. It wasn't previously. :-)
And new is not always better ;-)
So now the new behavior (that became old now) was fixed
in the master branch for Emacs 28, and all test cases
that you presented work completely as expected.
Thanks for helping to understand where the problem was.
BTW, after the fix, the following additional information
is not necessary, but I discovered that in old versions
you can use the prefix argument to force C-TAB cycling.
An excerpt from etc/NEWS.20:
** file-cache-minibuffer-complete now accepts a prefix argument.
With a prefix argument, it does not try to do completion of
the file name within its directory; it only checks for other
directories that contain the same file name.
Thus, given the file name Makefile, and assuming that a file
Makefile.in exists in the same directory, ordinary
file-cache-minibuffer-complete will try to complete Makefile to
Makefile.in and will therefore never look for other directories that
have Makefile. A prefix argument tells it not to look for longer
names such as Makefile.in, so that instead it will look for other
directories--just as if the name were already complete in its present
directory.
and a comment from bindings.el:
;; The prefix argument works around a bug in the minibuffer completion.
;; The completion function doesn't distinguish between the states:
;;
;; "Multiple completions of name" (eg, Makefile, Makefile.in)
;; "Name available in multiple directories" (/tmp/Makefile, ~me/Makefile)
;;
;; The default is to do the former; a prefix arg forces the latter.
[Prev in Thread] | Current Thread | [Next in Thread] |