Org Mode: Reusing the date from file-datetree-prompt
Posted: - Modified: | emacs, orgHow can you get Org Mode to create and schedule entries within a year-month-day outline structure? You can define an org-capture-templates
with the keyword file+datetree+prompt
. This lets you specify a date for your entry, and Org will create the entry in a hierarchy organized by year, month, and day.
If you’d like to display the entry in your agenda, you’ll also need an active timestamp of the form <yyyy-mm-dd>
. Fortunately, you can reuse the date you specified at the initial prompt to create the datetree entry. Looking at org-capture.el
will show you that the org-capture
function refers to the org-read-date-final-answer
, which is set to whatever string you entered at the date prompt. For example, if you entered 18
, then org-read-date-final-answer
will be set to 18
. You can use org-read-date
to convert this back to a yyyy-mm-dd-style date.
How do you use this in org-capture-templates
? You can use the %(...)
syntax for calling an Emacs Lisp expression, like so:
(setq org-capture-templates '( ;; other entries go here ("s" "Journal entry with date, scheduled" entry (file+datetree+prompt "~/personal/journal.org") "* %^{Title}\n<%(org-read-date nil nil org-read-date-final-answer)>\n%i\n%?\n")))
Here’s sample output from that capture template:
* 2015 ** 2015-12 December *** 2015-12-31 Thursday **** End of the year party! <2015-12-31>
Thanks to Sean Miller for the nudge to think about this!