diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2023-05-14 18:28:46 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2023-05-16 23:24:05 +0900 |
commit | 5a391024059e055f9e21b997ff77e1b4ba5302c5 (patch) | |
tree | 0e9195c80598cc1b34e45c13882f79495859a352 /src/tui | |
parent | 94999101e358385f3ca67a6ec9512f549196b802 (diff) |
Allow customizing the color of preview scrollbar via 'preview-scrollbar'
Diffstat (limited to 'src/tui')
-rw-r--r-- | src/tui/tui.go | 294 |
1 files changed, 154 insertions, 140 deletions
diff --git a/src/tui/tui.go b/src/tui/tui.go index 73ed0c97..5fd27d0f 100644 --- a/src/tui/tui.go +++ b/src/tui/tui.go @@ -253,29 +253,31 @@ func (p ColorPair) MergeNonDefault(other ColorPair) ColorPair { } type ColorTheme struct { - Colored bool - Input ColorAttr - Disabled ColorAttr - Fg ColorAttr - Bg ColorAttr - PreviewFg ColorAttr - PreviewBg ColorAttr - DarkBg ColorAttr - Gutter ColorAttr - Prompt ColorAttr - Match ColorAttr - Current ColorAttr - CurrentMatch ColorAttr - Spinner ColorAttr - Info ColorAttr - Cursor ColorAttr - Selected ColorAttr - Header ColorAttr - Separator ColorAttr - Scrollbar ColorAttr - Border ColorAttr - BorderLabel ColorAttr - PreviewLabel ColorAttr + Colored bool + Input ColorAttr + Disabled ColorAttr + Fg ColorAttr + Bg ColorAttr + PreviewFg ColorAttr + PreviewBg ColorAttr + DarkBg ColorAttr + Gutter ColorAttr + Prompt ColorAttr + Match ColorAttr + Current ColorAttr + CurrentMatch ColorAttr + Spinner ColorAttr + Info ColorAttr + Cursor ColorAttr + Selected ColorAttr + Header ColorAttr + Separator ColorAttr + Scrollbar ColorAttr + Border ColorAttr + PreviewBorder ColorAttr + PreviewScrollbar ColorAttr + BorderLabel ColorAttr + PreviewLabel ColorAttr } type Event struct { @@ -508,57 +510,61 @@ var ( func EmptyTheme() *ColorTheme { return &ColorTheme{ - Colored: true, - Input: ColorAttr{colUndefined, AttrUndefined}, - Fg: ColorAttr{colUndefined, AttrUndefined}, - Bg: ColorAttr{colUndefined, AttrUndefined}, - DarkBg: ColorAttr{colUndefined, AttrUndefined}, - Prompt: ColorAttr{colUndefined, AttrUndefined}, - Match: ColorAttr{colUndefined, AttrUndefined}, - Current: ColorAttr{colUndefined, AttrUndefined}, - CurrentMatch: ColorAttr{colUndefined, AttrUndefined}, - Spinner: ColorAttr{colUndefined, AttrUndefined}, - Info: ColorAttr{colUndefined, AttrUndefined}, - Cursor: ColorAttr{colUndefined, AttrUndefined}, - Selected: ColorAttr{colUndefined, AttrUndefined}, - Header: ColorAttr{colUndefined, AttrUndefined}, - Border: ColorAttr{colUndefined, AttrUndefined}, - BorderLabel: ColorAttr{colUndefined, AttrUndefined}, - Disabled: ColorAttr{colUndefined, AttrUndefined}, - PreviewFg: ColorAttr{colUndefined, AttrUndefined}, - PreviewBg: ColorAttr{colUndefined, AttrUndefined}, - Gutter: ColorAttr{colUndefined, AttrUndefined}, - PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, - Separator: ColorAttr{colUndefined, AttrUndefined}, - Scrollbar: ColorAttr{colUndefined, AttrUndefined}, + Colored: true, + Input: ColorAttr{colUndefined, AttrUndefined}, + Fg: ColorAttr{colUndefined, AttrUndefined}, + Bg: ColorAttr{colUndefined, AttrUndefined}, + DarkBg: ColorAttr{colUndefined, AttrUndefined}, + Prompt: ColorAttr{colUndefined, AttrUndefined}, + Match: ColorAttr{colUndefined, AttrUndefined}, + Current: ColorAttr{colUndefined, AttrUndefined}, + CurrentMatch: ColorAttr{colUndefined, AttrUndefined}, + Spinner: ColorAttr{colUndefined, AttrUndefined}, + Info: ColorAttr{colUndefined, AttrUndefined}, + Cursor: ColorAttr{colUndefined, AttrUndefined}, + Selected: ColorAttr{colUndefined, AttrUndefined}, + Header: ColorAttr{colUndefined, AttrUndefined}, + Border: ColorAttr{colUndefined, AttrUndefined}, + BorderLabel: ColorAttr{colUndefined, AttrUndefined}, + Disabled: ColorAttr{colUndefined, AttrUndefined}, + PreviewFg: ColorAttr{colUndefined, AttrUndefined}, + PreviewBg: ColorAttr{colUndefined, AttrUndefined}, + Gutter: ColorAttr{colUndefined, AttrUndefined}, + PreviewBorder: ColorAttr{colUndefined, AttrUndefined}, + PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined}, + PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, + Separator: ColorAttr{colUndefined, AttrUndefined}, + Scrollbar: ColorAttr{colUndefined, AttrUndefined}, } } func NoColorTheme() *ColorTheme { return &ColorTheme{ - Colored: false, - Input: ColorAttr{colDefault, AttrUndefined}, - Fg: ColorAttr{colDefault, AttrUndefined}, - Bg: ColorAttr{colDefault, AttrUndefined}, - DarkBg: ColorAttr{colDefault, AttrUndefined}, - Prompt: ColorAttr{colDefault, AttrUndefined}, - Match: ColorAttr{colDefault, Underline}, - Current: ColorAttr{colDefault, Reverse}, - CurrentMatch: ColorAttr{colDefault, Reverse | Underline}, - Spinner: ColorAttr{colDefault, AttrUndefined}, - Info: ColorAttr{colDefault, AttrUndefined}, - Cursor: ColorAttr{colDefault, AttrUndefined}, - Selected: ColorAttr{colDefault, AttrUndefined}, - Header: ColorAttr{colDefault, AttrUndefined}, - Border: ColorAttr{colDefault, AttrUndefined}, - BorderLabel: ColorAttr{colDefault, AttrUndefined}, - Disabled: ColorAttr{colDefault, AttrUndefined}, - PreviewFg: ColorAttr{colDefault, AttrUndefined}, - PreviewBg: ColorAttr{colDefault, AttrUndefined}, - Gutter: ColorAttr{colDefault, AttrUndefined}, - PreviewLabel: ColorAttr{colDefault, AttrUndefined}, - Separator: ColorAttr{colDefault, AttrUndefined}, - Scrollbar: ColorAttr{colDefault, AttrUndefined}, + Colored: false, + Input: ColorAttr{colDefault, AttrUndefined}, + Fg: ColorAttr{colDefault, AttrUndefined}, + Bg: ColorAttr{colDefault, AttrUndefined}, + DarkBg: ColorAttr{colDefault, AttrUndefined}, + Prompt: ColorAttr{colDefault, AttrUndefined}, + Match: ColorAttr{colDefault, Underline}, + Current: ColorAttr{colDefault, Reverse}, + CurrentMatch: ColorAttr{colDefault, Reverse | Underline}, + Spinner: ColorAttr{colDefault, AttrUndefined}, + Info: ColorAttr{colDefault, AttrUndefined}, + Cursor: ColorAttr{colDefault, AttrUndefined}, + Selected: ColorAttr{colDefault, AttrUndefined}, + Header: ColorAttr{colDefault, AttrUndefined}, + Border: ColorAttr{colDefault, AttrUndefined}, + BorderLabel: ColorAttr{colDefault, AttrUndefined}, + Disabled: ColorAttr{colDefault, AttrUndefined}, + PreviewFg: ColorAttr{colDefault, AttrUndefined}, + PreviewBg: ColorAttr{colDefault, AttrUndefined}, + Gutter: ColorAttr{colDefault, AttrUndefined}, + PreviewBorder: ColorAttr{colDefault, AttrUndefined}, + PreviewScrollbar: ColorAttr{colDefault, AttrUndefined}, + PreviewLabel: ColorAttr{colDefault, AttrUndefined}, + Separator: ColorAttr{colDefault, AttrUndefined}, + Scrollbar: ColorAttr{colDefault, AttrUndefined}, } } @@ -569,79 +575,85 @@ func errorExit(message string) { func init() { Default16 = &ColorTheme{ - Colored: true, - Input: ColorAttr{colDefault, AttrUndefined}, - Fg: ColorAttr{colDefault, AttrUndefined}, - Bg: ColorAttr{colDefault, AttrUndefined}, - DarkBg: ColorAttr{colBlack, AttrUndefined}, - Prompt: ColorAttr{colBlue, AttrUndefined}, - Match: ColorAttr{colGreen, AttrUndefined}, - Current: ColorAttr{colYellow, AttrUndefined}, - CurrentMatch: ColorAttr{colGreen, AttrUndefined}, - Spinner: ColorAttr{colGreen, AttrUndefined}, - Info: ColorAttr{colWhite, AttrUndefined}, - Cursor: ColorAttr{colRed, AttrUndefined}, - Selected: ColorAttr{colMagenta, AttrUndefined}, - Header: ColorAttr{colCyan, AttrUndefined}, - Border: ColorAttr{colBlack, AttrUndefined}, - BorderLabel: ColorAttr{colWhite, AttrUndefined}, - Disabled: ColorAttr{colUndefined, AttrUndefined}, - PreviewFg: ColorAttr{colUndefined, AttrUndefined}, - PreviewBg: ColorAttr{colUndefined, AttrUndefined}, - Gutter: ColorAttr{colUndefined, AttrUndefined}, - PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, - Separator: ColorAttr{colUndefined, AttrUndefined}, - Scrollbar: ColorAttr{colUndefined, AttrUndefined}, + Colored: true, + Input: ColorAttr{colDefault, AttrUndefined}, + Fg: ColorAttr{colDefault, AttrUndefined}, + Bg: ColorAttr{colDefault, AttrUndefined}, + DarkBg: ColorAttr{colBlack, AttrUndefined}, + Prompt: ColorAttr{colBlue, AttrUndefined}, + Match: ColorAttr{colGreen, AttrUndefined}, + Current: ColorAttr{colYellow, AttrUndefined}, + CurrentMatch: ColorAttr{colGreen, AttrUndefined}, + Spinner: ColorAttr{colGreen, AttrUndefined}, + Info: ColorAttr{colWhite, AttrUndefined}, + Cursor: ColorAttr{colRed, AttrUndefined}, + Selected: ColorAttr{colMagenta, AttrUndefined}, + Header: ColorAttr{colCyan, AttrUndefined}, + Border: ColorAttr{colBlack, AttrUndefined}, + BorderLabel: ColorAttr{colWhite, AttrUndefined}, + Disabled: ColorAttr{colUndefined, AttrUndefined}, + PreviewFg: ColorAttr{colUndefined, AttrUndefined}, + PreviewBg: ColorAttr{colUndefined, AttrUndefined}, + Gutter: ColorAttr{colUndefined, AttrUndefined}, + PreviewBorder: ColorAttr{colUndefined, AttrUndefined}, + PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined}, + PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, + Separator: ColorAttr{colUndefined, AttrUndefined}, + Scrollbar: ColorAttr{colUndefined, AttrUndefined}, } Dark256 = &ColorTheme{ - Colored: true, - Input: ColorAttr{colDefault, AttrUndefined}, - Fg: ColorAttr{colDefault, AttrUndefined}, - Bg: ColorAttr{colDefault, AttrUndefined}, - DarkBg: ColorAttr{236, AttrUndefined}, - Prompt: ColorAttr{110, AttrUndefined}, - Match: ColorAttr{108, AttrUndefined}, - Current: ColorAttr{254, AttrUndefined}, - CurrentMatch: ColorAttr{151, AttrUndefined}, - Spinner: ColorAttr{148, AttrUndefined}, - Info: ColorAttr{144, AttrUndefined}, - Cursor: ColorAttr{161, AttrUndefined}, - Selected: ColorAttr{168, AttrUndefined}, - Header: ColorAttr{109, AttrUndefined}, - Border: ColorAttr{59, AttrUndefined}, - BorderLabel: ColorAttr{145, AttrUndefined}, - Disabled: ColorAttr{colUndefined, AttrUndefined}, - PreviewFg: ColorAttr{colUndefined, AttrUndefined}, - PreviewBg: ColorAttr{colUndefined, AttrUndefined}, - Gutter: ColorAttr{colUndefined, AttrUndefined}, - PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, - Separator: ColorAttr{colUndefined, AttrUndefined}, - Scrollbar: ColorAttr{colUndefined, AttrUndefined}, + Colored: true, + Input: ColorAttr{colDefault, AttrUndefined}, + Fg: ColorAttr{colDefault, AttrUndefined}, + Bg: ColorAttr{colDefault, AttrUndefined}, + DarkBg: ColorAttr{236, AttrUndefined}, + Prompt: ColorAttr{110, AttrUndefined}, + Match: ColorAttr{108, AttrUndefined}, + Current: ColorAttr{254, AttrUndefined}, + CurrentMatch: ColorAttr{151, AttrUndefined}, + Spinner: ColorAttr{148, AttrUndefined}, + Info: ColorAttr{144, AttrUndefined}, + Cursor: ColorAttr{161, AttrUndefined}, + Selected: ColorAttr{168, AttrUndefined}, + Header: ColorAttr{109, AttrUndefined}, + Border: ColorAttr{59, AttrUndefined}, + BorderLabel: ColorAttr{145, AttrUndefined}, + Disabled: ColorAttr{colUndefined, AttrUndefined}, + PreviewFg: ColorAttr{colUndefined, AttrUndefined}, + PreviewBg: ColorAttr{colUndefined, AttrUndefined}, + Gutter: ColorAttr{colUndefined, AttrUndefined}, + PreviewBorder: ColorAttr{colUndefined, AttrUndefined}, + PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined}, + PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, + Separator: ColorAttr{colUndefined, AttrUndefined}, + Scrollbar: ColorAttr{colUndefined, AttrUndefined}, } Light256 = &ColorTheme{ - Colored: true, - Input: ColorAttr{colDefault, AttrUndefined}, - Fg: ColorAttr{colDefault, AttrUndefined}, - Bg: ColorAttr{colDefault, AttrUndefined}, - DarkBg: ColorAttr{251, AttrUndefined}, - Prompt: ColorAttr{25, AttrUndefined}, - Match: ColorAttr{66, AttrUndefined}, - Current: ColorAttr{237, AttrUndefined}, - CurrentMatch: ColorAttr{23, AttrUndefined}, - Spinner: ColorAttr{65, AttrUndefined}, - Info: ColorAttr{101, AttrUndefined}, - Cursor: ColorAttr{161, AttrUndefined}, - Selected: ColorAttr{168, AttrUndefined}, - Header: ColorAttr{31, AttrUndefined}, - Border: ColorAttr{145, AttrUndefined}, - BorderLabel: ColorAttr{59, AttrUndefined}, - Disabled: ColorAttr{colUndefined, AttrUndefined}, - PreviewFg: ColorAttr{colUndefined, AttrUndefined}, - PreviewBg: ColorAttr{colUndefined, AttrUndefined}, - Gutter: ColorAttr{colUndefined, AttrUndefined}, - PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, - Separator: ColorAttr{colUndefined, AttrUndefined}, - Scrollbar: ColorAttr{colUndefined, AttrUndefined}, + Colored: true, + Input: ColorAttr{colDefault, AttrUndefined}, + Fg: ColorAttr{colDefault, AttrUndefined}, + Bg: ColorAttr{colDefault, AttrUndefined}, + DarkBg: ColorAttr{251, AttrUndefined}, + Prompt: ColorAttr{25, AttrUndefined}, + Match: ColorAttr{66, AttrUndefined}, + Current: ColorAttr{237, AttrUndefined}, + CurrentMatch: ColorAttr{23, AttrUndefined}, + Spinner: ColorAttr{65, AttrUndefined}, + Info: ColorAttr{101, AttrUndefined}, + Cursor: ColorAttr{161, AttrUndefined}, + Selected: ColorAttr{168, AttrUndefined}, + Header: ColorAttr{31, AttrUndefined}, + Border: ColorAttr{145, AttrUndefined}, + BorderLabel: ColorAttr{59, AttrUndefined}, + Disabled: ColorAttr{colUndefined, AttrUndefined}, + PreviewFg: ColorAttr{colUndefined, AttrUndefined}, + PreviewBg: ColorAttr{colUndefined, AttrUndefined}, + Gutter: ColorAttr{colUndefined, AttrUndefined}, + PreviewBorder: ColorAttr{colUndefined, AttrUndefined}, + PreviewScrollbar: ColorAttr{colUndefined, AttrUndefined}, + PreviewLabel: ColorAttr{colUndefined, AttrUndefined}, + Separator: ColorAttr{colUndefined, AttrUndefined}, + Scrollbar: ColorAttr{colUndefined, AttrUndefined}, } } @@ -682,8 +694,10 @@ func initTheme(theme *ColorTheme, baseTheme *ColorTheme, forceBlack bool) { theme.PreviewFg = o(theme.Fg, theme.PreviewFg) theme.PreviewBg = o(theme.Bg, theme.PreviewBg) theme.PreviewLabel = o(theme.BorderLabel, theme.PreviewLabel) + theme.PreviewBorder = o(theme.Border, theme.PreviewBorder) theme.Separator = o(theme.Border, theme.Separator) theme.Scrollbar = o(theme.Border, theme.Scrollbar) + theme.PreviewScrollbar = o(theme.PreviewBorder, theme.PreviewScrollbar) initPalette(theme) } @@ -721,6 +735,6 @@ func initPalette(theme *ColorTheme) { ColBorderLabel = pair(theme.BorderLabel, theme.Bg) ColPreviewLabel = pair(theme.PreviewLabel, theme.PreviewBg) ColPreview = pair(theme.PreviewFg, theme.PreviewBg) - ColPreviewBorder = pair(theme.Border, theme.PreviewBg) - ColPreviewScrollbar = pair(theme.Scrollbar, theme.PreviewBg) + ColPreviewBorder = pair(theme.PreviewBorder, theme.PreviewBg) + ColPreviewScrollbar = pair(theme.PreviewScrollbar, theme.PreviewBg) } |