From f6ec7babf55c4a43bc8048e8a84970a8de8250b9 Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Tue, 2 Nov 2021 20:05:23 +1100 Subject: add some config --- pkg/commands/loading_commits.go | 7 ++++++- pkg/config/user_config.go | 13 ++++++++++++- pkg/gui/list_context_config.go | 19 +++++++++++++++++++ pkg/gui/presentation/commits.go | 16 ++++++++++++---- 4 files changed, 49 insertions(+), 6 deletions(-) (limited to 'pkg') diff --git a/pkg/commands/loading_commits.go b/pkg/commands/loading_commits.go index 22f6db6d2..a9553c7c0 100644 --- a/pkg/commands/loading_commits.go +++ b/pkg/commands/loading_commits.go @@ -404,10 +404,15 @@ func (c *CommitListBuilder) getLogCmd(opts GetCommitsOptions) *exec.Cmd { filterFlag = fmt.Sprintf(" --follow -- %s", c.OSCommand.Quote(opts.FilterPath)) } + config := c.GitCommand.Config.GetUserConfig().Git.Log + + orderFlag := "--" + config.Order + return c.OSCommand.ExecutableFromString( fmt.Sprintf( - "git log --topo-order %s --oneline %s %s --abbrev=%d %s", + "git log %s %s --oneline %s %s --abbrev=%d %s", c.OSCommand.Quote(opts.RefName), + orderFlag, prettyFormat, limitFlag, 20, diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go index 485746c0f..4ded99304 100644 --- a/pkg/config/user_config.go +++ b/pkg/config/user_config.go @@ -69,7 +69,9 @@ type GitConfig struct { OverrideGpg bool `yaml:"overrideGpg"` DisableForcePushing bool `yaml:"disableForcePushing"` CommitPrefixes map[string]CommitPrefixConfig `yaml:"commitPrefixes"` - ParseEmoji bool `yaml:"parseEmoji"` + // this shoudl really be under 'gui', not 'git' + ParseEmoji bool `yaml:"parseEmoji"` + Log LogConfig `yaml:"log"` } type PagingConfig struct { @@ -83,6 +85,11 @@ type MergingConfig struct { Args string `yaml:"args"` } +type LogConfig struct { + Order string `yaml:"order"` // one of date-order, reverse, author-date-order, topo-order + ShowGraph string `yaml:"showGraph"` // one of always, never, when-maximised +} + type CommitPrefixConfig struct { Pattern string `yaml:"pattern"` Replace string `yaml:"replace"` @@ -338,6 +345,10 @@ func GetDefaultConfig() *UserConfig { ManualCommit: false, Args: "", }, + Log: LogConfig{ + Order: "topo-order", + ShowGraph: "when-maximised", + }, SkipHookPrefix: "WIP", AutoFetch: true, BranchLogCmd: "git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --", diff --git a/pkg/gui/list_context_config.go b/pkg/gui/list_context_config.go index e9e585b37..3e19eaf75 100644 --- a/pkg/gui/list_context_config.go +++ b/pkg/gui/list_context_config.go @@ -1,6 +1,8 @@ package gui import ( + "log" + "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/gui/presentation" "github.com/jesseduffield/lazygit/pkg/gui/style" @@ -173,6 +175,7 @@ func (gui *Gui) branchCommitsListContext() IListContext { selectedCommitSha, startIdx, length, + gui.shouldShowGraph(), ) }, SelectedItem: func() (ListItem, bool) { @@ -183,6 +186,21 @@ func (gui *Gui) branchCommitsListContext() IListContext { } } +func (gui *Gui) shouldShowGraph() bool { + value := gui.Config.GetUserConfig().Git.Log.ShowGraph + switch value { + case "always": + return true + case "never": + return false + case "when-maximised": + return gui.State.ScreenMode != SCREEN_NORMAL + } + + log.Fatalf("Unknown value for git.log.showGraph: %s. Expected one of: 'always', 'never', 'when-maximised'", value) + return false +} + func (gui *Gui) reflogCommitsListContext() IListContext { parseEmoji := gui.Config.GetUserConfig().Git.ParseEmoji return &ListContext{ @@ -242,6 +260,7 @@ func (gui *Gui) subCommitsListContext() IListContext { selectedCommitSha, 0, len(gui.State.SubCommits), + gui.shouldShowGraph(), ) }, SelectedItem: func() (ListItem, bool) { diff --git a/pkg/gui/presentation/commits.go b/pkg/gui/presentation/commits.go index 2a24437c9..c4a02df29 100644 --- a/pkg/gui/presentation/commits.go +++ b/pkg/gui/presentation/commits.go @@ -30,6 +30,7 @@ func GetCommitListDisplayStrings( selectedCommitSha string, startIdx int, length int, + showGraph bool, ) [][]string { mutex.Lock() defer mutex.Unlock() @@ -61,13 +62,20 @@ func GetCommitListDisplayStrings( end = len(commits) - 1 } - filteredPipeSets := pipeSets[startIdx : end+1] filteredCommits := commits[startIdx : end+1] - graphLines := graph.RenderAux(filteredPipeSets, filteredCommits, selectedCommitSha) - lines := make([][]string, 0, len(graphLines)) + var getGraphLine func(int) string + if showGraph { + filteredPipeSets := pipeSets[startIdx : end+1] + graphLines := graph.RenderAux(filteredPipeSets, filteredCommits, selectedCommitSha) + getGraphLine = func(idx int) string { return graphLines[idx] } + } else { + getGraphLine = func(idx int) string { return "" } + } + + lines := make([][]string, 0, len(filteredCommits)) for i, commit := range filteredCommits { - lines = append(lines, displayCommit(commit, cherryPickedCommitShaMap, diffName, parseEmoji, graphLines[i], fullDescription)) + lines = append(lines, displayCommit(commit, cherryPickedCommitShaMap, diffName, parseEmoji, getGraphLine(i), fullDescription)) } return lines } -- cgit v1.2.3