From: Rupert Swarbrick <rswarbrick@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Detect if Emacs is running in -nw mode
Date: Sun, 30 Mar 2008 10:10:46 -0600 [thread overview]
Message-ID: <3P2dnatDgO4bJnLanZ2dnUVZ8vOdnZ2d@giganews.com> (raw)
In-Reply-To: mailman.9641.1206888365.18990.help-gnu-emacs@gnu.org
On Sun, 30 Mar 2008 16:45:57 +0200, Lennart Borgman (gmail) wrote:
> The documentation should be exact enough to show that. If not then it is
> a documentation bug.
>
> In this case it says "body forms", not "body form". A form is something
> inside a pair of (). So it is ok with several functions here.
>
> If it was not you could have used progn for example.
I'm not sure and if I'm wrong, Christian, please correct me, but:
I think the problem is that Christian doesn't know what "body" means. In
lisp, a function is defined using something called a lambda list, so I
might define a function foo like:
(defun foo (arg1 arg2 arg3) (do-some-stuff))
In this case arg1, arg2 and arg3 are three different arguments, so we'd
call foo like this
(foo 1 2 3)
Great. However, if you want to write a useful unless function/macro, you
want to allow any number of elements in the list - a bit like varargs do
in C, if you know about that.
Anyhow, you write something like
(defun bar (arg1 &rest others) (do-some-stuff))
or (pretty much equivalently)
(defun bar (arg1 &body others) (do-some-stuff))
For bar, arg1 is just a normal argument. But others is a bit magic:
(bar 1 2 3 4 5 6)
sets arg1 to 1 and others to (2 3 4 5 6) (a list). Now, unless is
actually a macro and the bit it does next depends on a whole new can of
worms based on macro expansion and ,@ but I'm not going to go into that.
The main point however is that the documentation says:
> --
> |unless is a Lisp macro in `subr'.
> |(unless COND &rest BODY)
> |
> |If COND yields nil, do BODY, else return nil.
> --
So the &rest bit means that body can contain as much as you like. FWIW,
unless executes BODY in a progn, so for example
(unless (function-returning-nil) 1 2 3)
evaluates to 3. Not that that matters in this situation.
Phew. That was more than I intended to write! Hope it makes things a
little clearer.
Rupert
next prev parent reply other threads:[~2008-03-30 16:10 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-03-29 22:37 Detect if Emacs is running in -nw mode Christian Herenz
2008-03-29 22:43 ` Tom Rauchenwald
[not found] ` <mailman.9603.1206831074.18990.help-gnu-emacs@gnu.org>
2008-03-29 23:52 ` Christian Herenz
2008-03-30 0:35 ` Roland Winkler
2008-03-31 2:18 ` Barry Margolin
2008-03-30 0:44 ` Lennart Borgman (gmail)
2008-03-30 1:13 ` Drew Adams
[not found] ` <mailman.9613.1206837866.18990.help-gnu-emacs@gnu.org>
2008-03-30 1:10 ` Will Parsons
2008-03-30 1:22 ` Christian Herenz
2008-03-30 3:34 ` BVK
2008-03-30 11:23 ` Rupert Swarbrick
2008-03-30 12:17 ` Christian Herenz
2008-03-30 12:43 ` Lennart Borgman (gmail)
[not found] ` <mailman.9635.1206881018.18990.help-gnu-emacs@gnu.org>
2008-03-30 14:24 ` Christian Herenz
2008-03-30 14:45 ` Lennart Borgman (gmail)
2008-03-30 15:13 ` Peter Dyballa
[not found] ` <mailman.9643.1206890035.18990.help-gnu-emacs@gnu.org>
2008-03-30 15:31 ` Christian Herenz
[not found] ` <mailman.9641.1206888365.18990.help-gnu-emacs@gnu.org>
2008-03-30 16:10 ` Rupert Swarbrick [this message]
2008-03-30 17:56 ` Christian Herenz
2008-03-31 7:32 ` Nuno J. Silva
2008-03-31 8:11 ` Tim X
2008-03-31 8:34 ` Christian Herenz
2008-03-31 2:22 ` Barry Margolin
2008-03-31 8:38 ` Christian Herenz
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=3P2dnatDgO4bJnLanZ2dnUVZ8vOdnZ2d@giganews.com \
--to=rswarbrick@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).