aboutsummaryrefslogtreecommitdiffstats
path: root/config/viewer.go
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2022-11-15 22:43:17 +0100
committerRobin Jarry <robin@jarry.cc>2022-11-16 16:12:07 +0100
commit3710e459825b78a5adfa7af04128713010e4c9e4 (patch)
tree5367ff6138c2892ee1bb03aeeac6d8866c464152 /config/viewer.go
parentf96172f5064b7245dfdb766163ceee856e2ee51b (diff)
downloadaerc-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.go54
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
+}