From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Tim X Newsgroups: gmane.emacs.help Subject: Re: How to see that a variable holds t Date: Mon, 04 Jan 2010 08:46:07 +1100 Organization: Rapt Technologies Message-ID: <87my0uuajk.fsf@lion.rapttech.com.au> References: <87fx6ncdvc.fsf@Traian.DecebalComp> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1262558451 22624 80.91.229.12 (3 Jan 2010 22:40:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 3 Jan 2010 22:40:51 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Sun Jan 03 23:40:44 2010 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NRZ7s-0006s5-5d for geh-help-gnu-emacs@m.gmane.org; Sun, 03 Jan 2010 23:40:44 +0100 Original-Received: from localhost ([127.0.0.1]:54252 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NRZ7s-0006hq-FD for geh-help-gnu-emacs@m.gmane.org; Sun, 03 Jan 2010 17:40:44 -0500 Original-Path: news.stanford.edu!usenet.stanford.edu!newsfeed.news2me.com!news.astraweb.com!border2.newsrouter.astraweb.com!not-for-mail Original-Newsgroups: gnu.emacs.help User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1.90 (gnu/linux) Cancel-Lock: sha1:yX8uFMvQrTEY2F1svu07gPzFRPQ= Original-Lines: 49 Original-NNTP-Posting-Host: 96780f84.news.astraweb.com Original-X-Trace: DXC=fWGAFf List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:71037 Archived-At: Cecil Westerhof 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