Mercurial > emacs
changeset 81672:3f6e5ebf9c3b
(Fcompleting_read): New value `confirm-only' for `require-match'.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sun, 01 Jul 2007 01:57:21 +0000 |
parents | 03548d4c812b |
children | da0809ff8ac8 |
files | src/ChangeLog src/minibuf.c |
diffstat | 2 files changed, 26 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog Sat Jun 30 18:49:41 2007 +0000 +++ b/src/ChangeLog Sun Jul 01 01:57:21 2007 +0000 @@ -1,3 +1,8 @@ +2007-07-01 Stefan Monnier <monnier@iro.umontreal.ca> + + * minibuf.c (Fcompleting_read): New value `confirm-only' + for `require-match'. + 2007-06-28 Stefan Monnier <monnier@iro.umontreal.ca> * fileio.c (Fdo_auto_save): Revert last patch installed unwillingly as
--- a/src/minibuf.c Sat Jun 30 18:49:41 2007 +0000 +++ b/src/minibuf.c Sun Jul 01 01:57:21 2007 +0000 @@ -1717,9 +1717,15 @@ See `try-completion' and `all-completions' for more details on completion, COLLECTION, and PREDICATE. -If REQUIRE-MATCH is non-nil, the user is not allowed to exit unless - the input is (or completes to) an element of COLLECTION or is null. - If it is also not t, typing RET does not exit if it does non-null completion. +REQUIRE-MATCH can take the following values: +- t means that the user is not allowed to exit unless + the input is (or completes to) an element of COLLECTION or is null. +- nil means that the user can exit with any input. +- `confirm-only' means that the user can exit with any input, but she will + need to confirm her choice if the input is not an element of COLLECTION. +- anything else behaves like t except that typing RET does not exit if it + does non-null completion. + If the input is null, `completing-read' returns DEF, or an empty string if DEF is nil, regardless of the value of REQUIRE-MATCH. @@ -2230,6 +2236,18 @@ goto exit; } + if (EQ (Vminibuffer_completion_confirm, intern ("confirm-only"))) + { /* The user is permitted to exit with an input that's rejected + by test-completion, but at the condition to confirm her choice. */ + if (EQ (current_kboard->Vlast_command, Vthis_command)) + goto exit; + else + { + temp_echo_area_glyphs (build_string (" [Confirm]")); + return Qnil; + } + } + /* Call do_completion, but ignore errors. */ SET_PT (ZV); val = internal_condition_case (complete_and_exit_1, Qerror,