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

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

Re: Toggle appointment notification


From: tomas
Subject: Re: Toggle appointment notification
Date: Wed, 2 Dec 2020 14:52:35 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Wed, Dec 02, 2020 at 02:15:20PM +0100, Christopher Dimech wrote:
> > Sent: Wednesday, December 02, 2020 at 1:37 PM
> > From: tomas@tuxteam.de
> > To: "Christopher Dimech" <dimech@gmx.com>
> > Cc: help-gnu-emacs@gnu.org
> > Subject: Re: Toggle appointment notification
> >
> > On Wed, Dec 02, 2020 at 01:05:07PM +0100, Christopher Dimech wrote:
> > > > Sent: Wednesday, December 02, 2020 at 9:41 AM
> > > > From: tomas@tuxteam.de
> > > > To: help-gnu-emacs@gnu.org
> > > > Subject: Re: Toggle appointment notification
> > > >
> > > > On Tue, Dec 01, 2020 at 10:44:09PM +0100, Michael Heerdegen wrote:
> > > > > <tomas@tuxteam.de> writes:
> > > > >
> > > > > >   (message "my heading: %s" (prin1-to-string any))
> > > > >
> > > > > Or equivalent
> > > > >
> > > > >     (message "my heading: %S" any)
> > > > >
> > > > > , no?
> > > >
> > > > Indeed. Recommended reading "4.7 Formatting Strings" in the Emacs Lisp
> > > > manual (in the Intertubes here [1]).
> > >
> > > How does one deal with conditionals (1, nil) in format?
> >
> > Care to pose a more complete example?
> >
> > As far as I understood you, you'd put a Lisp expression in the 2nd...nth
> > arguments of (message fmt ...), but I might be misunderstanding you
> > completely.
> 
> As I read it, the format it is mainly for numerical and strings.
> 
>   (format "%s" arbitrary-string)
> 
> Although it mentions printed representation of the object
> 
> I am sure users would be more interested is printing results
> of expressions.

But the result of an expression /is/ a Lisp object. That's
the whole point of Lisp!

So you can do:

  (format "look here: %S" (list (+ 3 4) (list 'a 'b 'c) (current-time-string) 
(current-fill-column)))

  => "look here: (7 (a b c) \"Wed Dec  2 14:42:30 2020\" 70)"

> But I suppose one should use "print", "prin1", and "princ"
> for that.

Use whatever is convenient, yes.

> However, a valid format specification for conditional could be.
> 
> (message "Result: %s" (> 5 3))

Yes, that works. Have you actually tried it? What is the result?
Does that match your expectations? If yes, why? If not, why not?

> %s mentions objects, but the sections seems to imply attention
> to strings in "4.7 Formatting Strings".
> 
> I think this is quite valid:
> 
>   (format "%s" arbitrary-string)
> 
> But perhaps not completely true.

It is incomplete: the format specifier %s takes a generic
Lisp object, as does the %S. The difference is that %S puts
strings in quotes, and %s doesn't. With %s, the above example
yields

  => look here: (7 (a b c) Wed Dec  2 14:46:19 2020 70)

Roughly speaking: use %S if your target audience is a
computer program (or a human doing debugging, which
amounts to much the same), and %s if your target audience
is a human :)

Now I'm again paraphrasing (badly) the manual for you.
I'm doing something wrong I guess.

Cheers
 - t

Attachment: signature.asc
Description: Digital signature


reply via email to

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