From 1a89d2095ddeacd8363dd0a724b3d610092315d8 Mon Sep 17 00:00:00 2001 From: franekjel Date: Tue, 14 Jul 2020 23:58:03 +0200 Subject: [PATCH] Support for multiple modifiers in colorschemes (#1772) * Support for multiple modifiers (eg. "bold italic") * Test for multiple modifiers (bold + italic + underline) --- internal/config/colorscheme.go | 8 ++------ internal/config/colorscheme_test.go | 12 ++++++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/internal/config/colorscheme.go b/internal/config/colorscheme.go index c8ba4e3e..8109d07a 100644 --- a/internal/config/colorscheme.go +++ b/internal/config/colorscheme.go @@ -117,16 +117,12 @@ func ParseColorscheme(text string) (map[string]tcell.Style, error) { // StringToStyle returns a style from a string // The strings must be in the format "extra foregroundcolor,backgroundcolor" -// The 'extra' can be bold, reverse, or underline +// The 'extra' can be bold, reverse, italic or underline func StringToStyle(str string) tcell.Style { var fg, bg string spaceSplit := strings.Split(str, " ") var split []string - if len(spaceSplit) > 1 { - split = strings.Split(spaceSplit[1], ",") - } else { - split = strings.Split(str, ",") - } + split = strings.Split(spaceSplit[len(spaceSplit)-1], ",") if len(split) > 1 { fg, bg = split[0], split[1] } else { diff --git a/internal/config/colorscheme_test.go b/internal/config/colorscheme_test.go index 83080df1..106fd1be 100644 --- a/internal/config/colorscheme_test.go +++ b/internal/config/colorscheme_test.go @@ -26,6 +26,18 @@ func TestAttributeStringToStyle(t *testing.T) { assert.NotEqual(t, 0, attr&tcell.AttrBold) } +func TestMultiAttributesStringToStyle(t *testing.T) { + s := StringToStyle("bold italic underline cyan,brightcyan") + + fg, bg, attr := s.Decompose() + + assert.Equal(t, tcell.ColorTeal, fg) + assert.Equal(t, tcell.ColorAqua, bg) + assert.NotEqual(t, 0, attr&tcell.AttrBold) + assert.NotEqual(t, 0, attr&tcell.AttrItalic) + assert.NotEqual(t, 0, attr&tcell.AttrUnderline) +} + func TestColor256StringToStyle(t *testing.T) { s := StringToStyle("128,60")