From: Tim X <timx@nospam.dev.null>
To: help-gnu-emacs@gnu.org
Subject: Re: How to see that a variable holds t
Date: Mon, 04 Jan 2010 08:46:07 +1100 [thread overview]
Message-ID: <87my0uuajk.fsf@lion.rapttech.com.au> (raw)
In-Reply-To: 87fx6ncdvc.fsf@Traian.DecebalComp
Cecil Westerhof <Cecil@decebal.nl> writes:
> At the moment I have the following function:
> (defun switch-gnus-idle-daemon-do-log ()
> (interactive)
> (setq gnus-idle-daemon-do-log
> (case gnus-idle-daemon-do-log
> (10 t)
> (otherwise 10)))
> (message "gnus-idle-daemon-do-log: %s" gnus-idle-daemon-do-log))
>
> I know that it looks like overkill a case for switching to two values,
> but I expect that in the future there will be more values.
>
> What I really would like is;
> (defun switch-gnus-idle-daemon-do-log ()
> (interactive)
> (setq gnus-idle-daemon-do-log
> (case gnus-idle-daemon-do-log
> (t 10)
> (otherwise t)))
> (message "gnus-idle-daemon-do-log: %s" gnus-idle-daemon-do-log))
>
> Because I would like the default to be t and not 10. (For when the value
> is not one of the defined values.) But when I do this, it is always set
> to 10, because the case does not make a difference between t and 10. How
> do I solve this?
You don't get a difference between t and 10 because all values except
nil are true. Therefore, your 'default' needs to be the last one i.e.
(otherwise t). As long as your other values come before that value, it
will match on those values. If you don't know what all the other
possible values will be, you need something more general. For example,
you could use cond as in
(cond ((< gnus-idle-daemon-do-log 10)
(setq gnus-idle-daemon-do-log 10))
((= gnus-idle-daemon-do-log 10)
(setq gnus-idle-daemon-do-log t))
(t
(setq gnus-idle-daemon-do-log t)))
the main thing to remember is that in boolean tests nil (and the empty
list) are the only 'false' values - anything else is true.
Tim
--
tcross (at) rapttech dot com dot au
next prev parent reply other threads:[~2010-01-03 21:46 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-03 17:11 How to see that a variable holds t Cecil Westerhof
2010-01-03 19:25 ` Andreas Politz
2010-01-03 20:32 ` Lennart Borgman
2010-01-03 21:46 ` Tim X [this message]
[not found] ` <87wrzysjty.fsf@hubble.informatimago.com>
2010-01-04 9:29 ` Cecil Westerhof
2010-01-04 16:44 ` Pascal J. Bourguignon
2010-01-04 17:11 ` Cecil Westerhof
2010-01-06 13:29 ` Cecil Westerhof
2010-01-06 18:12 ` Stefan Monnier
2010-01-06 18:30 ` Cecil Westerhof
2010-01-06 20:09 ` Pascal J. Bourguignon
2010-01-06 18:51 ` Pascal J. Bourguignon
2010-01-06 19:13 ` Cecil Westerhof
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87my0uuajk.fsf@lion.rapttech.com.au \
--to=timx@nospam.dev.null \
--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.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.