diff --git a/pkg/commands/git.go b/pkg/commands/git.go index f9f6e723d..b9b37ab80 100644 --- a/pkg/commands/git.go +++ b/pkg/commands/git.go @@ -74,6 +74,7 @@ type GitCommand struct { removeFile func(string) error DotGitDir string onSuccessfulContinue func() error + PatchManager *PatchManager } // NewGitCommand it runs git commands diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go index 2ee108116..43bc8ee22 100644 --- a/pkg/gui/commit_files_panel.go +++ b/pkg/gui/commit_files_panel.go @@ -93,7 +93,7 @@ func (gui *Gui) refreshCommitFilesView() error { return nil } - files, err := gui.GitCommand.GetCommitFiles(commit.Sha, gui.State.PatchManager) + files, err := gui.GitCommand.GetCommitFiles(commit.Sha, gui.GitCommand.PatchManager) if err != nil { return gui.createErrorPanel(gui.g, err.Error()) } @@ -124,20 +124,20 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { } toggleTheFile := func() error { - if gui.State.PatchManager == nil { + if gui.GitCommand.PatchManager == nil { if err := gui.createPatchManager(); err != nil { return err } } - gui.State.PatchManager.ToggleFileWhole(commitFile.Name) + gui.GitCommand.PatchManager.ToggleFileWhole(commitFile.Name) return gui.refreshCommitFilesView() } - if gui.State.PatchManager != nil && gui.State.PatchManager.CommitSha != commitFile.Sha { + if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.State.PatchManager = nil + gui.GitCommand.PatchManager = nil return toggleTheFile() }, nil) } @@ -160,7 +160,7 @@ func (gui *Gui) createPatchManager() error { return errors.New("No commit selected") } - gui.State.PatchManager = commands.NewPatchManager(gui.Log, gui.GitCommand.ApplyPatch, commit.Sha, diffMap) + gui.GitCommand.PatchManager = commands.NewPatchManager(gui.Log, gui.GitCommand.ApplyPatch, commit.Sha, diffMap) return nil } @@ -175,7 +175,7 @@ func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { } enterTheFile := func() error { - if gui.State.PatchManager == nil { + if gui.GitCommand.PatchManager == nil { if err := gui.createPatchManager(); err != nil { return err } @@ -190,9 +190,9 @@ func (gui *Gui) handleEnterCommitFile(g *gocui.Gui, v *gocui.View) error { return gui.refreshStagingPanel() } - if gui.State.PatchManager != nil && gui.State.PatchManager.CommitSha != commitFile.Sha { + if gui.GitCommand.PatchManager != nil && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { return gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.State.PatchManager = nil + gui.GitCommand.PatchManager = nil return enterTheFile() }, nil) } diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index b22e6084e..667b6b54f 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -53,14 +53,14 @@ func (gui *Gui) handleCommitSelect(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) refreshPatchPanel() error { - if gui.State.PatchManager != nil { + if gui.GitCommand.PatchManager != nil { gui.State.SplitMainPanel = true secondaryView := gui.getSecondaryView() secondaryView.Highlight = true secondaryView.Wrap = false gui.g.Update(func(*gocui.Gui) error { - return gui.setViewContent(gui.g, gui.getSecondaryView(), gui.State.PatchManager.RenderAggregatedPatchColored(false)) + return gui.setViewContent(gui.g, gui.getSecondaryView(), gui.GitCommand.PatchManager.RenderAggregatedPatchColored(false)) }) } else { gui.State.SplitMainPanel = false diff --git a/pkg/gui/gui.go b/pkg/gui/gui.go index ea71d9dca..54c85bfe4 100644 --- a/pkg/gui/gui.go +++ b/pkg/gui/gui.go @@ -151,7 +151,6 @@ type guiState struct { Contexts map[string]string CherryPickedCommits []*commands.Commit SplitMainPanel bool - PatchManager *commands.PatchManager } // for now the split view will always be on diff --git a/pkg/gui/patch_options_panel.go b/pkg/gui/patch_options_panel.go index 5e2329703..41e3056a8 100644 --- a/pkg/gui/patch_options_panel.go +++ b/pkg/gui/patch_options_panel.go @@ -17,7 +17,7 @@ func (o *patchMenuOption) GetDisplayStrings(isFocused bool) []string { } func (gui *Gui) handleCreatePatchOptionsMenu(g *gocui.Gui, v *gocui.View) error { - m := gui.State.PatchManager + m := gui.GitCommand.PatchManager if m == nil { return gui.createErrorPanel(gui.g, gui.Tr.SLocalize("NoPatchError")) } @@ -30,7 +30,7 @@ func (gui *Gui) handleCreatePatchOptionsMenu(g *gocui.Gui, v *gocui.View) error } selectedCommit := gui.getSelectedCommit(gui.g) - if selectedCommit != nil && gui.State.PatchManager.CommitSha != selectedCommit.Sha { + if selectedCommit != nil && gui.GitCommand.PatchManager.CommitSha != selectedCommit.Sha { options = append(options, &patchMenuOption{ displayName: fmt.Sprintf("move patch to selected commit (%s)", selectedCommit.Sha), function: gui.handleMovePatchToSelectedCommit, @@ -46,7 +46,7 @@ func (gui *Gui) handleCreatePatchOptionsMenu(g *gocui.Gui, v *gocui.View) error func (gui *Gui) getPatchCommitIndex() int { for index, commit := range gui.State.Commits { - if commit.Sha == gui.State.PatchManager.CommitSha { + if commit.Sha == gui.GitCommand.PatchManager.CommitSha { return index } } @@ -60,7 +60,7 @@ func (gui *Gui) handleDeletePatchFromCommit() error { return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { commitIndex := gui.getPatchCommitIndex() - err := gui.GitCommand.DeletePatchesFromCommit(gui.State.Commits, commitIndex, gui.State.PatchManager) + err := gui.GitCommand.DeletePatchesFromCommit(gui.State.Commits, commitIndex, gui.GitCommand.PatchManager) return gui.handleGenericMergeCommandResult(err) }) } @@ -72,7 +72,7 @@ func (gui *Gui) handleMovePatchToSelectedCommit() error { return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { commitIndex := gui.getPatchCommitIndex() - err := gui.GitCommand.MovePatchToSelectedCommit(gui.State.Commits, commitIndex, gui.State.Panels.Commits.SelectedLine, gui.State.PatchManager) + err := gui.GitCommand.MovePatchToSelectedCommit(gui.State.Commits, commitIndex, gui.State.Panels.Commits.SelectedLine, gui.GitCommand.PatchManager) return gui.handleGenericMergeCommandResult(err) }) } @@ -91,12 +91,12 @@ func (gui *Gui) handlePullPatchIntoWorkingTree() error { return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { commitIndex := gui.getPatchCommitIndex() - err := gui.GitCommand.PullPatchIntoIndex(gui.State.Commits, commitIndex, gui.State.PatchManager) + err := gui.GitCommand.PullPatchIntoIndex(gui.State.Commits, commitIndex, gui.GitCommand.PatchManager) return gui.handleGenericMergeCommandResult(err) }) } func (gui *Gui) handleClearPatch() error { - gui.State.PatchManager = nil + gui.GitCommand.PatchManager = nil return gui.refreshCommitFilesView() } diff --git a/pkg/gui/staging_panel.go b/pkg/gui/staging_panel.go index 0a47d0a76..13878e2f0 100644 --- a/pkg/gui/staging_panel.go +++ b/pkg/gui/staging_panel.go @@ -68,7 +68,7 @@ func (gui *Gui) refreshStagingPanel() error { return err } - secondaryColorDiff := gui.State.PatchManager.RenderPatchForFile(commitFile.Name, false, false) + secondaryColorDiff := gui.GitCommand.PatchManager.RenderPatchForFile(commitFile.Name, false, false) if err != nil { return err } @@ -220,7 +220,7 @@ func (gui *Gui) refreshView() error { filename := gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name - colorDiff := state.PatchParser.Render(state.FirstLineIdx, state.LastLineIdx, gui.State.PatchManager.GetFileIncLineIndices(filename)) + colorDiff := state.PatchParser.Render(state.FirstLineIdx, state.LastLineIdx, gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)) mainView := gui.getMainView() mainView.Highlight = true @@ -283,7 +283,7 @@ func (gui *Gui) handleStageSelection(g *gocui.Gui, v *gocui.View) error { return gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) } - gui.State.PatchManager.AddFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx) + gui.GitCommand.PatchManager.AddFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx) if err := gui.refreshCommitFilesView(); err != nil { return err @@ -307,7 +307,7 @@ func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error { return gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) } - gui.State.PatchManager.RemoveFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx) + gui.GitCommand.PatchManager.RemoveFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx) if err := gui.refreshCommitFilesView(); err != nil { return err