org: Template expansion
9.1.3.2 Template expansion
..........................
In the template itself, special ‘%’-escapes(1) allow dynamic insertion
of content. The templates are expanded in the order given here:
%[FILE] Insert the contents of the file given by FILE.
%(SEXP) Evaluate Elisp SEXP and replace with the result.
For convenience, %:keyword (see below) placeholders
within the expression will be expanded prior to this.
The sexp must return a string.
%<...> The result of format-time-string on the ... format specification.
%t Timestamp, date only.
%T Timestamp, with date and time.
%u, %U Like the above, but inactive timestamps.
%i Initial content, the region when capture is called while the
region is active.
The entire text will be indented like ‘%i’ itself.
%a Annotation, normally the link created with ‘org-store-link’.
%A Like ‘%a’, but prompt for the description part.
%l Like %a, but only insert the literal link.
%c Current kill ring head.
%x Content of the X clipboard.
%k Title of the currently clocked task.
%K Link to the currently clocked task.
%n User name (taken from ‘user-full-name’).
%f File visited by current buffer when org-capture was called.
%F Full path of the file or directory visited by current buffer.
%:keyword Specific information for certain link types, see below.
%^g Prompt for tags, with completion on tags in target file.
%^G Prompt for tags, with completion all tags in all agenda files.
%^t Like ‘%t’, but prompt for date. Similarly ‘%^T’, ‘%^u’, ‘%^U’.
You may define a prompt like ‘%^{Birthday}t’.
%^C Interactive selection of which kill or clip to use.
%^L Like ‘%^C’, but insert as link.
%^{PROP}p Prompt the user for a value for property PROP.
%^{PROMPT} prompt the user for a string and replace this sequence with it.
You may specify a default value and a completion table with
%^{prompt|default|completion2|completion3...}.
The arrow keys access a prompt-specific history.
%\n Insert the text entered at the nth %^{PROMPT}, where ‘n’ is
a number, starting from 1.
%? After completing the template, position cursor here.
For specific link types, the following keywords will be defined(2):
Link type | Available keywords
---------------------------------+----------------------------------------------
bbdb | %:name %:company
irc | %:server %:port %:nick
vm, vm-imap, wl, mh, mew, rmail | %:type %:subject %:message-id
| %:from %:fromname %:fromaddress
| %:to %:toname %:toaddress
| %:date (message date header field)
| %:date-timestamp (date as active timestamp)
| %:date-timestamp-inactive (date as inactive timestamp)
| %:fromto (either "to NAME" or "from NAME")(3)
gnus | %:group, for messages also all email fields
w3, w3m | %:url
info | %:file %:node
calendar | %:date
To place the cursor after template expansion use:
%? After completing the template, position cursor here.
---------- Footnotes ----------
(1) If you need one of these sequences literally, escape the ‘%’ with
a backslash.
(2) If you define your own link types (Adding hyperlink
types), any property you store with ‘org-store-link-props’ can be
accessed in capture templates in a similar way.
(3) This will always be the other, not the user. See the variable
‘org-from-is-user-regexp’.