diff options
author | Robin Jarry <robin@jarry.cc> | 2023-09-11 17:52:47 +0200 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-09-19 16:49:59 +0200 |
commit | 320aa2257f5b5f4ef516eccc3ab2bd49b79d0fdb (patch) | |
tree | 75a12e13e29f2c793ff2768408c596897defe914 /config | |
parent | d4e49c79a69c399702c3c781920c8eae5b9e22ba (diff) | |
download | aerc-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.go | 89 |
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 |