summaryrefslogtreecommitdiff
path: root/src/fns.c
diff options
context:
space:
mode:
authorRobert Pluim <rpluim@gmail.com>2023-01-03 17:09:53 +0100
committerRobert Pluim <rpluim@gmail.com>2023-01-23 09:17:15 +0100
commit26ef5c09e0a0b13c02e34d858f32c09b42d26dff (patch)
treef9da02a6f9c141119674e830c1ea0037d80e936e /src/fns.c
parent114912254262ce412f30e43e3798c750a752b741 (diff)
downloademacs-26ef5c09e0a0b13c02e34d858f32c09b42d26dff.tar.gz
Add `yes-or-no-prompt' user option
This implements Bug#60312 * src/fns.c (syms_of_fns): Define `yes-or-no-prompt' Lisp variable. (Fyes_or_no_p): Use `yes-or-no-prompt' instead of a hard-coded string. * lisp/cus-start.el (standard): Add custom specification for it. * doc/emacs/mini.texi (Yes or No Prompts): Document `yes-or-no-prompt' * doc/lispref/minibuf.texi (Yes-or-No Queries): And here. * etc/NEWS: Announce the new option.
Diffstat (limited to 'src/fns.c')
-rw-r--r--src/fns.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/fns.c b/src/fns.c
index d8bd7d318b0..59d5b5c0850 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -3182,13 +3182,14 @@ 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'
-adds \"(yes or no) \" to it.
+appends `yes-or-no-prompt' (default \"(yes or no) \") to it.
The user must confirm the answer with RET, and can edit it until it
has been confirmed.
If the `use-short-answers' variable is non-nil, instead of asking for
-\"yes\" or \"no\", this function will ask for \"y\" or \"n\".
+\"yes\" or \"no\", this function will ask for \"y\" or \"n\" (and
+ignore the value of `yes-or-no-prompt').
If dialog boxes are supported, a dialog box will be used
if `last-nonmenu-event' is nil, and `use-dialog-box' is non-nil. */)
@@ -3213,8 +3214,7 @@ 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);
- AUTO_STRING (yes_or_no, "(yes or no) ");
- prompt = CALLN (Fconcat, prompt, yes_or_no);
+ prompt = CALLN (Fconcat, prompt, Vyes_or_no_prompt);
specpdl_ref count = SPECPDL_INDEX ();
specbind (Qenable_recursive_minibuffers, Qt);
@@ -6265,9 +6265,15 @@ When non-nil, `yes-or-no-p' will use `y-or-n-p' to read the answer.
We recommend against setting this variable non-nil, because `yes-or-no-p'
is intended to be used when users are expected not to respond too
quickly, but to take their time and perhaps think about the answer.
-The same variable also affects the function `read-answer'. */);
+The same variable also affects the function `read-answer'. See also
+`yes-or-no-prompt'. */);
use_short_answers = false;
+ DEFVAR_LISP ("yes-or-no-prompt", Vyes_or_no_prompt,
+ doc: /* String to append when `yes-or-no-p' asks a question.
+For best results this should end in a space. */);
+ Vyes_or_no_prompt = make_unibyte_string ("(yes or no) ", strlen ("(yes or no) "));
+
defsubr (&Sidentity);
defsubr (&Srandom);
defsubr (&Slength);