Add Templates with Parsing

+ Changes NewComposer to return error.
+ Add lib to handle templates using "text/template".
+ Add -T option to following commands
    - compose.
    - reply
    - forward
+ Quoted replies using templates.
+ Forwards as body using templates
+ Default templates are installed similar to filters.
+ Templates Config in aerc.conf.
    - Required templates are parsed while loading config.
+ Add aerc-templates.7 manual for using template data.
This commit is contained in:
Srivathsan Murali 2019-11-03 13:51:14 +01:00 committed by Drew DeVault
parent ad68a9e4e4
commit 3ba69edab5
14 changed files with 510 additions and 143 deletions

View file

@ -240,6 +240,31 @@ They are configured in the *[triggers]* section of aerc.conf.
Format specifiers from *index-format* are expanded with respect to the new
message.
## Templates
Templates are used to populate the body of an email. The compose, reply
and forward commands can be called with the -T flag with the name of the
template name.
aerc ships with some default templates installed in the share directory (usually
_/usr/share/aerc/templates_).
*template-dirs*
The directory where the templates are stored. The config takes a
colon-separated list of dirs.
Default: "/usr/share/aerc/templates"
*quoted-reply*
The template to be used for quoted replies.
Default: "quoted_reply"
*forwards*
The template to be used for forward as body.
Default: "forward_as_body"
# ACCOUNTS.CONF
This file is used for configuring each mail account used for aerc. Each section

89
doc/aerc-templates.7.scd Normal file
View file

@ -0,0 +1,89 @@
aerc-templates(7)
# NAME
aerc-templates - template file specification for *aerc*(1)
# SYNOPSIS
aerc uses the go "text/template" package for the template parsing
which supports basic go lang operations.
# MESSAGE DATA
The following data can be used in templates. Though they are not all
available always.
*Addresses*
An array of mail.Address. That can be used to add sender or recipient
names to the template.
- From: List of senders.
- To: List of To recipients. Not always Available.
- Cc: List of Cc recipients. Not always Available.
- Bcc: List of Cc recipients. Not always Available.
- OriginalFrom: List of senders of the original message.
Available for quoted reply and forward.
Example:
Get the name of the first sender.
```
{{(index .From 0).Name}}
```
Get the email address of the first sender
```
{{(index .From 0).Address}}
```
*Date and Time*
The date and time information is always available and can be easily
formated.
- Date: Date and Time information when the compose window is opened.
- OriginalDate: Date and Time when the original message of received.
Available for quoted reply and forward.
The _dateFormat_ function can be used to format the date and time.
Example:
Format the date to go's time package format options.
```
{{dateFormat .Date "Mon Jan 2 15:04:05 -0700 MST 2006"}}
```
*Subject*
The subject of the email is available for quoted reply and forward.
Example:
{{.Subject}}
*Original Message*
When using quoted reply or forward, the original message is available.
It can be used using two functions that are available to templates.
Example:
_wrapText_ function can be used to wrap the original text to a number
of characters per line.
```
{{wrapText .OriginalText 72}}
```
_quote_ function prepends each line with "> " and wraps the text to
72 characters pre line.
```
{{quote .OriginalText}}
```
# SEE ALSO
*aerc*(1) *aerc-config*(5)
# AUTHORS
Maintained by Drew DeVault <sir@cmpwn.com>, who is assisted by other open
source contributors. For more information about aerc development, see
https://git.sr.ht/~sircmpwn/aerc.