about summary refs log blame commit diff stats
path: root/doc/aerc-templates.7.scd
blob: a681fb2a51b2cfc276c7c1bc26d520a89217b208 (plain) (tree)

































                                                                             
                                                  


























                                                                            





                                                                       





                                                                              
                                                                         

                               
                                 

           
                                                      


                               
 








                                                                                     
 
                                               
           




                                                                                     

           








                                                                         
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}}

*MIME Type*
	MIME Type is available for quoted reply.

	- OriginalMIMEType: MIME type info of quoted mail part. Usually
	  "text/plain" or "text/html".

*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:

	_wrap_ function can be used to wrap the original text to a number
	of characters per line.
	```
	{{wrap 72 .OriginalText}}
	```

	_quote_ function prepends each line with "> ".
	```
	{{quote .OriginalText}}
	```

	_exec_ function execute external command to process message.
	```
	{{exec `/usr/local/share/aerc/filters/html`}}
	```

	All of the above can be chained together if needed, for example.
	```
	{{exec `/usr/local/share/aerc/filters/html` .OriginalText | wrap 72 | quote}}
	```

	Automatic HTML parsing can be achieved.
	```
	{{if eq .OriginalMIMEType "text/html"}}
	{{exec `/usr/local/share/aerc/filters/html` .OriginalText | wrap 72 | quote}}
	{{else}}
	{{wrap 72 .OriginalText | quote}}
	{{end}}
	```

# 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.
do */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
#!/bin/sh
# Compile mu from scratch.

set -v
set -e  # stop immediately on error

cd ../../tangle
  # auto-generate various lists (ending in '_list' by convention) {
  # list of types
  {
    grep -h "^struct .* {" [0-9]*.cc  |sed 's/\(struct *[^ ]*\).*/\1;/'
    grep -h "^typedef " [0-9]*.cc
  }  > type_list
  # list of function declarations, so I can define them in any order
  grep -h "^[^ #].*) {" [0-9]*.cc  |sed 's/ {.*/;/'  > function_list
  # list of code files to compile
  ls [0-9]*.cc  |grep -v "\.test\.cc$"  |sed 's/.*/#include "&"/'  > file_list
  # list of test files to compile
  ls [0-9]*.test.cc  |sed 's/.*/#include "&"/'  > test_file_list
  # list of tests to run
  grep -h "^[[:space:]]*void test_" [0-9]*.cc  |sed 's/^\s*void \(.*\)() {$/\1,/'  > test_list
  grep -h "^\s*void test_" [0-9]*.cc  |sed 's/^\s*void \(.*\)() {.*/"\1",/'  > test_name_list
  # }
  # Now that we have all the _lists, compile 'tangle'
  g++ -std=c++98 -g -O2 boot.cc -o tangle
  ./tangle test
cd ../archive/2.vm

cd termbox
  gcc -g -O2 -c termbox.c
  gcc -g -O2 -c utf8.c
  ar rcs libtermbox.a *.o
cd ..

../../tangle/tangle [0-9]*.cc > mu.cc
# auto-generate function declarations, so I can define them in any order
# functions start out unindented, have all args on the same line, and end in ') {'
#
#                                      \/ ignore struct/class methods
grep -h "^[^[:space:]#].*) {$" mu.cc  |grep -v ":.*("  |sed 's/ {.*/;/'  > function_list
# auto-generate list of tests to run
grep -h "^\s*void test_" mu.cc  |sed 's/^\s*void \(.*\)() {.*/\1,/'  > test_list
grep -h "^\s*void test_" mu.cc  |sed 's/^\s*void \(.*\)() {.*/"\1",/'  > test_name_list
g++ -std=c++98 -g -O2 mu.cc termbox/libtermbox.a -o mu_bin

cat [0-9]*.mu > core.mu