;;; map-ynp.el --- General-purpose boolean question-asker.
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 2000 Free Software Foundation, Inc.
;; Author: Roland McGrath <roland@gnu.org>
;; Maintainer: FSF
list (cdr list))
t)
nil))))))
- (if (listp last-nonmenu-event)
+ (if (and (listp last-nonmenu-event)
+ use-dialog-box)
;; Make a list describing a dialog box.
- (let ((object (capitalize (nth 0 help)))
- (objects (capitalize (nth 1 help)))
- (action (capitalize (nth 2 help))))
- (setq map (` (("Yes" . act) ("No" . skip) ("Quit" . exit)
- ((, (if help (concat action " " object " And Quit")
- "Do it and Quit")) . act-and-exit)
- ((, (if help (concat action " All " objects)
- "Do All")) . automatic)
- (,@ (mapcar (lambda (elt)
- (cons (capitalize (nth 2 elt))
- (vector (nth 1 elt))))
- action-alist))))
+ (let ((object (if help (capitalize (nth 0 help))))
+ (objects (if help (capitalize (nth 1 help))))
+ (action (if help (capitalize (nth 2 help)))))
+ (setq map `(("Yes" . act) ("No" . skip) ("Quit" . exit)
+ (,(if help (concat action " " object " And Quit")
+ "Do it and Quit") . act-and-exit)
+ (,(if help (concat action " All " objects)
+ "Do All") . automatic)
+ ,@(mapcar (lambda (elt)
+ (cons (capitalize (nth 2 elt))
+ (vector (nth 1 elt))))
+ action-alist))
use-menus t
mouse-event last-nonmenu-event))
(setq user-keys (if action-alist
(unwind-protect
(progn
(if (stringp prompter)
- (setq prompter (` (lambda (object)
- (format (, prompter) object)))))
+ (setq prompter `(lambda (object)
+ (format ,prompter object))))
(while (funcall next)
(setq prompt (funcall prompter elt))
(cond ((stringp prompt)
next (function (lambda () nil))))
((or (eq def 'quit) (eq def 'exit-prefix))
(setq quit-flag t)
- (setq next (` (lambda ()
- (setq next '(, next))
- '(, elt)))))
+ (setq next `(lambda ()
+ (setq next ',next)
+ ',elt)))
((eq def 'automatic)
;; Act on this and all following objects.
(if (funcall prompter elt)
(set-buffer standard-output)
(help-mode)))
- (setq next (` (lambda ()
- (setq next '(, next))
- '(, elt)))))
+ (setq next (lambda ()
+ (setq next ',next)
+ ',elt)))
((vectorp def)
;; A user-defined key.
(if (funcall (aref def 0) elt) ;Call its function.
;; The function has eaten this object.
(setq actions (1+ actions))
;; Regurgitated; try again.
- (setq next (` (lambda ()
- (setq next '(, next))
- '(, elt))))))
+ (setq next (lambda ()
+ (setq next ',next)
+ ',elt))))
((and (consp char)
(eq (car char) 'switch-frame))
;; switch-frame event. Put it off until we're done.
(setq delayed-switch-frame char)
- (setq next (` (lambda ()
- (setq next '(, next))
- '(, elt)))))
+ (setq next (lambda ()
+ (setq next ',next)
+ ',elt)))
(t
;; Random char.
(message "Type %s for help."
(key-description (vector help-char)))
(beep)
(sit-for 1)
- (setq next (` (lambda ()
- (setq next '(, next))
- '(, elt)))))))
+ (setq next (lambda ()
+ (setq next ',next)
+ ',elt)))))
(prompt
(funcall actor elt)
(setq actions (1+ actions))))))