diff options
-rw-r--r-- | docs/Config.md | 4 | ||||
-rw-r--r-- | pkg/commands/patch_parser.go | 2 | ||||
-rw-r--r-- | pkg/config/app_config.go | 2 | ||||
-rw-r--r-- | pkg/gui/gui.go | 5 | ||||
-rw-r--r-- | pkg/theme/theme.go | 94 |
5 files changed, 74 insertions, 33 deletions
diff --git a/docs/Config.md b/docs/Config.md index 7f7ee4e1c..c1ac22d9b 100644 --- a/docs/Config.md +++ b/docs/Config.md @@ -21,6 +21,8 @@ Default path for the config file: - white optionsTextColor: - blue + selectedLineBgColor: + - blue commitLength: show: true mouseEvents: true @@ -193,6 +195,8 @@ If you have issues with a light terminal theme where you can't read / see the te - bold inactiveBorderColor: - black + selectedLineBgColor: + - blue ``` ## Example Coloring: diff --git a/pkg/commands/patch_parser.go b/pkg/commands/patch_parser.go index e88a43f32..eb74e2f5b 100644 --- a/pkg/commands/patch_parser.go +++ b/pkg/commands/patch_parser.go @@ -120,7 +120,7 @@ func coloredString(colorAttr color.Attribute, str string, selected bool, include var cl *color.Color attributes := []color.Attribute{colorAttr} if selected { - attributes = append(attributes, color.BgBlue) + attributes = append(attributes, theme.SelectedLineBgColor) } cl = color.New(attributes...) var clIncluded *color.Color diff --git a/pkg/config/app_config.go b/pkg/config/app_config.go index 43fecb524..8fe366bf5 100644 --- a/pkg/config/app_config.go +++ b/pkg/config/app_config.go @@ -253,6 +253,8 @@ func GetDefaultConfig() []byte { - white optionsTextColor: - blue + selectedLineBgColor: + - blue commitLength: show: true git: diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index 174e124af..929c4ba88 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -500,6 +500,7 @@ func (gui *Gui) layout(g *gocui.Gui) error { } } + userConfig := gui.Config.GetUserConfig() v, err := g.SetView(main, leftSideWidth+panelSpacing, 0, mainPanelRight, mainPanelBottom, gocui.LEFT) if err != nil { if err.Error() != "unknown view" { @@ -541,7 +542,6 @@ func (gui *Gui) layout(g *gocui.Gui) error { } filesView.Highlight = true filesView.Title = gui.Tr.SLocalize("FilesTitle") - v.FgColor = textColor } branchesView, err := g.SetViewBeneath("branches", "files", vHeights["branches"]) @@ -586,8 +586,7 @@ func (gui *Gui) layout(g *gocui.Gui) error { return err } v.Frame = false - userConfig := gui.Config.GetUserConfig() - v.FgColor = theme.GetColor(userConfig.GetStringSlice("gui.theme.optionsTextColor")) + v.FgColor = theme.GetGocuiColor(userConfig.GetStringSlice("gui.theme.optionsTextColor")) } if gui.getCommitMessageView() == nil { diff --git a/pkg/theme/theme.go b/pkg/theme/theme.go index 0b4179cce..c5e49accd 100644 --- a/pkg/theme/theme.go +++ b/pkg/theme/theme.go @@ -20,12 +20,16 @@ var ( // InactiveBorderColor is the border color of the inactive active frames InactiveBorderColor gocui.Attribute + + // SelectedLineBgColor is the background color for the selected line + SelectedLineBgColor color.Attribute ) // UpdateTheme updates all theme variables func UpdateTheme(userConfig *viper.Viper) { - ActiveBorderColor = getColor(userConfig.GetStringSlice("gui.theme.activeBorderColor")) - InactiveBorderColor = getColor(userConfig.GetStringSlice("gui.theme.inactiveBorderColor")) + ActiveBorderColor = GetGocuiColor(userConfig.GetStringSlice("gui.theme.activeBorderColor")) + InactiveBorderColor = GetGocuiColor(userConfig.GetStringSlice("gui.theme.inactiveBorderColor")) + SelectedLineBgColor = GetBgColor(userConfig.GetStringSlice("gui.theme.selectedLineBgColor")) isLightTheme := userConfig.GetBool("gui.theme.lightTheme") if isLightTheme { @@ -39,8 +43,8 @@ func UpdateTheme(userConfig *viper.Viper) { } } -// getAttribute gets the gocui color attribute from the string -func getAttribute(key string) gocui.Attribute { +// GetAttribute gets the gocui color attribute from the string +func GetGocuiAttribute(key string) gocui.Attribute { colorMap := map[string]gocui.Attribute{ "default": gocui.ColorDefault, "black": gocui.ColorBlack, @@ -62,43 +66,75 @@ func getAttribute(key string) gocui.Attribute { return gocui.ColorWhite } -// getColor bitwise OR's a list of attributes obtained via the given keys -func getColor(keys []string) gocui.Attribute { - var attribute gocui.Attribute - for _, key := range keys { - attribute |= getAttribute(key) +// GetFgAttribute gets the color foreground attribute from the string +func GetFgAttribute(key string) color.Attribute { + colorMap := map[string]color.Attribute{ + "default": color.FgWhite, + "black": color.FgBlack, + "red": color.FgRed, + "green": color.FgGreen, + "yellow": color.FgYellow, + "blue": color.FgBlue, + "magenta": color.FgMagenta, + "cyan": color.FgCyan, + "white": color.FgWhite, + "bold": color.Bold, + "reverse": color.ReverseVideo, + "underline": color.Underline, } - return attribute + value, present := colorMap[key] + if present { + return value + } + return color.FgWhite } -// GetAttribute gets the gocui color attribute from the string -func GetAttribute(key string) gocui.Attribute { - colorMap := map[string]gocui.Attribute{ - "default": gocui.ColorDefault, - "black": gocui.ColorBlack, - "red": gocui.ColorRed, - "green": gocui.ColorGreen, - "yellow": gocui.ColorYellow, - "blue": gocui.ColorBlue, - "magenta": gocui.ColorMagenta, - "cyan": gocui.ColorCyan, - "white": gocui.ColorWhite, - "bold": gocui.AttrBold, - "reverse": gocui.AttrReverse, - "underline": gocui.AttrUnderline, +// GetBgAttribute gets the color background attribute from the string +func GetBgAttribute(key string) color.Attribute { + colorMap := map[string]color.Attribute{ + "default": color.BgWhite, + "black": color.BgBlack, + "red": color.BgRed, + "green": color.BgGreen, + "yellow": color.BgYellow, + "blue": color.BgBlue, + "magenta": color.BgMagenta, + "cyan": color.BgCyan, + "white": color.BgWhite, + "bold": color.Bold, + "reverse": color.ReverseVideo, + "underline": color.Underline, } value, present := colorMap[key] if present { return value } - return gocui.ColorWhite + return color.FgWhite } -// GetColor bitwise OR's a list of attributes obtained via the given keys -func GetColor(keys []string) gocui.Attribute { +// GetGocuiColor bitwise OR's a list of attributes obtained via the given keys +func GetGocuiColor(keys []string) gocui.Attribute { var attribute gocui.Attribute for _, key := range keys { - attribute |= GetAttribute(key) + attribute |= GetGocuiAttribute(key) + } + return attribute +} + +// GetColor bitwise OR's a list of attributes obtained via the given keys +func GetBgColor(keys []string) color.Attribute { + var attribute color.Attribute + for _, key := range keys { + attribute |= GetBgAttribute(key) + } + return attribute +} + +// GetColor bitwise OR's a list of attributes obtained via the given keys +func GetFgColor(keys []string) color.Attribute { + var attribute color.Attribute + for _, key := range keys { + attribute |= GetFgAttribute(key) } return attribute } |