From 1dac4158e9d8c8ab60203c76e9f86af409724823 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Mon, 28 Aug 2023 12:39:52 +0200 Subject: [PATCH] Don't pass ignoreWhitespace to git commands Now that AppState is available via common.Common, they can take it from there. --- pkg/commands/git.go | 4 +--- pkg/commands/git_commands/commit.go | 4 ++-- pkg/commands/git_commands/commit_test.go | 6 ++++-- pkg/commands/git_commands/stash.go | 4 ++-- pkg/commands/git_commands/stash_test.go | 6 ++++-- pkg/commands/git_commands/working_tree.go | 20 ++++++++----------- .../git_commands/working_tree_test.go | 12 +++++++---- .../controllers/commits_files_controller.go | 4 +--- pkg/gui/controllers/files_controller.go | 4 ++-- .../helpers/patch_building_helper.go | 4 +--- pkg/gui/controllers/helpers/staging_helper.go | 4 ++-- .../controllers/local_commits_controller.go | 2 +- .../controllers/reflog_commits_controller.go | 2 +- pkg/gui/controllers/stash_controller.go | 5 +---- pkg/gui/controllers/sub_commits_controller.go | 2 +- pkg/gui/controllers/submodules_controller.go | 2 +- 16 files changed, 40 insertions(+), 45 deletions(-) diff --git a/pkg/commands/git.go b/pkg/commands/git.go index 92df3d8a2..f057f8d54 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -159,9 +159,7 @@ func NewGitCommandAux( stashCommands := git_commands.NewStashCommands(gitCommon, fileLoader, workingTreeCommands) patchBuilder := patch.NewPatchBuilder(cmn.Log, func(from string, to string, reverse bool, filename string, plain bool) (string, error) { - // TODO: make patch builder take Gui.IgnoreWhitespaceInDiffView into - // account. For now we just pass false. - return workingTreeCommands.ShowFileDiff(from, to, reverse, filename, plain, false) + return workingTreeCommands.ShowFileDiff(from, to, reverse, filename, plain) }) patchCommands := git_commands.NewPatchCommands(gitCommon, rebaseCommands, commitCommands, statusCommands, stashCommands, patchBuilder) bisectCommands := git_commands.NewBisectCommands(gitCommon) diff --git a/pkg/commands/git_commands/commit.go b/pkg/commands/git_commands/commit.go index c68cb0d9c..b56c87e74 100644 --- a/pkg/commands/git_commands/commit.go +++ b/pkg/commands/git_commands/commit.go @@ -196,7 +196,7 @@ func (self *CommitCommands) AmendHeadCmdObj() oscommands.ICmdObj { return self.cmd.New(cmdArgs) } -func (self *CommitCommands) ShowCmdObj(sha string, filterPath string, ignoreWhitespace bool) oscommands.ICmdObj { +func (self *CommitCommands) ShowCmdObj(sha string, filterPath string) oscommands.ICmdObj { contextSize := self.UserConfig.Git.DiffContextSize extDiffCmd := self.UserConfig.Git.Paging.ExternalDiffCommand @@ -210,7 +210,7 @@ func (self *CommitCommands) ShowCmdObj(sha string, filterPath string, ignoreWhit Arg("--decorate"). Arg("-p"). Arg(sha). - ArgIf(ignoreWhitespace, "--ignore-all-space"). + ArgIf(self.AppState.IgnoreWhitespaceInDiffView, "--ignore-all-space"). ArgIf(filterPath != "", "--", filterPath). ToArgv() diff --git a/pkg/commands/git_commands/commit_test.go b/pkg/commands/git_commands/commit_test.go index 48fc5edc7..ace0c97de 100644 --- a/pkg/commands/git_commands/commit_test.go +++ b/pkg/commands/git_commands/commit_test.go @@ -239,11 +239,13 @@ func TestCommitShowCmdObj(t *testing.T) { userConfig := config.GetDefaultConfig() userConfig.Git.DiffContextSize = s.contextSize userConfig.Git.Paging.ExternalDiffCommand = s.extDiffCmd + appState := &config.AppState{} + appState.IgnoreWhitespaceInDiffView = s.ignoreWhitespace runner := oscommands.NewFakeRunner(t).ExpectGitArgs(s.expected, "", nil) - instance := buildCommitCommands(commonDeps{userConfig: userConfig, runner: runner}) + instance := buildCommitCommands(commonDeps{userConfig: userConfig, appState: appState, runner: runner}) - assert.NoError(t, instance.ShowCmdObj("1234567890", s.filterPath, s.ignoreWhitespace).Run()) + assert.NoError(t, instance.ShowCmdObj("1234567890", s.filterPath).Run()) runner.CheckForMissingCalls() }) } diff --git a/pkg/commands/git_commands/stash.go b/pkg/commands/git_commands/stash.go index 562e7b97d..12907a6ae 100644 --- a/pkg/commands/git_commands/stash.go +++ b/pkg/commands/git_commands/stash.go @@ -80,13 +80,13 @@ func (self *StashCommands) Sha(index int) (string, error) { return strings.Trim(sha, "\r\n"), err } -func (self *StashCommands) ShowStashEntryCmdObj(index int, ignoreWhitespace bool) oscommands.ICmdObj { +func (self *StashCommands) ShowStashEntryCmdObj(index int) oscommands.ICmdObj { cmdArgs := NewGitCmd("stash").Arg("show"). Arg("-p"). Arg("--stat"). Arg(fmt.Sprintf("--color=%s", self.UserConfig.Git.Paging.ColorArg)). Arg(fmt.Sprintf("--unified=%d", self.UserConfig.Git.DiffContextSize)). - ArgIf(ignoreWhitespace, "--ignore-all-space"). + ArgIf(self.AppState.IgnoreWhitespaceInDiffView, "--ignore-all-space"). Arg(fmt.Sprintf("stash@{%d}", index)). ToArgv() diff --git a/pkg/commands/git_commands/stash_test.go b/pkg/commands/git_commands/stash_test.go index 1c8976c6d..651430ab8 100644 --- a/pkg/commands/git_commands/stash_test.go +++ b/pkg/commands/git_commands/stash_test.go @@ -135,9 +135,11 @@ func TestStashStashEntryCmdObj(t *testing.T) { t.Run(s.testName, func(t *testing.T) { userConfig := config.GetDefaultConfig() userConfig.Git.DiffContextSize = s.contextSize - instance := buildStashCommands(commonDeps{userConfig: userConfig}) + appState := &config.AppState{} + appState.IgnoreWhitespaceInDiffView = s.ignoreWhitespace + instance := buildStashCommands(commonDeps{userConfig: userConfig, appState: appState}) - cmdStr := instance.ShowStashEntryCmdObj(s.index, s.ignoreWhitespace).Args() + cmdStr := instance.ShowStashEntryCmdObj(s.index).Args() assert.Equal(t, s.expected, cmdStr) }) } diff --git a/pkg/commands/git_commands/working_tree.go b/pkg/commands/git_commands/working_tree.go index a9ebd3985..29e259f8f 100644 --- a/pkg/commands/git_commands/working_tree.go +++ b/pkg/commands/git_commands/working_tree.go @@ -228,13 +228,13 @@ func (self *WorkingTreeCommands) Exclude(filename string) error { } // WorktreeFileDiff returns the diff of a file -func (self *WorkingTreeCommands) WorktreeFileDiff(file *models.File, plain bool, cached bool, ignoreWhitespace bool) string { +func (self *WorkingTreeCommands) WorktreeFileDiff(file *models.File, plain bool, cached bool) string { // for now we assume an error means the file was deleted - s, _ := self.WorktreeFileDiffCmdObj(file, plain, cached, ignoreWhitespace).RunWithOutput() + s, _ := self.WorktreeFileDiffCmdObj(file, plain, cached).RunWithOutput() return s } -func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain bool, cached bool, ignoreWhitespace bool) oscommands.ICmdObj { +func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain bool, cached bool) oscommands.ICmdObj { colorArg := self.UserConfig.Git.Paging.ColorArg if plain { colorArg = "never" @@ -252,7 +252,7 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain Arg("--submodule"). Arg(fmt.Sprintf("--unified=%d", contextSize)). Arg(fmt.Sprintf("--color=%s", colorArg)). - ArgIf(ignoreWhitespace, "--ignore-all-space"). + ArgIf(!plain && self.AppState.IgnoreWhitespaceInDiffView, "--ignore-all-space"). ArgIf(cached, "--cached"). ArgIf(noIndex, "--no-index"). Arg("--"). @@ -266,15 +266,11 @@ func (self *WorkingTreeCommands) WorktreeFileDiffCmdObj(node models.IFile, plain // ShowFileDiff get the diff of specified from and to. Typically this will be used for a single commit so it'll be 123abc^..123abc // but when we're in diff mode it could be any 'from' to any 'to'. The reverse flag is also here thanks to diff mode. -func (self *WorkingTreeCommands) ShowFileDiff(from string, to string, reverse bool, fileName string, plain bool, - ignoreWhitespace bool, -) (string, error) { - return self.ShowFileDiffCmdObj(from, to, reverse, fileName, plain, ignoreWhitespace).RunWithOutput() +func (self *WorkingTreeCommands) ShowFileDiff(from string, to string, reverse bool, fileName string, plain bool) (string, error) { + return self.ShowFileDiffCmdObj(from, to, reverse, fileName, plain).RunWithOutput() } -func (self *WorkingTreeCommands) ShowFileDiffCmdObj(from string, to string, reverse bool, fileName string, plain bool, - ignoreWhitespace bool, -) oscommands.ICmdObj { +func (self *WorkingTreeCommands) ShowFileDiffCmdObj(from string, to string, reverse bool, fileName string, plain bool) oscommands.ICmdObj { contextSize := self.UserConfig.Git.DiffContextSize colorArg := self.UserConfig.Git.Paging.ColorArg @@ -295,7 +291,7 @@ func (self *WorkingTreeCommands) ShowFileDiffCmdObj(from string, to string, reve Arg(from). Arg(to). ArgIf(reverse, "-R"). - ArgIf(ignoreWhitespace, "--ignore-all-space"). + ArgIf(!plain && self.AppState.IgnoreWhitespaceInDiffView, "--ignore-all-space"). Arg("--"). Arg(fileName). ToArgv() diff --git a/pkg/commands/git_commands/working_tree_test.go b/pkg/commands/git_commands/working_tree_test.go index a79631236..8137a96af 100644 --- a/pkg/commands/git_commands/working_tree_test.go +++ b/pkg/commands/git_commands/working_tree_test.go @@ -310,9 +310,11 @@ func TestWorkingTreeDiff(t *testing.T) { t.Run(s.testName, func(t *testing.T) { userConfig := config.GetDefaultConfig() userConfig.Git.DiffContextSize = s.contextSize + appState := &config.AppState{} + appState.IgnoreWhitespaceInDiffView = s.ignoreWhitespace - instance := buildWorkingTreeCommands(commonDeps{runner: s.runner, userConfig: userConfig}) - result := instance.WorktreeFileDiff(s.file, s.plain, s.cached, s.ignoreWhitespace) + instance := buildWorkingTreeCommands(commonDeps{runner: s.runner, userConfig: userConfig, appState: appState}) + result := instance.WorktreeFileDiff(s.file, s.plain, s.cached) assert.Equal(t, expectedResult, result) s.runner.CheckForMissingCalls() }) @@ -374,10 +376,12 @@ func TestWorkingTreeShowFileDiff(t *testing.T) { t.Run(s.testName, func(t *testing.T) { userConfig := config.GetDefaultConfig() userConfig.Git.DiffContextSize = s.contextSize + appState := &config.AppState{} + appState.IgnoreWhitespaceInDiffView = s.ignoreWhitespace - instance := buildWorkingTreeCommands(commonDeps{runner: s.runner, userConfig: userConfig}) + instance := buildWorkingTreeCommands(commonDeps{runner: s.runner, userConfig: userConfig, appState: appState}) - result, err := instance.ShowFileDiff(s.from, s.to, s.reverse, "test.txt", s.plain, s.ignoreWhitespace) + result, err := instance.ShowFileDiff(s.from, s.to, s.reverse, "test.txt", s.plain) assert.NoError(t, err) assert.Equal(t, expectedResult, result) s.runner.CheckForMissingCalls() diff --git a/pkg/gui/controllers/commits_files_controller.go b/pkg/gui/controllers/commits_files_controller.go index c82a051f4..3730a0965 100644 --- a/pkg/gui/controllers/commits_files_controller.go +++ b/pkg/gui/controllers/commits_files_controller.go @@ -113,9 +113,7 @@ func (self *CommitFilesController) GetOnRenderToMain() func() error { to := ref.RefName() from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(ref.ParentRefName()) - cmdObj := self.c.Git().WorkingTree.ShowFileDiffCmdObj( - from, to, reverse, node.GetPath(), false, self.c.GetAppState().IgnoreWhitespaceInDiffView, - ) + cmdObj := self.c.Git().WorkingTree.ShowFileDiffCmdObj(from, to, reverse, node.GetPath(), false) task := types.NewRunPtyTask(cmdObj.GetCmd()) pair := self.c.MainViewPairs().Normal diff --git a/pkg/gui/controllers/files_controller.go b/pkg/gui/controllers/files_controller.go index aae88fe79..2ecdc39e5 100644 --- a/pkg/gui/controllers/files_controller.go +++ b/pkg/gui/controllers/files_controller.go @@ -201,7 +201,7 @@ func (self *FilesController) GetOnRenderToMain() func() error { split := self.c.UserConfig.Gui.SplitDiff == "always" || (node.GetHasUnstagedChanges() && node.GetHasStagedChanges()) mainShowsStaged := !split && node.GetHasStagedChanges() - cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, mainShowsStaged, self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, mainShowsStaged) title := self.c.Tr.UnstagedChanges if mainShowsStaged { title = self.c.Tr.StagedChanges @@ -216,7 +216,7 @@ func (self *FilesController) GetOnRenderToMain() func() error { } if split { - cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, true, self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(node, false, true) title := self.c.Tr.StagedChanges if mainShowsStaged { diff --git a/pkg/gui/controllers/helpers/patch_building_helper.go b/pkg/gui/controllers/helpers/patch_building_helper.go index 7dd93e6a6..fd3c49718 100644 --- a/pkg/gui/controllers/helpers/patch_building_helper.go +++ b/pkg/gui/controllers/helpers/patch_building_helper.go @@ -73,9 +73,7 @@ func (self *PatchBuildingHelper) RefreshPatchBuildingPanel(opts types.OnFocusOpt ref := self.c.Contexts().CommitFiles.CommitFileTreeViewModel.GetRef() to := ref.RefName() from, reverse := self.c.Modes().Diffing.GetFromAndReverseArgsForDiff(ref.ParentRefName()) - // Passing false for ignoreWhitespace because the patch building panel - // doesn't work when whitespace is ignored - diff, err := self.c.Git().WorkingTree.ShowFileDiff(from, to, reverse, path, true, false) + diff, err := self.c.Git().WorkingTree.ShowFileDiff(from, to, reverse, path, true) if err != nil { return err } diff --git a/pkg/gui/controllers/helpers/staging_helper.go b/pkg/gui/controllers/helpers/staging_helper.go index 75280b985..bf4424907 100644 --- a/pkg/gui/controllers/helpers/staging_helper.go +++ b/pkg/gui/controllers/helpers/staging_helper.go @@ -52,8 +52,8 @@ func (self *StagingHelper) RefreshStagingPanel(focusOpts types.OnFocusOpts) erro return self.handleStagingEscape() } - mainDiff := self.c.Git().WorkingTree.WorktreeFileDiff(file, true, false, false) - secondaryDiff := self.c.Git().WorkingTree.WorktreeFileDiff(file, true, true, false) + mainDiff := self.c.Git().WorkingTree.WorktreeFileDiff(file, true, false) + secondaryDiff := self.c.Git().WorkingTree.WorktreeFileDiff(file, true, true) // grabbing locks here and releasing before we finish the function // because pushing say the secondary context could mean entering this function diff --git a/pkg/gui/controllers/local_commits_controller.go b/pkg/gui/controllers/local_commits_controller.go index 397cdb808..a110310f7 100644 --- a/pkg/gui/controllers/local_commits_controller.go +++ b/pkg/gui/controllers/local_commits_controller.go @@ -177,7 +177,7 @@ func (self *LocalCommitsController) GetOnRenderToMain() func() error { "ref": commit.Name, })) } else { - cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath(), self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath()) task = types.NewRunPtyTask(cmdObj.GetCmd()) } diff --git a/pkg/gui/controllers/reflog_commits_controller.go b/pkg/gui/controllers/reflog_commits_controller.go index 512390a6b..9cd5dd050 100644 --- a/pkg/gui/controllers/reflog_commits_controller.go +++ b/pkg/gui/controllers/reflog_commits_controller.go @@ -37,7 +37,7 @@ func (self *ReflogCommitsController) GetOnRenderToMain() func() error { if commit == nil { task = types.NewRenderStringTask("No reflog history") } else { - cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath(), self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath()) task = types.NewRunPtyTask(cmdObj.GetCmd()) } diff --git a/pkg/gui/controllers/stash_controller.go b/pkg/gui/controllers/stash_controller.go index 1b8377f27..5d74e10af 100644 --- a/pkg/gui/controllers/stash_controller.go +++ b/pkg/gui/controllers/stash_controller.go @@ -64,10 +64,7 @@ func (self *StashController) GetOnRenderToMain() func() error { task = types.NewRenderStringTask(self.c.Tr.NoStashEntries) } else { task = types.NewRunPtyTask( - self.c.Git().Stash.ShowStashEntryCmdObj( - stashEntry.Index, - self.c.GetAppState().IgnoreWhitespaceInDiffView, - ).GetCmd(), + self.c.Git().Stash.ShowStashEntryCmdObj(stashEntry.Index).GetCmd(), ) } diff --git a/pkg/gui/controllers/sub_commits_controller.go b/pkg/gui/controllers/sub_commits_controller.go index c11bba089..46dc0df98 100644 --- a/pkg/gui/controllers/sub_commits_controller.go +++ b/pkg/gui/controllers/sub_commits_controller.go @@ -38,7 +38,7 @@ func (self *SubCommitsController) GetOnRenderToMain() func() error { if commit == nil { task = types.NewRenderStringTask("No commits") } else { - cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath(), self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().Commit.ShowCmdObj(commit.Sha, self.c.Modes().Filtering.GetPath()) task = types.NewRunPtyTask(cmdObj.GetCmd()) } diff --git a/pkg/gui/controllers/submodules_controller.go b/pkg/gui/controllers/submodules_controller.go index 06a26af2e..d7ed12132 100644 --- a/pkg/gui/controllers/submodules_controller.go +++ b/pkg/gui/controllers/submodules_controller.go @@ -102,7 +102,7 @@ func (self *SubmodulesController) GetOnRenderToMain() func() error { if file == nil { task = types.NewRenderStringTask(prefix) } else { - cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(file, false, !file.HasUnstagedChanges && file.HasStagedChanges, self.c.GetAppState().IgnoreWhitespaceInDiffView) + cmdObj := self.c.Git().WorkingTree.WorktreeFileDiffCmdObj(file, false, !file.HasUnstagedChanges && file.HasStagedChanges) task = types.NewRunCommandTaskWithPrefix(cmdObj.GetCmd(), prefix) } }