summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authormjarkk <mkopenga@gmail.com>2021-07-16 14:06:01 +0200
committermjarkk <mkopenga@gmail.com>2021-07-16 14:06:01 +0200
commitfc066d2f2e539ea3d501ff2616315f219e72d15e (patch)
tree26c4f8ee0d12adf354150f32fe2dd4905eab552c /pkg
parent53ea7df655a8d4893fa623a65d16c7bffded779b (diff)
parse github emoji config option
Diffstat (limited to 'pkg')
-rw-r--r--pkg/config/user_config.go2
-rw-r--r--pkg/gui/list_context_config.go27
-rw-r--r--pkg/gui/presentation/commits.go25
-rw-r--r--pkg/gui/presentation/reflog_commits.go25
4 files changed, 62 insertions, 17 deletions
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index f87567ac0..4855bf816 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -66,6 +66,7 @@ type GitConfig struct {
OverrideGpg bool `yaml:"overrideGpg"`
DisableForcePushing bool `yaml:"disableForcePushing"`
CommitPrefixes map[string]CommitPrefixConfig `yaml:"commitPrefixes"`
+ ParseEmoji bool `yaml:"parseEmoji"`
}
type PagingConfig struct {
@@ -332,6 +333,7 @@ func GetDefaultConfig() *UserConfig {
AllBranchesLogCmd: "git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium",
DisableForcePushing: false,
CommitPrefixes: map[string]CommitPrefixConfig(nil),
+ ParseEmoji: false,
},
Refresher: RefresherConfig{
RefreshInterval: 10,
diff --git a/pkg/gui/list_context_config.go b/pkg/gui/list_context_config.go
index 02e989f55..6e9563069 100644
--- a/pkg/gui/list_context_config.go
+++ b/pkg/gui/list_context_config.go
@@ -150,6 +150,7 @@ func (gui *Gui) tagsListContext() *ListContext {
}
func (gui *Gui) branchCommitsListContext() *ListContext {
+ parseEmoji := gui.Config.GetUserConfig().Git.ParseEmoji
return &ListContext{
BasicContext: &BasicContext{
ViewName: "commits",
@@ -164,7 +165,13 @@ func (gui *Gui) branchCommitsListContext() *ListContext {
Gui: gui,
ResetMainViewOriginOnFocus: true,
GetDisplayStrings: func() [][]string {
- return presentation.GetCommitListDisplayStrings(gui.State.Commits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref)
+ return presentation.GetCommitListDisplayStrings(
+ gui.State.Commits,
+ gui.State.ScreenMode != SCREEN_NORMAL,
+ gui.cherryPickedCommitShaMap(),
+ gui.State.Modes.Diffing.Ref,
+ parseEmoji,
+ )
},
SelectedItem: func() (ListItem, bool) {
item := gui.getSelectedLocalCommit()
@@ -174,6 +181,7 @@ func (gui *Gui) branchCommitsListContext() *ListContext {
}
func (gui *Gui) reflogCommitsListContext() *ListContext {
+ parseEmoji := gui.Config.GetUserConfig().Git.ParseEmoji
return &ListContext{
BasicContext: &BasicContext{
ViewName: "commits",
@@ -187,7 +195,13 @@ func (gui *Gui) reflogCommitsListContext() *ListContext {
Gui: gui,
ResetMainViewOriginOnFocus: true,
GetDisplayStrings: func() [][]string {
- return presentation.GetReflogCommitListDisplayStrings(gui.State.FilteredReflogCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref)
+ return presentation.GetReflogCommitListDisplayStrings(
+ gui.State.FilteredReflogCommits,
+ gui.State.ScreenMode != SCREEN_NORMAL,
+ gui.cherryPickedCommitShaMap(),
+ gui.State.Modes.Diffing.Ref,
+ parseEmoji,
+ )
},
SelectedItem: func() (ListItem, bool) {
item := gui.getSelectedReflogCommit()
@@ -197,6 +211,7 @@ func (gui *Gui) reflogCommitsListContext() *ListContext {
}
func (gui *Gui) subCommitsListContext() *ListContext {
+ parseEmoji := gui.Config.GetUserConfig().Git.ParseEmoji
return &ListContext{
BasicContext: &BasicContext{
ViewName: "branches",
@@ -210,7 +225,13 @@ func (gui *Gui) subCommitsListContext() *ListContext {
Gui: gui,
ResetMainViewOriginOnFocus: true,
GetDisplayStrings: func() [][]string {
- return presentation.GetCommitListDisplayStrings(gui.State.SubCommits, gui.State.ScreenMode != SCREEN_NORMAL, gui.cherryPickedCommitShaMap(), gui.State.Modes.Diffing.Ref)
+ return presentation.GetCommitListDisplayStrings(
+ gui.State.SubCommits,
+ gui.State.ScreenMode != SCREEN_NORMAL,
+ gui.cherryPickedCommitShaMap(),
+ gui.State.Modes.Diffing.Ref,
+ parseEmoji,
+ )
},
SelectedItem: func() (ListItem, bool) {
item := gui.getSelectedSubCommit()
diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go
index aeecd71a7..a3fcdb834 100644
--- a/pkg/gui/presentation/commits.go
+++ b/pkg/gui/presentation/commits.go
@@ -7,12 +7,13 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/theme"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/kyokomi/emoji/v2"
)
-func GetCommitListDisplayStrings(commits []*models.Commit, fullDescription bool, cherryPickedCommitShaMap map[string]bool, diffName string) [][]string {
+func GetCommitListDisplayStrings(commits []*models.Commit, fullDescription bool, cherryPickedCommitShaMap map[string]bool, diffName string, parseEmoji bool) [][]string {
lines := make([][]string, len(commits))
- var displayFunc func(*models.Commit, map[string]bool, bool) []string
+ var displayFunc func(*models.Commit, map[string]bool, bool, bool) []string
if fullDescription {
displayFunc = getFullDescriptionDisplayStringsForCommit
} else {
@@ -21,13 +22,13 @@ func GetCommitListDisplayStrings(commits []*models.Commit, fullDescription bool,
for i := range commits {
diffed := commits[i].Sha == diffName
- lines[i] = displayFunc(commits[i], cherryPickedCommitShaMap, diffed)
+ lines[i] = displayFunc(commits[i], cherryPickedCommitShaMap, diffed, parseEmoji)
}
return lines
}
-func getFullDescriptionDisplayStringsForCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed bool) []string {
+func getFullDescriptionDisplayStringsForCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed, parseEmoji bool) []string {
red := color.New(color.FgRed)
yellow := color.New(color.FgYellow)
green := color.New(color.FgGreen)
@@ -73,10 +74,15 @@ func getFullDescriptionDisplayStringsForCommit(c *models.Commit, cherryPickedCom
truncatedAuthor := utils.TruncateWithEllipsis(c.Author, 17)
- return []string{shaColor.Sprint(c.ShortSha()), secondColumnString, yellow.Sprint(truncatedAuthor), tagString + defaultColor.Sprint(c.Name)}
+ name := c.Name
+ if parseEmoji {
+ name = emoji.Sprint(name)
+ }
+
+ return []string{shaColor.Sprint(c.ShortSha()), secondColumnString, yellow.Sprint(truncatedAuthor), tagString + defaultColor.Sprint(name)}
}
-func getDisplayStringsForCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed bool) []string {
+func getDisplayStringsForCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed, parseEmoji bool) []string {
red := color.New(color.FgRed)
yellow := color.New(color.FgYellow)
green := color.New(color.FgGreen)
@@ -120,7 +126,12 @@ func getDisplayStringsForCommit(c *models.Commit, cherryPickedCommitShaMap map[s
tagString = utils.ColoredStringDirect(strings.Join(c.Tags, " "), tagColor) + " "
}
- return []string{shaColor.Sprint(c.ShortSha()), actionString + tagString + defaultColor.Sprint(c.Name)}
+ name := c.Name
+ if parseEmoji {
+ name = emoji.Sprint(name)
+ }
+
+ return []string{shaColor.Sprint(c.ShortSha()), actionString + tagString + defaultColor.Sprint(name)}
}
func actionColorMap(str string) color.Attribute {
diff --git a/pkg/gui/presentation/reflog_commits.go b/pkg/gui/presentation/reflog_commits.go
index d435c1387..31a125e32 100644
--- a/pkg/gui/presentation/reflog_commits.go
+++ b/pkg/gui/presentation/reflog_commits.go
@@ -5,12 +5,13 @@ import (
"github.com/jesseduffield/lazygit/pkg/commands/models"
"github.com/jesseduffield/lazygit/pkg/theme"
"github.com/jesseduffield/lazygit/pkg/utils"
+ "github.com/kyokomi/emoji/v2"
)
-func GetReflogCommitListDisplayStrings(commits []*models.Commit, fullDescription bool, cherryPickedCommitShaMap map[string]bool, diffName string) [][]string {
+func GetReflogCommitListDisplayStrings(commits []*models.Commit, fullDescription bool, cherryPickedCommitShaMap map[string]bool, diffName string, parseEmoji bool) [][]string {
lines := make([][]string, len(commits))
- var displayFunc func(*models.Commit, map[string]bool, bool) []string
+ var displayFunc func(*models.Commit, map[string]bool, bool, bool) []string
if fullDescription {
displayFunc = getFullDescriptionDisplayStringsForReflogCommit
} else {
@@ -19,7 +20,7 @@ func GetReflogCommitListDisplayStrings(commits []*models.Commit, fullDescription
for i := range commits {
diffed := commits[i].Sha == diffName
- lines[i] = displayFunc(commits[i], cherryPickedCommitShaMap, diffed)
+ lines[i] = displayFunc(commits[i], cherryPickedCommitShaMap, diffed, parseEmoji)
}
return lines
@@ -36,24 +37,34 @@ func coloredReflogSha(c *models.Commit, cherryPickedCommitShaMap map[string]bool
return shaColor.Sprint(c.ShortSha())
}
-func getFullDescriptionDisplayStringsForReflogCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed bool) []string {
+func getFullDescriptionDisplayStringsForReflogCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed, parseEmoji bool) []string {
colorAttr := theme.DefaultTextColor
if diffed {
colorAttr = theme.DiffTerminalColor
}
+ name := c.Name
+ if parseEmoji {
+ name = emoji.Sprint(name)
+ }
+
return []string{
coloredReflogSha(c, cherryPickedCommitShaMap),
utils.ColoredString(utils.UnixToDate(c.UnixTimestamp), color.FgMagenta),
- utils.ColoredString(c.Name, colorAttr),
+ utils.ColoredString(name, colorAttr),
}
}
-func getDisplayStringsForReflogCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed bool) []string {
+func getDisplayStringsForReflogCommit(c *models.Commit, cherryPickedCommitShaMap map[string]bool, diffed, parseEmoji bool) []string {
defaultColor := color.New(theme.DefaultTextColor)
+ name := c.Name
+ if parseEmoji {
+ name = emoji.Sprint(name)
+ }
+
return []string{
coloredReflogSha(c, cherryPickedCommitShaMap),
- defaultColor.Sprint(c.Name),
+ defaultColor.Sprint(name),
}
}