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

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

Re: Defaulting optional numeric and string arguments


From: Stefan Monnier
Subject: Re: Defaulting optional numeric and string arguments
Date: Thu, 12 Sep 2024 15:17:33 -0400
User-agent: Gnus/5.13 (Gnus v5.13)

> I have an optional numeric argument n passed to a function. 
>
> Am having difficulty setting a default for it to cater for both the 
> interactive and non-interactive cases.
>
> Is the below how to do it ?   
>
>   (setq n (if (or (not n) (not numberp n)) 0 n))

Traditionally the default numeric value for an absent prefix arg is
1 rather than 0.  So if you can arrange to use 1 as default, it'll
integrate better into the overall Emacs experience.

Also you can simply the above to

    (unless (numberp n) (setq n 0))

> I also have an optional string bfrn, to which I am using
>   (setq bfrn  (if (or (not bfrn) (string= bfrn "")) "Context" bfrn))

I'd recommend to ignore the "" case (i.e. change your callers and/or the
interactive spec so they don't accidentally send the empty string
(e.g. use `read-string` rather than `read-from-minibuffer`)) and
just use:

    (unless bfrn (setq bfrn "Context"))


- Stefan




reply via email to

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