From: Rodolfo Medina <rodolfo.medina@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: defchoice macro (was: A `my-ps-print-setting' function)
Date: Mon, 08 Sep 2008 02:18:08 +0100 [thread overview]
Message-ID: <87iqt7a10v.fsf_-_@gmail.com> (raw)
In-Reply-To: 1220816640.428317@arno.fh-trier.de
Rodolfo Medina <rodolfo.medina@gmail.com> writes:
>> With the help that came from this list, I defined a `my-ps-print-setting'
>> function, that I'm reporting below. Improvements are welcome: in particular
>> I wish it said: "please answer `r' or `l'" when prompting for a right or
>> left footer [...]
Andreas Politz <politza@fh-trier.de> writes:
> Thank lisp you can make your own choices...
>
> (defmacro defchoice (yes no)
> (let* ((name (format "%c-or-%c-p" yes no))
> (name-symbol (intern name)))
> `(defun ,name-symbol (prompt)
> ,(format "Ask user a \"%c or %c\" question. Return t is answer is \"%c\"."
> yes no yes)
> (let* ((pprompt1 (propertize (format "%s (%c or %c) ?" prompt ,yes ,no) 'face
> 'minibuffer-prompt))
> (pprompt2 (concat (propertize (format "Please answer %c or %c. " ,yes ,no) 'face
> 'minibuffer-prompt)
> pprompt1))
> (answer (read-char-exclusive pprompt1)))
> (while (not (or (= answer ,yes)
> (= answer ,no)))
> (setq answer (read-char-exclusive pprompt2)))
> (= answer ,yes)))))
>
>
> (defchoice ?r ?l)
> (r-or-l-p "Choose !")
Fantastic. The `r-or-l-p' function so defined is even better than `y-or-n-p',
because if I put, e.g.:
(defun my-test ()
(interactive)
(y-or-n-p "y or n? "))
(defun my-test2 ()
(interactive)
(r-or-l-p "l or r? "))
, with my-test the text in the echo area does not disappear after answering,
whereas it does with my-test2, which is better.
Only two things:
1) the cursor should appear in the echo area, so I imagine that your macro
definition should contain some `(let ((cursor-in-echo-area t)))' condition
somewhere;
2) keys like up, down, right, left, next, prior, end have problems.
Would it be hard to fix those two things?
Thanks, bye
Rodolfo
next prev parent reply other threads:[~2008-09-08 1:18 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 0:21 How to define a `multiple prompt' function? Rodolfo Medina
2008-09-03 4:08 ` Barry Margolin
2008-09-03 20:31 ` ps-print variables interactive setting (was: How to define a `multiple prompt' function?) Rodolfo Medina
2008-09-03 19:51 ` ps-print variables interactive setting Lennart Borgman (gmail)
2008-09-03 22:32 ` Andreas Politz
2008-09-04 17:24 ` `are-you-fine' function definition (was: ps-print variables interactive setting) Rodolfo Medina
2008-09-05 2:18 ` `are-you-fine' function definition Kevin Rodgers
[not found] ` <mailman.18482.1220581140.18990.help-gnu-emacs@gnu.org>
2008-09-06 16:27 ` Rodolfo Medina
2008-09-06 16:32 ` `y-or-n-p' function definition (was: `are-you-fine' function definition) Rodolfo Medina
2008-09-08 10:14 ` `y-or-n-p' function definition Nikolaj Schumacher
2008-09-04 21:47 ` ps-right-footer interactive setting (was: ps-print variables interactive setting) Rodolfo Medina
2008-09-05 1:19 ` Barry Margolin
2008-09-05 10:21 ` ps-right-footer interactive setting Rodolfo Medina
2008-09-05 19:21 ` Chetan
2008-09-06 16:28 ` Rodolfo Medina
2008-09-07 16:44 ` A `my-ps-print-setting' function (was: ps-print variables interactive setting) Rodolfo Medina
2008-09-07 19:40 ` A `my-ps-print-setting' function Andreas Politz
2008-09-08 1:18 ` Rodolfo Medina [this message]
2008-09-03 19:43 ` How to define a `multiple prompt' function? Evans Winner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87iqt7a10v.fsf_-_@gmail.com \
--to=rodolfo.medina@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).