emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master cbb59267c75: Add trailing space to PROMPT in yes-or-no-p


From: Michael Albinus
Subject: master cbb59267c75: Add trailing space to PROMPT in yes-or-no-p
Date: Fri, 12 May 2023 06:45:45 -0400 (EDT)

branch: master
commit cbb59267c757b747c48a2690f96073614e8b4fd4
Author: Michael Albinus <michael.albinus@gmx.de>
Commit: Michael Albinus <michael.albinus@gmx.de>

    Add trailing space to PROMPT in yes-or-no-p
    
    * doc/lispref/minibuf.texi (Yes-or-No Queries): Describe PROMPT
    massage for y-or-n-p and yes-or-no-p.
    
    * lisp/subr.el (y-or-n-p): Adapt docstring.
    
    * src/fns.c (Fyes_or_no_p): Add trailing space to PROMPT if
    needed.  (Bug#63399)
---
 doc/lispref/minibuf.texi |  6 ++++++
 lisp/subr.el             |  4 +++-
 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 ();



reply via email to

[Prev in Thread] Current Thread [Next in Thread]