]> git.eshelyaron.com Git - emacs.git/commitdiff
Respect non-saved value of `read-short-answer' (Bug#31782)
authorNoam Postavsky <npostavs@gmail.com>
Thu, 5 Jul 2018 02:51:45 +0000 (22:51 -0400)
committerNoam Postavsky <npostavs@gmail.com>
Sat, 4 Aug 2018 15:55:40 +0000 (11:55 -0400)
* lisp/emacs-lisp/map-ynp.el (read-answer-short): Add an `auto'
setting.
(read-answer): Check the function cell of `yes-or-no-p' when
`read-answer-short' is `auto' rather than calling
`custom-reevaluate-setting' which would reset the option to its saved
value.

lisp/emacs-lisp/map-ynp.el

index 61c04ff7b3e6ecd2076aaa27ffc69da9cb81f755..87c4079a95fdf78c196b142c3359181317a4603a 100644 (file)
@@ -257,9 +257,14 @@ C-g to quit (cancel the whole command);
 ;; either long or short answers.
 
 ;; For backward compatibility check if short y/n answers are preferred.
-(defcustom read-answer-short (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
-  "If non-nil, accept short answers to the question."
-  :type 'boolean
+(defcustom read-answer-short 'auto
+  "If non-nil, `read-answer' accepts single-character answers.
+If t, accept short (single key-press) answers to the question.
+If nil, require long answers.  If `auto', accept short answers if
+the function cell of `yes-or-no-p' is set to `y-or-on-p'."
+  :type '(choice (const :tag "Accept short answers" t)
+                 (const :tag "Require long answer" nil)
+                 (const :tag "Guess preference" auto))
   :version "27.1"
   :group 'minibuffer)
 
@@ -290,8 +295,9 @@ When `read-answer-short' is non-nil, accept short answers.
 Return a long answer even in case of accepting short ones.
 
 When `use-dialog-box' is t, pop up a dialog window to get user input."
-  (custom-reevaluate-setting 'read-answer-short)
-  (let* ((short read-answer-short)
+  (let* ((short (if (eq read-answer-short 'auto)
+                    (eq (symbol-function 'yes-or-no-p) 'y-or-n-p)
+                  read-answer-short))
          (answers-with-help
           (if (assoc "help" answers)
               answers