GNU bug report logs -
#66187
read-file-name unexpected behavior when MUSTMATCH is a function
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Hello!
For reference, here's the little snippet I'm testing with:
(completing-read "Prompt: " '("a" "b") nil
(lambda (input)
(string= "a" input)))
where the only expected valid input is "a".
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> Here's another potential solution. While the attached patch seems to
>> work, I'm not sure that minibuffer-completion-confirm should be checked
>> in completion--do-completion instead of completion--complete-and-exit.
>
> It's definitely better to check it in `completion--complete-and-exit`
> (which is about exiting and thus related to whether the content is
> acceptable) than in `completion--do-completion` (which is just about
> completion).
I'm still not sure `completion--complete-and-exit' is the best place to
check that input is valid before exiting.
`completion--do-completion' contains the following cond clause, which
prevents the user from exiting with, e.g., "c".
((null comp)
(minibuffer-hide-completions)
(unless completion-fail-discreetly
(ding)
(completion--message "No match"))
(minibuffer--bitset nil nil nil))
Perhaps we should also run that same body when REQUIRE-MATCH is a
function which returns nil?
> The patch looks OK, thanks. We could make it call `completion-function`
> instead of saying "no match" (after all, it has "complete" in its name),
> but it comes with its own set of problems.
If I understand correctly, the attached patch does this.
I think this works inside of `completion-complete-and-exit', but maybe
not inside of `minibuffer-force-complete-and-exit' since the former
calls `completion--do-completion' internally but the latter does not.
Still exploring ideas... Thanks!
Joseph
[0001-Fix-completing-read-functional-REQUIRE-MATCH-behavio-2.patch (text/x-diff, attachment)]
This bug report was last modified 1 year and 175 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.