aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorRobin Jarry <robin@jarry.cc>2023-09-11 17:52:47 +0200
committerRobin Jarry <robin@jarry.cc>2023-09-19 16:49:59 +0200
commit320aa2257f5b5f4ef516eccc3ab2bd49b79d0fdb (patch)
tree75a12e13e29f2c793ff2768408c596897defe914 /config
parentd4e49c79a69c399702c3c781920c8eae5b9e22ba (diff)
downloadaerc-320aa2257f5b5f4ef516eccc3ab2bd49b79d0fdb.tar.gz
config: add default values for empty stylesets
When adding new style objects it is impossible to give them a default color nor attributes without modifying each existing user styleset. Also, if the user has an incomplete styleset, some parts of aerc will have no style at all. These quirks are not nice from a user experience point of view. Before parsing the user styleset, initialize aerc style with basic defaults. Reuse the exact same content than the actual "default" styleset provided in /usr/share/aerc/stylesets. Comment all of the default styleset to make it obvious that these are default values. This has some implications: * To reset these defaults, the user styleset must now start with these two lines: *.default = true *.normal = true If these two lines are not present, the default style will be kept and only changed if the user styleset explicitly sets them. * Empty stylesets no longer produce weird results. Signed-off-by: Robin Jarry <robin@jarry.cc> Tested-by: Inwit <inwit@sindominio.net>
Diffstat (limited to 'config')
-rw-r--r--config/style.go89
1 files changed, 72 insertions, 17 deletions
diff --git a/config/style.go b/config/style.go
index 50c53de3..f50126bd 100644
--- a/config/style.go
+++ b/config/style.go
@@ -280,23 +280,80 @@ func NewStyleSet() StyleSet {
user: make(map[string]*Style),
}
for _, so := range StyleNames {
- ss.objects[so] = new(StyleConf)
- ss.selected[so] = new(StyleConf)
- }
- return ss
-}
-
-func (ss StyleSet) reset() {
- for _, so := range StyleNames {
- ss.objects[so].base.Reset()
- for _, d := range ss.objects[so].dynamic {
- d.Reset()
- }
- ss.selected[so].base.Reset()
- for _, d := range ss.selected[so].dynamic {
- d.Reset()
+ conf := new(StyleConf)
+
+ switch so {
+ case STYLE_ERROR:
+ // *error.bold=true
+ conf.base.Bold = true
+ // error.fg=red
+ conf.base.Fg = tcell.ColorRed
+ case STYLE_WARNING:
+ // warning.fg=yellow
+ conf.base.Fg = tcell.ColorYellow
+ case STYLE_SUCCESS:
+ // success.fg=green
+ conf.base.Fg = tcell.ColorGreen
+ case STYLE_TITLE:
+ // title.reverse=true
+ conf.base.Reverse = true
+ case STYLE_HEADER:
+ // header.bold=true
+ conf.base.Bold = true
+ case STYLE_STATUSLINE_DEFAULT:
+ // statusline_default.reverse=true
+ conf.base.Reverse = true
+ case STYLE_STATUSLINE_ERROR:
+ // *error.bold=true
+ conf.base.Fg = tcell.ColorRed
+ // statusline_error.fg=red
+ conf.base.Bold = true
+ // statusline_error.reverse=true
+ conf.base.Reverse = true
+ case STYLE_STATUSLINE_WARNING:
+ // statusline_warning.fg=yellow
+ conf.base.Fg = tcell.ColorYellow
+ // statusline_warning.reverse=true
+ conf.base.Reverse = true
+ case STYLE_STATUSLINE_SUCCESS:
+ conf.base.Fg = tcell.ColorGreen
+ conf.base.Reverse = true
+ case STYLE_MSGLIST_UNREAD:
+ // msglist_unread.bold=true
+ conf.base.Bold = true
+ case STYLE_MSGLIST_DELETED:
+ // msglist_deleted.fg=gray
+ conf.base.Fg = tcell.ColorGray
+ case STYLE_MSGLIST_RESULT:
+ // msglist_result.fg=green
+ conf.base.Fg = tcell.ColorGreen
+ case STYLE_MSGLIST_PILL:
+ // msglist_pill.reverse=true
+ conf.base.Reverse = true
+ case STYLE_COMPLETION_PILL:
+ // completion_pill.reverse=true
+ conf.base.Reverse = true
+ case STYLE_TAB:
+ // tab.reverse=true
+ conf.base.Reverse = true
+ case STYLE_BORDER:
+ // border.reverse = true
+ conf.base.Reverse = true
+ case STYLE_SELECTOR_FOCUSED:
+ // selector_focused.reverse=true
+ conf.base.Reverse = true
+ case STYLE_SELECTOR_CHOOSER:
+ // selector_chooser.bold=true
+ conf.base.Bold = true
}
+
+ ss.objects[so] = conf
+ selected := *conf
+ // *.selected.reverse=toggle
+ selected.base.Reverse = !conf.base.Reverse
+ ss.selected[so] = &selected
}
+ return ss
}
func (c *StyleConf) getStyle(h *mail.Header) *Style {
@@ -367,8 +424,6 @@ func findStyleSet(stylesetName string, stylesetsDir []string) (string, error) {
}
func (ss *StyleSet) ParseStyleSet(file *ini.File) error {
- ss.reset()
-
defaultSection, err := file.GetSection(ini.DefaultSection)
if err != nil {
return err