From e810ae12d7b86dfe51aed6f5b88e90c1fe1814ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20W=C3=B6lfel?= Date: Thu, 7 Apr 2022 12:20:31 +0200 Subject: [PATCH] stylesets: allow specifying color by number MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make it possible to specify the color in the style sets by number in addition to the color name. This allows using colors defined by the terminal. Signed-off-by: Tobias Wölfel Acked-by: Robin Jarry --- config/style.go | 16 ++++++++++++++-- doc/aerc-stylesets.7.scd | 4 ++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/config/style.go b/config/style.go index c3e8503..fc6f7db 100644 --- a/config/style.go +++ b/config/style.go @@ -6,6 +6,7 @@ import ( "os" "path" "regexp" + "strconv" "strings" "github.com/gdamore/tcell/v2" @@ -139,12 +140,23 @@ func boolSwitch(val string, cur_val bool) (bool, error) { } } +func extractColor(val string) tcell.Color { + // Check if the string can be interpreted as a number, indicating a + // reference to the color number. Otherwise retrieve the number based + // on the name. + if i, err := strconv.ParseUint(val, 10, 8); err == nil { + return tcell.PaletteColor(int(i)) + } else { + return tcell.GetColor(val) + } +} + func (s *Style) Set(attr, val string) error { switch attr { case "fg": - s.Fg = tcell.GetColor(val) + s.Fg = extractColor(val) case "bg": - s.Bg = tcell.GetColor(val) + s.Bg = extractColor(val) case "bold": if state, err := boolSwitch(val, s.Bold); err != nil { return err diff --git a/doc/aerc-stylesets.7.scd b/doc/aerc-stylesets.7.scd index 97d3194..598a770 100644 --- a/doc/aerc-stylesets.7.scd +++ b/doc/aerc-stylesets.7.scd @@ -205,6 +205,10 @@ The values can be one of the following. ** Hexcode for a color can be used. The format must be "\#XXXXXX" + ** + Color based on the palette index. Valid numbers are between 0 + and 255. + # SEE ALSO *aerc*(1) *aerc-config*(5)