From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pip Cet Subject: Re: nested macro expansion? Date: Wed, 19 Aug 2015 14:43:41 +0000 Message-ID: References: <87io8bo6uv.fsf@ericabrahamsen.net> <87egizo6mc.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54530) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZS4ac-00085M-O6 for emacs-orgmode@gnu.org; Wed, 19 Aug 2015 10:43:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZS4ab-0004EM-PH for emacs-orgmode@gnu.org; Wed, 19 Aug 2015 10:43:42 -0400 Received: from mail-ig0-x232.google.com ([2607:f8b0:4001:c05::232]:34058) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZS4ab-0004EG-Ku for emacs-orgmode@gnu.org; Wed, 19 Aug 2015 10:43:41 -0400 Received: by igui7 with SMTP id i7so109443123igu.1 for ; Wed, 19 Aug 2015 07:43:41 -0700 (PDT) In-Reply-To: <87egizo6mc.fsf@ericabrahamsen.net> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Abrahamsen Cc: emacs-orgmode@gnu.org 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. On 8/19/15, Eric Abrahamsen wrote: > Eric Abrahamsen 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 > > >