On Thu, Aug 17, 2017 at 3:25 PM, Matt Price wrote: > I'd love to be able generate dates dynamically using the {{{n}}} org > macro, or some other mechanism. I don't immediately see how that would be > possible but maybe someone can guide me. I'd want to do something > equivalent to this pseudo-elisp: > > (let ((base-date 2017-09-05)) > (+ base-date (* 7 {{{n}}})) > > I haven't looked into how date objects are parsed in org-mode, though, so > I have no idea how hard it would be to actually implement something like > this. > I made some progress on this (but not much). I defined a simple macro that adds times together and creates a timestamp that org can read -- in fact, this one adds some text as well: #+MACRO: w (eval (format-time-string "Week {{{n(week)}}} (<%Y-%m-%d %a>)" (time-add (encode-time 0 0 0 17 9 2017) (days-to-time (* 7 1)))) ) This does everything that I want *except* dynamically adding time to the previous macro call. I tried defining a dynamic version: #+MACRO: w (eval (format-time-string "Week {{{n(week)}}} (<%Y-%m-%d %a>)" (time-add (encode-time 0 0 0 17 9 2017) (days-to-time (* 7 $1)))) )) And then calling it with {{{w({{{n}}})}}} But unsurprisingly and appropriately, that didn't work. I also took a look at the patch Nicolas used to implement the {{{n}}} macro (I've reattached it here for convenience only!). It defines `org-macro--counter-initialize` and calls it from inside `org-macro-templates-initialize`. I guess I could copy that strategy but then I'd be maintaining my own copy of org-macro-templates-initialize, which seems like a terrible idea. So, I'm not sure how best to proceed. For my specific use-case, something like this would be a huge timesaver when multiplied over semesters/years. But I also wonder whether maybe other people would enjoy being able to do date arithmetic inside org files (and outside of tables -- I know from Sacha's 2015 blog post that this is possible inside a table -- http://sachachua.com/blog/2015/06/using-your-own-emacs-lisp-functions-in-org-mode-table-calculations-easier-dosage-totals/). If other people would also use such code, I could try to hack something together for submission. Generalizable functions will be hard for me to write because I am sometimes a bit dense. I would love to hear suggestions from the group... > Thank you everyone! > ^^ this still applies! Matt