diff options
author | mjarkk <mkopenga@gmail.com> | 2021-07-16 14:06:01 +0200 |
---|---|---|
committer | mjarkk <mkopenga@gmail.com> | 2021-07-16 14:06:01 +0200 |
commit | fc066d2f2e539ea3d501ff2616315f219e72d15e (patch) | |
tree | 26c4f8ee0d12adf354150f32fe2dd4905eab552c /pkg | |
parent | 53ea7df655a8d4893fa623a65d16c7bffded779b (diff) |
parse github emoji config option
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/config/user_config.go | 2 | ||||
-rw-r--r-- | pkg/gui/list_context_config.go | 27 | ||||
-rw-r--r-- | pkg/gui/presentation/commits.go | 25 | ||||
-rw-r--r-- | pkg/gui/presentation/reflog_commits.go | 25 |
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), } } |