mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
Allow recursive minibuffers for yes-or-no-p and y-or-n-p (bug#17272 bug#19064)
* lisp/subr.el (y-or-n-p): Let-bind enable-recursive-minibuffers to t. * src/fns.c (Fyes_or_no_p): Specbind Qenable_recursive_minibuffers to Qt.
This commit is contained in:
parent
6960a7543c
commit
b3c0fb21bd
@ -2847,6 +2847,7 @@ is nil and `use-dialog-box' is non-nil."
|
||||
(t
|
||||
(setq prompt (funcall padded prompt))
|
||||
(let* ((empty-history '())
|
||||
(enable-recursive-minibuffers t)
|
||||
(str (read-from-minibuffer
|
||||
prompt nil
|
||||
(make-composed-keymap y-or-n-p-map query-replace-map)
|
||||
|
@ -2805,15 +2805,18 @@ if `last-nonmenu-event' is nil, and `use-dialog-box' is non-nil. */)
|
||||
AUTO_STRING (yes_or_no, "(yes or no) ");
|
||||
prompt = CALLN (Fconcat, prompt, yes_or_no);
|
||||
|
||||
ptrdiff_t count = SPECPDL_INDEX ();
|
||||
specbind (Qenable_recursive_minibuffers, Qt);
|
||||
|
||||
while (1)
|
||||
{
|
||||
ans = Fdowncase (Fread_from_minibuffer (prompt, Qnil, Qnil, Qnil,
|
||||
Qyes_or_no_p_history, Qnil,
|
||||
Qnil));
|
||||
if (SCHARS (ans) == 3 && !strcmp (SSDATA (ans), "yes"))
|
||||
return Qt;
|
||||
return unbind_to (count, Qt);
|
||||
if (SCHARS (ans) == 2 && !strcmp (SSDATA (ans), "no"))
|
||||
return Qnil;
|
||||
return unbind_to (count, Qnil);
|
||||
|
||||
Fding (Qnil);
|
||||
Fdiscard_input ();
|
||||
|
Loading…
Reference in New Issue
Block a user