diff options
author | Eli Zaretskii <eliz@gnu.org> | 2023-05-12 14:07:29 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2023-05-12 14:07:29 +0300 |
commit | e535494491cb6266260e5adcbcbc9b7cd76cab2f (patch) | |
tree | 39736c347fc23cfbccd80bede0680b724f73e8e8 | |
parent | 0b39e4daee4383d9e535148a973e0d5701125ada (diff) | |
parent | cbb59267c757b747c48a2690f96073614e8b4fd4 (diff) | |
download | emacs-e535494491cb6266260e5adcbcbc9b7cd76cab2f.tar.gz |
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
-rw-r--r-- | doc/lispref/minibuf.texi | 6 | ||||
-rw-r--r-- | lisp/subr.el | 4 | ||||
-rw-r--r-- | src/fns.c | 11 |
3 files changed, 19 insertions, 2 deletions
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index 5d59387fb1f..ff12808762f 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -2200,6 +2200,9 @@ the expected answers (@kbd{y}, @kbd{n}, @kbd{@key{SPC}}, @kbd{@key{DEL}}, or something that quits), the function responds @samp{Please answer y or n.}, and repeats the request. +If @var{prompt} is a non-empty string, and it ends with a non-space +character, a @samp{SPC} character will be appended to it. + This function actually uses the minibuffer, but does not allow editing of the answer. The cursor moves to the minibuffer while the question is being asked. @@ -2240,6 +2243,9 @@ minibuffer, followed by the value of @code{yes-or-no-prompt} @w{(default responses; otherwise, the function responds @w{@samp{Please answer yes or no.}}, waits about two seconds and repeats the request. +If @var{prompt} is a non-empty string, and it ends with a non-space +character, a @samp{SPC} character will be appended to it. + @code{yes-or-no-p} requires more work from the user than @code{y-or-n-p} and is appropriate for more crucial decisions. diff --git a/lisp/subr.el b/lisp/subr.el index 0501fc67a3e..a52abb38772 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -3590,7 +3590,9 @@ confusing to some users.") Return t if answer is \"y\" and nil if it is \"n\". PROMPT is the string to display to ask the question; `y-or-n-p' -adds \"(y or n) \" to it. +adds \"(y or n) \" to it. If PROMPT is a non-empty string, and +it ends with a non-space character, a space character will be +appended to it. If you bind the variable `help-form' to a non-nil value while calling this function, then pressing `help-char' diff --git a/src/fns.c b/src/fns.c index bb6efdda655..561f526f8d0 100644 --- a/src/fns.c +++ b/src/fns.c @@ -26,6 +26,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ #include <intprops.h> #include <vla.h> #include <errno.h> +#include <ctype.h> #include "lisp.h" #include "bignum.h" @@ -3202,7 +3203,9 @@ DEFUN ("yes-or-no-p", Fyes_or_no_p, Syes_or_no_p, 1, 1, 0, Return t if answer is yes, and nil if the answer is no. PROMPT is the string to display to ask the question; `yes-or-no-p' -appends `yes-or-no-prompt' (default \"(yes or no) \") to it. +appends `yes-or-no-prompt' (default \"(yes or no) \") to it. If +PROMPT is a non-empty string, and it ends with a non-space character, +a space character will be appended to it. The user must confirm the answer with RET, and can edit it until it has been confirmed. @@ -3234,6 +3237,12 @@ if `last-nonmenu-event' is nil, and `use-dialog-box' is non-nil. */) if (use_short_answers) return call1 (intern ("y-or-n-p"), prompt); + { + char *s = SSDATA (prompt); + ptrdiff_t len = strlen (s); + if ((len > 0) && !isspace (s[len - 1])) + prompt = CALLN (Fconcat, prompt, build_string (" ")); + } prompt = CALLN (Fconcat, prompt, Vyes_or_no_prompt); specpdl_ref count = SPECPDL_INDEX (); |