From b5299f6fbc738c9e680826ed84d71370ec042c2a Mon Sep 17 00:00:00 2001 From: Johan Walles Date: Sat, 7 Oct 2023 22:28:52 +0200 Subject: [PATCH] Attempt to set status bar color from theme Fails due to: https://github.com/alecthomas/chroma/issues/867 --- m/pager.go | 23 ++++++++++++----------- m/pager_test.go | 2 ++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/m/pager.go b/m/pager.go index a7181ef..4f10747 100644 --- a/m/pager.go +++ b/m/pager.go @@ -482,9 +482,20 @@ func (p *Pager) initStyle() { p.numberStyle = parsedTokens[0].Style } - statusBarStyleAnsi := toAnsiSgr(chroma.None, *p.ChromaStyle, *p.ChromaFormatter) + "X" + statusBarStyleAnsi := toAnsiSgr(chroma.Background, *p.ChromaStyle, *p.ChromaFormatter) + "X" if statusBarStyleAnsi == "X" { p.statusBarStyle = twin.StyleDefault + + switch p.StatusBarStyleOption { + case STATUSBAR_STYLE_INVERSE: + p.statusBarStyle = p.statusBarStyle.WithAttr(twin.AttrReverse) + case STATUSBAR_STYLE_PLAIN: + // This case intentionally left blank + case STATUSBAR_STYLE_BOLD: + p.statusBarStyle = p.statusBarStyle.WithAttr(twin.AttrBold) + default: + panic(fmt.Sprint("Unknown status bar style option: ", p.StatusBarStyleOption)) + } } else { // Turn statusBarStyleAnsi into a twin.Style statusBarStyleAsLine := NewLine(statusBarStyleAnsi) @@ -494,16 +505,6 @@ func (p *Pager) initStyle() { } p.statusBarStyle = parsedTokens[0].Style } - switch p.StatusBarStyleOption { - case STATUSBAR_STYLE_INVERSE: - p.statusBarStyle = p.statusBarStyle.WithAttr(twin.AttrReverse) - case STATUSBAR_STYLE_PLAIN: - // This case intentionally left blank - case STATUSBAR_STYLE_BOLD: - p.statusBarStyle = p.statusBarStyle.WithAttr(twin.AttrBold) - default: - panic(fmt.Sprint("Unknown status bar style option: ", p.StatusBarStyleOption)) - } } // StartPaging brings up the pager on screen diff --git a/m/pager_test.go b/m/pager_test.go index 2cee6cf..c70812c 100644 --- a/m/pager_test.go +++ b/m/pager_test.go @@ -590,6 +590,8 @@ func TestInitStyle(t *testing.T) { } testMe.initStyle() assert.Equal(t, testMe.linePrefix, "\x1b[38;2;235;219;178m") + assert.Equal(t, testMe.statusBarStyle, + twin.StyleDefault.Foreground(twin.NewColorHex(0xebdbb2)).Background(twin.NewColorHex(0x282828))) } func benchmarkSearch(b *testing.B, highlighted bool) {