1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-17 00:18:05 +02:00

allow customizing background color in staging mode

This commit is contained in:
Jesse Duffield
2020-02-23 11:57:12 +11:00
parent 6fc3290a05
commit fabdda0492
5 changed files with 78 additions and 37 deletions

View File

@ -21,6 +21,8 @@ Default path for the config file:
- white - white
optionsTextColor: optionsTextColor:
- blue - blue
selectedLineBgColor:
- blue
commitLength: commitLength:
show: true show: true
mouseEvents: 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 - bold
inactiveBorderColor: inactiveBorderColor:
- black - black
selectedLineBgColor:
- blue
``` ```
## Example Coloring: ## Example Coloring:

View File

@ -120,7 +120,7 @@ func coloredString(colorAttr color.Attribute, str string, selected bool, include
var cl *color.Color var cl *color.Color
attributes := []color.Attribute{colorAttr} attributes := []color.Attribute{colorAttr}
if selected { if selected {
attributes = append(attributes, color.BgBlue) attributes = append(attributes, theme.SelectedLineBgColor)
} }
cl = color.New(attributes...) cl = color.New(attributes...)
var clIncluded *color.Color var clIncluded *color.Color

View File

@ -253,6 +253,8 @@ func GetDefaultConfig() []byte {
- white - white
optionsTextColor: optionsTextColor:
- blue - blue
selectedLineBgColor:
- blue
commitLength: commitLength:
show: true show: true
git: git:

View File

@ -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) v, err := g.SetView(main, leftSideWidth+panelSpacing, 0, mainPanelRight, mainPanelBottom, gocui.LEFT)
if err != nil { if err != nil {
if err.Error() != "unknown view" { if err.Error() != "unknown view" {
@ -541,7 +542,6 @@ func (gui *Gui) layout(g *gocui.Gui) error {
} }
filesView.Highlight = true filesView.Highlight = true
filesView.Title = gui.Tr.SLocalize("FilesTitle") filesView.Title = gui.Tr.SLocalize("FilesTitle")
v.FgColor = textColor
} }
branchesView, err := g.SetViewBeneath("branches", "files", vHeights["branches"]) branchesView, err := g.SetViewBeneath("branches", "files", vHeights["branches"])
@ -586,8 +586,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
return err return err
} }
v.Frame = false v.Frame = false
userConfig := gui.Config.GetUserConfig() v.FgColor = theme.GetGocuiColor(userConfig.GetStringSlice("gui.theme.optionsTextColor"))
v.FgColor = theme.GetColor(userConfig.GetStringSlice("gui.theme.optionsTextColor"))
} }
if gui.getCommitMessageView() == nil { if gui.getCommitMessageView() == nil {

View File

@ -20,12 +20,16 @@ var (
// InactiveBorderColor is the border color of the inactive active frames // InactiveBorderColor is the border color of the inactive active frames
InactiveBorderColor gocui.Attribute InactiveBorderColor gocui.Attribute
// SelectedLineBgColor is the background color for the selected line
SelectedLineBgColor color.Attribute
) )
// UpdateTheme updates all theme variables // UpdateTheme updates all theme variables
func UpdateTheme(userConfig *viper.Viper) { func UpdateTheme(userConfig *viper.Viper) {
ActiveBorderColor = getColor(userConfig.GetStringSlice("gui.theme.activeBorderColor")) ActiveBorderColor = GetGocuiColor(userConfig.GetStringSlice("gui.theme.activeBorderColor"))
InactiveBorderColor = getColor(userConfig.GetStringSlice("gui.theme.inactiveBorderColor")) InactiveBorderColor = GetGocuiColor(userConfig.GetStringSlice("gui.theme.inactiveBorderColor"))
SelectedLineBgColor = GetBgColor(userConfig.GetStringSlice("gui.theme.selectedLineBgColor"))
isLightTheme := userConfig.GetBool("gui.theme.lightTheme") isLightTheme := userConfig.GetBool("gui.theme.lightTheme")
if isLightTheme { if isLightTheme {
@ -39,8 +43,8 @@ func UpdateTheme(userConfig *viper.Viper) {
} }
} }
// getAttribute gets the gocui color attribute from the string // GetAttribute gets the gocui color attribute from the string
func getAttribute(key string) gocui.Attribute { func GetGocuiAttribute(key string) gocui.Attribute {
colorMap := map[string]gocui.Attribute{ colorMap := map[string]gocui.Attribute{
"default": gocui.ColorDefault, "default": gocui.ColorDefault,
"black": gocui.ColorBlack, "black": gocui.ColorBlack,
@ -62,43 +66,75 @@ func getAttribute(key string) gocui.Attribute {
return gocui.ColorWhite return gocui.ColorWhite
} }
// getColor bitwise OR's a list of attributes obtained via the given keys // GetFgAttribute gets the color foreground attribute from the string
func getColor(keys []string) gocui.Attribute { 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,
}
value, present := colorMap[key]
if present {
return value
}
return color.FgWhite
}
// 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 color.FgWhite
}
// GetGocuiColor bitwise OR's a list of attributes obtained via the given keys
func GetGocuiColor(keys []string) gocui.Attribute {
var attribute gocui.Attribute var attribute gocui.Attribute
for _, key := range keys { for _, key := range keys {
attribute |= getAttribute(key) attribute |= GetGocuiAttribute(key)
} }
return attribute return attribute
} }
// 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,
}
value, present := colorMap[key]
if present {
return value
}
return gocui.ColorWhite
}
// GetColor bitwise OR's a list of attributes obtained via the given keys // GetColor bitwise OR's a list of attributes obtained via the given keys
func GetColor(keys []string) gocui.Attribute { func GetBgColor(keys []string) color.Attribute {
var attribute gocui.Attribute var attribute color.Attribute
for _, key := range keys { for _, key := range keys {
attribute |= GetAttribute(key) 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 return attribute
} }