bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#38992: 27.0.60; when enabled, fido-mode seems to break vc-git-grep


From: Dmitry Gutov
Subject: bug#38992: 27.0.60; when enabled, fido-mode seems to break vc-git-grep
Date: Tue, 21 Jan 2020 02:56:12 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

On 21.01.2020 2:04, Stefan Monnier wrote:
I'm not very familiar with the code.  Do we really need the
minibuffer-force-complete call there?  I commented it out and can't see
the difference.

The `minibuffer-force-complete` call is the one which actually selects
the "first candidate" from the list of completions, so I do think it's 
necessary.

Oh. Right. Somehow I hadn't tested a scenario where this would matter.

IIUC the bug under discussion is related to the `required` argument of
`completing-read` (and to `minibuffer-completion-confirm`).

Right.

If `required` was nil (as is the case in `grep-read-files` which
I believe is the relevant function here), then when `test-completion`
fails, we should probably just call `exit-minibuffer` (rather than tell
the user that they should do that).

Ido added an extra prompt in situations like this, I think. What you're saying was my first suggestion, but it would require a more invasive change.

And icomplete-force-complete-and-exit, as implemented, calls minibuffer-force-complete-and-exit which doesn't seem to care (or know?) that REQUIRED was nil. If you have a particular change in mind, I'd happily try a patch.

BTW, I now see that my patch changes a function belonging to icomplete, whileas the intention was only to fix fido-mode's behavior. Do you think the change fits icomplete-mode as well?

The problem here is probably caused by the fact that fido-mode arranges
for `minibuffer-force-complete` to choose the *default* rather than to
choose a candidate from the completion table.  It's rare for
a completion table to return candidates that don't pass
`test-completion` (tho it's by not impossible nor incorrect), but it's
much less rare for the default not to pass `test-completion`.

Um, not sure I understand. The problem here is that typing 'all' (unless it matches some of the local files names) or '*.el' and typing RET doesn't work. minibuffer-force-complete tries to choose a completion from the table, and when it can't, we get the "Incomplete" message. Though if it can (there's a matching filename), it ends up worse for the user, in this particular situation.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]