diff options
-rw-r--r-- | pkg/gui/diff_context_size.go | 16 | ||||
-rw-r--r-- | pkg/gui/diff_context_size_test.go | 82 |
2 files changed, 98 insertions, 0 deletions
diff --git a/pkg/gui/diff_context_size.go b/pkg/gui/diff_context_size.go new file mode 100644 index 000000000..3e6e6b4a2 --- /dev/null +++ b/pkg/gui/diff_context_size.go @@ -0,0 +1,16 @@ +package gui + +func isShowingDiff(gui *Gui) bool { + key := gui.currentStaticContext().GetKey() + + return key == FILES_CONTEXT_KEY || key == COMMIT_FILES_CONTEXT_KEY || key == STASH_CONTEXT_KEY || key == BRANCH_COMMITS_CONTEXT_KEY || key == SUB_COMMITS_CONTEXT_KEY || key == MAIN_STAGING_CONTEXT_KEY || key == MAIN_PATCH_BUILDING_CONTEXT_KEY +} + +func (gui *Gui) IncreaseContextInDiffView() error { + if isShowingDiff(gui) { + gui.Config.GetUserConfig().Git.DiffContextSize = gui.Config.GetUserConfig().Git.DiffContextSize + 1 + return gui.postRefreshUpdate(gui.currentStaticContext()) + } + + return nil +} diff --git a/pkg/gui/diff_context_size_test.go b/pkg/gui/diff_context_size_test.go new file mode 100644 index 000000000..61d0bc728 --- /dev/null +++ b/pkg/gui/diff_context_size_test.go @@ -0,0 +1,82 @@ +package gui + +import ( + "testing" + + "github.com/jesseduffield/gocui" + "github.com/jesseduffield/lazygit/pkg/commands/patch" + "github.com/stretchr/testify/assert" +) + +const diffForTest = `diff --git a/pkg/gui/diff_context_size.go b/pkg/gui/diff_context_size.go +index 0da0a982..742b7dcf 100644 +--- a/pkg/gui/diff_context_size.go ++++ b/pkg/gui/diff_context_size.go +@@ -9,12 +9,12 @@ func getRefreshFunction(gui *Gui) func()error { + } + } else if key == MAIN_STAGING_CONTEXT_KEY { + return func() error { +- selectedLine := gui.Views.Secondary.SelectedLineIdx() ++ selectedLine := gui.State.Panels.LineByLine.GetSelectedLineIdx() + return gui.handleRefreshStagingPanel(false, selectedLine) + } + } else if key == MAIN_PATCH_BUILDING_CONTEXT_KEY { +` + +func setupGuiForTest(gui *Gui) { + gui.g = &gocui.Gui{} + gui.Views.Main, _ = gui.prepareView("main") + gui.Views.Secondary, _ = gui.prepareView("secondary") + gui.GitCommand.PatchManager = &patch.PatchManager{} + gui.refreshLineByLinePanel(diffForTest, "", false, 11) +} + +func TestIncreasesContextInDiffViewByOneInContextWithDiff(t *testing.T) { + contexts := []func(gui *Gui) Context { + func(gui *Gui) Context { return gui.State.Contexts.Files }, + func(gui *Gui) Context { return gui.State.Contexts.BranchCommits }, + func(gui *Gui) Context { return gui.State.Contexts.CommitFiles }, + func(gui *Gui) Context { return gui.State.Contexts.Stash }, + func(gui *Gui) Context { return gui.State.Contexts.Staging }, + func(gui *Gui) Context { return gui.State.Contexts.PatchBuilding }, + func(gui *Gui) Context { return gui.State.Contexts.SubCommits }, + } + + for _, c := range contexts { + gui := NewDummyGui() + context := c(gui) + setupGuiForTest(gui) + gui.Config.GetUserConfig().Git.DiffContextSize = 1 + gui.pushContextDirect(context) + + gui.IncreaseContextInDiffView() + + assert.Equal(t, 2, gui.Config.GetUserConfig().Git.DiffContextSize, string(context.GetKey())) + } +} + +func TestDoesntIncreaseContextInDiffViewInContextWithoutDiff(t *testing.T) { + contexts := []func(gui *Gui) Context { + func(gui *Gui) Context { return gui.State.Contexts.Status }, + func(gui *Gui) Context { return gui.State.Contexts.Submodules }, + func(gui *Gui) Context { return gui.State.Contexts.Remotes }, + func(gui *Gui) Context { return gui.State.Contexts.Normal }, + func(gui *Gui) Context { return gui.State.Contexts.ReflogCommits }, + func(gui *Gui) Context { return gui.State.Contexts.RemoteBranches }, + func(gui *Gui) Context { return gui.State.Contexts.Tags }, + func(gui *Gui) Context { return gui.State.Contexts.Merging }, + func(gui *Gui) Context { return gui.State.Contexts.CommandLog }, + } + + for _, c := range contexts { + gui := NewDummyGui() + context := c(gui) + setupGuiForTest(gui) + gui.Config.GetUserConfig().Git.DiffContextSize = 1 + gui.pushContextDirect(context) + + gui.IncreaseContextInDiffView() + + assert.Equal(t, 1, gui.Config.GetUserConfig().Git.DiffContextSize, string(context.GetKey())) + } +} |