emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Eric Abrahamsen <eric@ericabrahamsen.net>
To: Pip Cet <pipcet@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: nested macro expansion?
Date: Wed, 19 Aug 2015 23:03:36 +0800	[thread overview]
Message-ID: <871tez1fsn.fsf@ericabrahamsen.net> (raw)
In-Reply-To: <CAOqdjBcvUisnc6T-4PqrJNQ7D8wp=nNBqXxCoUGwUJ6L99d1HA@mail.gmail.com> (Pip Cet's message of "Wed, 19 Aug 2015 14:43:41 +0000")


On 08/19/15 14:43 PM, Pip Cet wrote:
> Hi Eric,
> I know this doesn't answer your actual question about nested macro
> expansion, but writing some elisp might help you get the TIMESTAMP
> property, at least: both
>
> #+MACRO: bubba (eval (org-entry-get nil "TIMESTAMP"))
>
> and
>
> #+MACRO: bubba (eval (org-macro-expand "{{{property(TIMESTAMP)}}}"
> org-macro-templates))
>
> appear to produce the current timestamp, and both can be fed to
> another function, but not `format-time-string': the result of
> (org-entry-get...) is a string of the form "<2014-08-19>", which would
> need to be passed to `org-parse-time-string' first.

Hey, that does the trick, thank you! I guess I should have thought of
that.

Sure, the example as I gave it would have errored had it done anything,
but the main thing was just getting the right values in the right place.
Off to write the function...

Thanks again,
Eric

> On 8/19/15, Eric Abrahamsen <eric@ericabrahamsen.net> wrote:
>> Eric Abrahamsen <eric@ericabrahamsen.net> writes:
>>
>>> What I'm trying to do is have a macro that takes the computed TIMESTAMP
>>> property for an entry, and then runs it through a custom function that
>>> breaks out the start/end times, and produces a nicely formatted string
>>> from that.
>>>
>>> I don't see how to write a macro that feeds the value of a computed
>>> special property to a function.
>>>
>>> Right now my testing version looks like this:
>>>
>>> #+MACRO: bubba (eval (format-time-string "%Y" "$1"))
>>>
>>> and I'm calling it like this:
>>>
>>> {{{bubba({{{property(TIMESTAMP)}}})}}}
>>>
>>> That doesn't expand the interior "{{{property(TIMESTAMP)}}}" clause.
>>> What `format-time-string' ends up seeing is "{{{property(TIMESTAMP",
>>> without the final braces etc.
>>>
>>> Is there any way to get that value expanded first, and then passed to
>>> `format-time-string' (or, eventually, my custom function)?
>>
>> After googling for a while, I also thought this might work:
>>
>> #+MACRO: bubba (eval (format-time-string "%Y" property{{{TIMESTAMP}}}))
>>
>> {{{bubba}}}
>>
>> But the nested definition isn't expanded, either with or without quotes.
>>
>> E
>>
>>
>>

  reply	other threads:[~2015-08-19 15:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-19 11:28 nested macro expansion? Eric Abrahamsen
2015-08-19 11:33 ` Eric Abrahamsen
2015-08-19 14:43   ` Pip Cet
2015-08-19 15:03     ` Eric Abrahamsen [this message]
2015-08-19 20:18   ` Nicolas Goaziou
2015-08-20  1:24     ` Eric Abrahamsen

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

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871tez1fsn.fsf@ericabrahamsen.net \
    --to=eric@ericabrahamsen.net \
    --cc=emacs-orgmode@gnu.org \
    --cc=pipcet@gmail.com \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).