help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to see that a variable holds t


From: Tim X
Subject: Re: How to see that a variable holds t
Date: Mon, 04 Jan 2010 08:46:07 +1100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.90 (gnu/linux)

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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]