[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#68022: 30.0.50; File cache completions accumulate instead of replaci
From: |
Eshel Yaron |
Subject: |
bug#68022: 30.0.50; File cache completions accumulate instead of replacing minibuffer input |
Date: |
Mon, 25 Dec 2023 16:41:27 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Eshel Yaron <me@eshelyaron.com>
>> Cc: 68022@debbugs.gnu.org
>> Date: Mon, 25 Dec 2023 14:47:52 +0100
>>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>> >> Date: Mon, 25 Dec 2023 07:54:22 +0100
>> >> From: Eshel Yaron
>> >>
>> >> With emacs -Q:
>> >>
>> >> 1. M-x file-cache-add-directory-using-find /path/to/emacs/
>> >> 2. C-x C-f mini C-TAB
>> >> 3. Observe the *Completions* buffer pop up with file cache
>> >> completions, suggesting as usual to "type M-<down> or M-<up> to move
>> >> point between completions."
>> >> 4. M-<down> M-<down> M-<up> ...
>> >> 5. Each candidate you highlight this way is inserted in the minibuffer
>> >> after the current input, instead of replacing the appropriate part of
>> >> the input.
>> >>
>> >> I see this already in Emacs 29.1, FWIW.
>> >
>> > Something is missing in the recipe above, because I get "No match"
>> > when I press C-TAB in step 2. What did I miss?
>>
>> Hmm, I'm not sure. Perhaps `file-cache-add-directory-using-find` didn't
>> do its job for some reason?
>
> How do I verify that?
`M-x file-cache-display` should show the cache contents.
> Could you perhaps show at least some of the cache and tell how to
> compare that with what I get here?
Sure, here's what I see after `M-x keep-lines RET mini RET` in the
output buffer of `M-x file-cache-display`:
--8<---------------cut here---------------start------------->8---
/Users/eshelyaron/emacs-29.1/src/deps/minibuf.d
/Users/eshelyaron/emacs-29.1/src/minibuf.c
/Users/eshelyaron/emacs-29.1/native-lisp/29_1_50-1fe1a1fd/preloaded/minibuffer-1b0f548b-7af20c5f.eln
/Users/eshelyaron/emacs-29.1/doc/emacs/mini.texi
/Users/eshelyaron/emacs-29.1/doc/lispref/minibuf.texi
/Users/eshelyaron/emacs-29.1/lib/mini-gmp.c
/Users/eshelyaron/emacs-29.1/lib/mini-gmp.h
/Users/eshelyaron/emacs-29.1/lib/mini-gmp-gnulib.c
/Users/eshelyaron/emacs-29.1/test/src/minibuf-tests.el
/Users/eshelyaron/emacs-29.1/test/lisp/minibuffer-tests.el
/Users/eshelyaron/emacs-29.1/test/lisp/minibuffer-resources/data/minibuffer-test-cttq$tion
/Users/eshelyaron/emacs-29.1/test/lisp/minibuffer-resources/lisp/cedet/semantic-utest-c.test
/Users/eshelyaron/emacs-29.1/test/lisp/minibuffer-resources/lisp/cedet/semantic-utest.test
/Users/eshelyaron/emacs-29.1/test/lisp/minibuffer-resources
/Users/eshelyaron/emacs-29.1/lisp/minibuf-eldef.el
/Users/eshelyaron/emacs-29.1/lisp/minibuffer.el
/Users/eshelyaron/emacs-29.1/lisp/use-package/use-package-diminish.el
--8<---------------cut here---------------end--------------->8---
>> > Is the above supposed to work in any Emacs source tree? Also, what
>> > should be the default-directory in step 1 (if it's important) --
>> > should it be the root of the Emacs source tree?
>>
>> That shouldn't matter, I think, as long as you have several files with
>> "mini" in their names in the cache.
>
> If I invoke 'find' from the shell prompt, I get this:
>
> D:\gnu\git\emacs\branch>find . -name "mini*"
> ./doc/emacs/mini.texi
> ./doc/lispref/minibuf.texi
> ./lib/mini-gmp-gnulib.c
> ./lib/mini-gmp.c
> ./lib/mini-gmp.h
> ./lisp/minibuf-eldef.el
> ./lisp/minibuf-eldef.elc
> ./lisp/minibuffer.el
> ./lisp/minibuffer.elc
> ./src/deps/minibuf.d
> ./src/minibuf.c
> ./src/minibuf.o
> ./test/lisp/minibuffer-resources
> ./test/lisp/minibuffer-resources/data/minibuffer-test-cttq$tion
> ./test/lisp/minibuffer-tests.el
> ./test/lisp/minibuffer-tests.elc
> ./test/src/minibuf-tests.el
>
> Do you get something very different?
No, I get more or less the same.
Instead of using `file-cache-add-directory-using-find`, you can also set
`file-cache-alist` directly:
--8<---------------cut here---------------start------------->8---
(setq file-cache-alist
'(("bar" "/foo")
("baz" "/foo")
("bad" "/foo")
("bay" "/foo")
("ban" "/foo")))
--8<---------------cut here---------------end--------------->8---
Then `C-x C-f ba C-TAB M-<down> M-<down> ...` should show the issue.
Earlier I wrote that the same issue appears in Emacs 29.1, but now I
tested that again and I think I might have been mistaken. In Emacs 29.1
I see a different issue: `M-<down>` in the above recipe emits an error:
--8<---------------cut here---------------start------------->8---
Wrong type argument: number-or-marker-p, ""
--8<---------------cut here---------------end--------------->8---
and doesn't change the minibuffer contents.
Thanks,
Eshel