diff options
author | Robin Jarry <robin@jarry.cc> | 2022-11-15 22:43:17 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2022-11-16 16:12:07 +0100 |
commit | 3710e459825b78a5adfa7af04128713010e4c9e4 (patch) | |
tree | 5367ff6138c2892ee1bb03aeeac6d8866c464152 /config/viewer.go | |
parent | f96172f5064b7245dfdb766163ceee856e2ee51b (diff) | |
download | aerc-3710e459825b78a5adfa7af04128713010e4c9e4.tar.gz |
config: move [viewer] parsing in separate file
The config.go file is getting too big. Move the aerc.conf [viewer]
section parsing logic into a dedicated viewer.go file.
No functional change.
Signed-off-by: Robin Jarry <robin@jarry.cc>
Acked-by: Moritz Poldrack <moritz@poldrack.dev>
Diffstat (limited to 'config/viewer.go')
-rw-r--r-- | config/viewer.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/config/viewer.go b/config/viewer.go new file mode 100644 index 00000000..fe93f389 --- /dev/null +++ b/config/viewer.go @@ -0,0 +1,54 @@ +package config + +import ( + "strings" + + "git.sr.ht/~rjarry/aerc/logging" + "github.com/go-ini/ini" +) + +type ViewerConfig struct { + Pager string + Alternatives []string + ShowHeaders bool `ini:"show-headers"` + AlwaysShowMime bool `ini:"always-show-mime"` + ParseHttpLinks bool `ini:"parse-http-links"` + HeaderLayout [][]string `ini:"-"` + KeyPassthrough bool `ini:"-"` +} + +func defaultViewerConfig() ViewerConfig { + return ViewerConfig{ + Pager: "less -R", + Alternatives: []string{"text/plain", "text/html"}, + ShowHeaders: false, + HeaderLayout: [][]string{ + {"From", "To"}, + {"Cc", "Bcc"}, + {"Date"}, + {"Subject"}, + }, + ParseHttpLinks: true, + } +} + +func (config *AercConfig) parseViewer(file *ini.File) error { + viewer, err := file.GetSection("viewer") + if err != nil { + goto out + } + if err := viewer.MapTo(&config.Viewer); err != nil { + return err + } + for key, val := range viewer.KeysHash() { + switch key { + case "alternatives": + config.Viewer.Alternatives = strings.Split(val, ",") + case "header-layout": + config.Viewer.HeaderLayout = parseLayout(val) + } + } +out: + logging.Debugf("aerc.conf: [viewer] %#v", config.Viewer) + return nil +} |