summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-02-23 11:57:12 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-02-23 18:37:19 +1100
commitfabdda0492c36bca691176485add9e013680f4dd (patch)
tree2b0123a014ed80d23e040e618c8503105aeb98f9
parent6fc3290a05a76f3e68fcbf5500c29a0c6f13da02 (diff)
allow customizing background color in staging mode
-rw-r--r--docs/Config.md4
-rw-r--r--pkg/commands/patch_parser.go2
-rw-r--r--pkg/config/app_config.go2
-rw-r--r--pkg/gui/gui.go5
-rw-r--r--pkg/theme/theme.go94
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
}