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

From: Stefan Monnier <[email-masked]>
Date: Mon, 20 Jan 2020 18:04:35 -0500

>> 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.

IIUC the bug under discussion is related to the `required` argument of
`completing-read` (and to `minibuffer-completion-confirm`).
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).

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`.

        Stefan