diff options
author | Srivathsan Murali <sri@vathsan.com> | 2019-11-03 13:51:14 +0100 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2019-11-10 10:15:49 -0500 |
commit | 3ba69edab5f0c787424dac9649e43a7743da13ca (patch) | |
tree | bccbdd4e1844cc89f011839f0d6557012a14d1d0 /config | |
parent | ad68a9e4e471eb708893ad16601ab14a4672a2da (diff) | |
download | aerc-3ba69edab5f0c787424dac9649e43a7743da13ca.tar.gz |
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.
Diffstat (limited to 'config')
-rw-r--r-- | config/aerc.conf.in | 22 | ||||
-rw-r--r-- | config/config.go | 44 |
2 files changed, 56 insertions, 10 deletions
diff --git a/config/aerc.conf.in b/config/aerc.conf.in index ec89ff7..16e3da1 100644 --- a/config/aerc.conf.in +++ b/config/aerc.conf.in @@ -108,7 +108,7 @@ editor= # # Default header fields to display when composing a message. To display -# multiple headers in the same row, separate them with a pipe, e.g. "To|From". +# multiple headers in the same row, separate them with a pipe, e.g. "To|From". # # Default: To|From,Subject header-layout=To|From,Subject @@ -139,3 +139,23 @@ text/*=awk -f @SHAREDIR@/filters/plaintext # # Executed when a new email arrives in the selected folder new-email= + +[templates] +# Templates are used to populate email bodies automatically. +# + +# The directories where the templates are stored. It takes a colon-separated +# list of directories. +# +# default: @SHAREDIR@/templates/ +template-dirs=@SHAREDIR@/templates/ + +# The template to be used for quoted replies. +# +# default: quoted_reply +quoted-reply=quoted_reply + +# The template to be used for forward as body. +# +# default: forward_as_body +forwards=forward_as_body diff --git a/config/config.go b/config/config.go index 133a7f4..f46af09 100644 --- a/config/config.go +++ b/config/config.go @@ -16,6 +16,8 @@ import ( "github.com/gdamore/tcell" "github.com/go-ini/ini" "github.com/kyoh86/xdg" + + "git.sr.ht/~sircmpwn/aerc/lib/templates" ) type GeneralConfig struct { @@ -98,16 +100,23 @@ type TriggersConfig struct { ExecuteCommand func(command []string) error } +type TemplateConfig struct { + TemplateDirs []string + QuotedReply string `ini:"quoted-reply"` + Forwards string `ini:"forwards"` +} + type AercConfig struct { - Bindings BindingConfig - Compose ComposeConfig - Ini *ini.File `ini:"-"` - Accounts []AccountConfig `ini:"-"` - Filters []FilterConfig `ini:"-"` - Viewer ViewerConfig `ini:"-"` - Triggers TriggersConfig `ini:"-"` - Ui UIConfig - General GeneralConfig + Bindings BindingConfig + Compose ComposeConfig + Ini *ini.File `ini:"-"` + Accounts []AccountConfig `ini:"-"` + Filters []FilterConfig `ini:"-"` + Viewer ViewerConfig `ini:"-"` + Triggers TriggersConfig `ini:"-"` + Ui UIConfig + General GeneralConfig + Templates TemplateConfig } // Input: TimestampFormat @@ -305,6 +314,23 @@ func (config *AercConfig) LoadConfig(file *ini.File) error { return err } } + if templatesSec, err := file.GetSection("templates"); err == nil { + if err := templatesSec.MapTo(&config.Templates); err != nil { + return err + } + templateDirs := templatesSec.Key("template-dirs").String() + config.Templates.TemplateDirs = strings.Split(templateDirs, ":") + for key, val := range templatesSec.KeysHash() { + if key == "template-dirs" { + continue + } + _, err := templates.ParseTemplateFromFile( + val, config.Templates.TemplateDirs, templates.TestTemplateData()) + if err != nil { + return err + } + } + } return nil } |