]> code.delx.au - gnu-emacs/blobdiff - lisp/map-ynp.el
(mark): Doc fix.
[gnu-emacs] / lisp / map-ynp.el
index e79e47fa664bb9a0710a4bc559cb354fe112fbf9..c64b1c78ae15efa13746d6bb780fa2c88f2d6117 100644 (file)
@@ -80,11 +80,11 @@ Returns the number of actions taken."
                                           action-alist ", ")
                                " ")
                      ""))
-        ;; Make a map that defines all the user keys as `user'.
+        ;; Make a map that defines each user key as a vector containing
+        ;; its definition.
         (map (cons 'keymap
-                   (append (mapcar (function
-                                    (lambda (elt)
-                                      (cons (car elt) 'user)))
+                   (append (mapcar (lambda (elt)
+                                     (cons (car elt) (vector (nth 1 elt))))
                                    action-alist)
                            query-replace-map)))
         (actions 0)
@@ -111,12 +111,18 @@ Returns the number of actions taken."
       (setq prompt (funcall prompter elt))
       (if (stringp prompt)
          (progn
+           (setq quit-flag nil)
            ;; Prompt the user about this object.
            (let ((cursor-in-echo-area t))
              (message "%s(y, n, !, ., q, %sor %s) "
                       prompt user-keys
                       (key-description (char-to-string help-char)))
              (setq char (read-event)))
+           ;; Show the answer to the question.
+           (message "%s(y, n, !, ., q, %sor %s) %s"
+                    prompt user-keys
+                    (key-description (char-to-string help-char))
+                    (single-key-description char))
            (setq def (lookup-key map (vector char)))
            (cond ((eq def 'exit)
                   (setq next (function (lambda () nil))))
@@ -132,6 +138,11 @@ Returns the number of actions taken."
                   (funcall actor elt)
                   (setq actions (1+ actions)
                         next (function (lambda () nil))))
+                 ((eq def 'quit)
+                  (setq quit-flag t)
+                  (setq next (` (lambda ()
+                                  (setq next '(, next))
+                                  '(, elt)))))
                  ((eq def 'automatic)
                   ;; Act on this and all following objects.
                   (if (eval (funcall prompter elt))
@@ -169,9 +180,9 @@ the current %s and exit."
                   (setq next (` (lambda ()
                                   (setq next '(, next))
                                   '(, elt)))))
-                 ((eq def 'user)
+                 ((vectorp def)
                   ;; A user-defined key.
-                  (if (funcall (nth 1 tail) elt) ;Call its function.
+                  (if (funcall (aref def 0) elt) ;Call its function.
                       ;; The function has eaten this object.
                       (setq actions (1+ actions))
                     ;; Regurgitated; try again.