diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-15 16:36:39 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-15 18:01:43 +1000 |
commit | d9fa02c53bb9b401f1b5ca07e8ed239862052a42 (patch) | |
tree | 9ce89793ba22ffc190ab6133365035dda4ec1ade | |
parent | c44ee71ad4ca44a407613c1e91f7d720acfa84f6 (diff) |
clean up interface for popup panels
34 files changed, 675 insertions, 397 deletions
diff --git a/pkg/gui/app_status_manager.go b/pkg/gui/app_status_manager.go index 54393c443..9d8ac3725 100644 --- a/pkg/gui/app_status_manager.go +++ b/pkg/gui/app_status_manager.go @@ -66,7 +66,7 @@ func (gui *Gui) WithWaitingStatus(name string, f func() error) error { if appStatus == "" { return } - gui.renderString(gui.g, "appStatus", appStatus) + gui.renderString("appStatus", appStatus) } }() diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go index ed8e7819e..22dddb65e 100644 --- a/pkg/gui/branches_panel.go +++ b/pkg/gui/branches_panel.go @@ -125,7 +125,7 @@ func (gui *Gui) handleCreatePullRequestPress(g *gocui.Gui, v *gocui.View) error } func (gui *Gui) handleGitFetch(g *gocui.Gui, v *gocui.View) error { - if err := gui.createLoaderPanel(gui.g, v, gui.Tr.SLocalize("FetchWait")); err != nil { + if err := gui.createLoaderPanel(v, gui.Tr.SLocalize("FetchWait")); err != nil { return err } go func() { @@ -140,12 +140,19 @@ func (gui *Gui) handleForceCheckout(g *gocui.Gui, v *gocui.View) error { branch := gui.getSelectedBranch() message := gui.Tr.SLocalize("SureForceCheckout") title := gui.Tr.SLocalize("ForceCheckoutBranch") - return gui.createConfirmationPanel(g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { - if err := gui.GitCommand.Checkout(branch.Name, commands.CheckoutOptions{Force: true}); err != nil { - _ = gui.surfaceError(err) - } - return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) - }, nil) + + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: title, + prompt: message, + handleConfirm: func() error { + if err := gui.GitCommand.Checkout(branch.Name, commands.CheckoutOptions{Force: true}); err != nil { + _ = gui.surfaceError(err) + } + return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) + }, + }) } type handleCheckoutRefOptions struct { @@ -179,24 +186,29 @@ func (gui *Gui) handleCheckoutRef(ref string, options handleCheckoutRefOptions) if strings.Contains(err.Error(), "Please commit your changes or stash them before you switch branch") { // offer to autostash changes - return gui.createConfirmationPanel(gui.g, gui.getBranchesView(), true, gui.Tr.SLocalize("AutoStashTitle"), gui.Tr.SLocalize("AutoStashPrompt"), func(g *gocui.Gui, v *gocui.View) error { - - if err := gui.GitCommand.StashSave(gui.Tr.SLocalize("StashPrefix") + ref); err != nil { - return gui.surfaceError(err) - } - if err := gui.GitCommand.Checkout(ref, cmdOptions); err != nil { - return gui.surfaceError(err) - } - - onSuccess() - if err := gui.GitCommand.StashDo(0, "pop"); err != nil { - if err := gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}); err != nil { - return err + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: gui.getBranchesView(), + returnFocusOnClose: true, + title: gui.Tr.SLocalize("AutoStashTitle"), + prompt: gui.Tr.SLocalize("AutoStashPrompt"), + handleConfirm: func() error { + if err := gui.GitCommand.StashSave(gui.Tr.SLocalize("StashPrefix") + ref); err != nil { + return gui.surfaceError(err) } - return gui.surfaceError(err) - } - return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}) - }, nil) + if err := gui.GitCommand.Checkout(ref, cmdOptions); err != nil { + return gui.surfaceError(err) + } + + onSuccess() + if err := gui.GitCommand.StashDo(0, "pop"); err != nil { + if err := gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}); err != nil { + return err + } + return gui.surfaceError(err) + } + return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}) + }, + }) } if err := gui.surfaceError(err); err != nil { @@ -210,12 +222,19 @@ func (gui *Gui) handleCheckoutRef(ref string, options handleCheckoutRefOptions) } func (gui *Gui) handleCheckoutByName(g *gocui.Gui, v *gocui.View) error { - return gui.createPromptPanel(g, v, gui.Tr.SLocalize("BranchName")+":", "", func(g *gocui.Gui, v *gocui.View) error { - return gui.handleCheckoutRef(gui.trimmedContent(v), handleCheckoutRefOptions{ + return gui.createPromptPanel(v, gui.Tr.SLocalize("BranchName")+":", "", func(response string) error { + return gui.handleCheckoutRef(response, handleCheckoutRefOptions{ onRefNotFound: func(ref string) error { - return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("BranchNotFoundTitle"), fmt.Sprintf("%s %s%s", gui.Tr.SLocalize("BranchNotFoundPrompt"), ref, "?"), func(_g *gocui.Gui, _v *gocui.View) error { - return gui.createNewBranchWithName(ref) - }, nil) + + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("BranchNotFoundTitle"), + prompt: fmt.Sprintf("%s %s%s", gui.Tr.SLocalize("BranchNotFoundPrompt"), ref, "?"), + handleConfirm: func() error { + return gui.createNewBranchWithName(ref) + }, + }) }, }) }) @@ -240,8 +259,8 @@ func (gui *Gui) handleNewBranch(g *gocui.Gui, v *gocui.View) error { "branchName": branch.Name, }, ) - return gui.createPromptPanel(g, v, message, "", func(g *gocui.Gui, v *gocui.View) error { - return gui.createNewBranchWithName(gui.trimmedContent(v)) + return gui.createPromptPanel(v, message, "", func(response string) error { + return gui.createNewBranchWithName(response) }) } @@ -288,16 +307,23 @@ func (gui *Gui) deleteNamedBranch(g *gocui.Gui, v *gocui.View, selectedBranch *c "selectedBranchName": selectedBranch.Name, }, ) - return gui.createConfirmationPanel(g, v, true, title, message, func(g *gocui.Gui, v *gocui.View) error { - if err := gui.GitCommand.DeleteBranch(selectedBranch.Name, force); err != nil { - errMessage := err.Error() - if !force && strings.Contains(errMessage, "is not fully merged") { - return gui.deleteNamedBranch(g, v, selectedBranch, true) + + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: title, + prompt: message, + handleConfirm: func() error { + if err := gui.GitCommand.DeleteBranch(selectedBranch.Name, force); err != nil { + errMessage := err.Error() + if !force && strings.Contains(errMessage, "is not fully merged") { + return gui.deleteNamedBranch(g, v, selectedBranch, true) + } + return gui.createErrorPanel(errMessage) } - return gui.createErrorPanel(errMessage) - } - return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{BRANCHES}}) - }, nil) + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{BRANCHES}}) + }, + }) } func (gui *Gui) mergeBranchIntoCheckedOutBranch(branchName string) error { @@ -319,12 +345,17 @@ func (gui *Gui) mergeBranchIntoCheckedOutBranch(branchName string) error { "selectedBranch": branchName, }, ) - return gui.createConfirmationPanel(gui.g, gui.getBranchesView(), true, gui.Tr.SLocalize("MergingTitle"), prompt, - func(g *gocui.Gui, v *gocui.View) error { + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: gui.getBranchesView(), + returnFocusOnClose: true, + title: gui.Tr.SLocalize("MergingTitle"), + prompt: prompt, + handleConfirm: func() error { err := gui.GitCommand.Merge(branchName, commands.MergeOpts{}) return gui.handleGenericMergeCommandResult(err) - }, nil) + }, + }) } func (gui *Gui) handleMerge(g *gocui.Gui, v *gocui.View) error { @@ -357,11 +388,17 @@ func (gui *Gui) handleRebaseOntoBranch(selectedBranchName string) error { "selectedBranch": selectedBranchName, }, ) - return gui.createConfirmationPanel(gui.g, gui.getBranchesView(), true, gui.Tr.SLocalize("RebasingTitle"), prompt, - func(g *gocui.Gui, v *gocui.View) error { + + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: gui.getBranchesView(), + returnFocusOnClose: true, + title: gui.Tr.SLocalize("RebasingTitle"), + prompt: prompt, + handleConfirm: func() error { err := gui.GitCommand.RebaseBranch(selectedBranchName) return gui.handleGenericMergeCommandResult(err) - }, nil) + }, + }) } func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error { @@ -396,7 +433,7 @@ func (gui *Gui) handleFastForward(g *gocui.Gui, v *gocui.View) error { }, ) go func() { - _ = gui.createLoaderPanel(gui.g, v, message) + _ = gui.createLoaderPanel(v, message) if gui.State.Panels.Branches.SelectedLine == 0 { _ = gui.pullWithMode("ff-only", PullFilesOptions{}) @@ -500,14 +537,13 @@ func (gui *Gui) handleRenameBranch(g *gocui.Gui, v *gocui.View) error { // way to get it to show up in the reflog) promptForNewName := func() error { - return gui.createPromptPanel(g, v, gui.Tr.SLocalize("NewBranchNamePrompt")+" "+branch.Name+":", "", func(g *gocui.Gui, v *gocui.View) error { - newName := gui.trimmedContent(v) - if err := gui.GitCommand.RenameBranch(branch.Name, newName); err != nil { + return gui.createPromptPanel(v, gui.Tr.SLocalize("NewBranchNamePrompt")+" "+branch.Name+":", "", func(newBranchName string) error { + if err := gui.GitCommand.RenameBranch(branch.Name, newBranchName); err != nil { return gui.surfaceError(err) } // need to checkout so that the branch shows up in our reflog and therefore // doesn't get lost among all the other branches when we switch to something else - if err := gui.GitCommand.Checkout(newName, commands.CheckoutOptions{Force: false}); err != nil { + if err := gui.GitCommand.Checkout(newBranchName, commands.CheckoutOptions{Force: false}); err != nil { return gui.surfaceError(err) } @@ -522,9 +558,14 @@ func (gui *Gui) handleRenameBranch(g *gocui.Gui, v *gocui.View) error { if notTrackingRemote { return promptForNewName() } - return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("renameBranch"), gui.Tr.SLocalize("RenameBranchWarning"), func(_g *gocui.Gui, _v *gocui.View) error { - return promptForNewName() - }, nil) + + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("renameBranch"), + prompt: gui.Tr.SLocalize("RenameBranchWarning"), + handleConfirm: promptForNewName, + }) } func (gui *Gui) currentBranch() *commands.Branch { diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go index 886fe3d7b..b10f0f4bb 100644 --- a/pkg/gui/commit_files_panel.go +++ b/pkg/gui/commit_files_panel.go @@ -36,7 +36,7 @@ func (gui *Gui) handleCommitFileSelect(g *gocui.Gui, v *gocui.View) error { commitFile := gui.getSelectedCommitFile() if commitFile == nil { - gui.renderString(g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) + gui.renderString("commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) return nil } @@ -57,7 +57,7 @@ func (gui *Gui) handleCommitFileSelect(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) handleSwitchToCommitsPanel(g *gocui.Gui, v *gocui.View) error { - return gui.switchFocus(g, v, gui.getCommitsView()) + return gui.switchFocus(v, gui.getCommitsView()) } func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error { @@ -77,17 +77,23 @@ func (gui *Gui) handleDiscardOldFileChange(g *gocui.Gui, v *gocui.View) error { fileName := gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name - return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("DiscardFileChangesTitle"), gui.Tr.SLocalize("DiscardFileChangesPrompt"), func(g *gocui.Gui, v *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { - if err := gui.GitCommand.DiscardOldFileChanges(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, fileName); err != nil { - if err := gui.handleGenericMergeCommandResult(err); err != nil { - return err + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("DiscardFileChangesTitle"), + prompt: gui.Tr.SLocalize("DiscardFileChangesPrompt"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("RebasingStatus"), func() error { + if err := gui.GitCommand.DiscardOldFileChanges(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, fileName); err != nil { + if err := gui.handleGenericMergeCommandResult(err); err != nil { + return err + } } - } - return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}) - }) - }, nil) + return gui.refreshSidePanels(refreshOptions{mode: BLOCK_UI}) + }) + }, + }) } func (gui *Gui) refreshCommitFilesView() error { @@ -144,7 +150,7 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { commitFile := gui.getSelectedCommitFile() if commitFile == nil { - gui.renderString(g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) + gui.renderString("commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) return nil } @@ -161,10 +167,16 @@ func (gui *Gui) handleToggleFileForPatch(g *gocui.Gui, v *gocui.View) error { } if gui.GitCommand.PatchManager.CommitSelected() && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { - return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.GitCommand.PatchManager.Reset() - return toggleTheFile() - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("DiscardPatch"), + prompt: gui.Tr.SLocalize("DiscardPatchConfirm"), + handleConfirm: func() error { + gui.GitCommand.PatchManager.Reset() + return toggleTheFile() + }, + }) } return toggleTheFile() @@ -200,7 +212,7 @@ func (gui *Gui) enterCommitFile(selectedLineIdx int) error { commitFile := gui.getSelectedCommitFile() if commitFile == nil { - gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) + gui.renderString("commitFiles", gui.Tr.SLocalize("NoCommiteFiles")) return nil } @@ -212,18 +224,25 @@ func (gui *Gui) enterCommitFile(selectedLineIdx int) error { } gui.changeMainViewsContext("patch-building") - if err := gui.switchFocus(gui.g, gui.getCommitFilesView(), gui.getMainView()); err != nil { + if err := gui.switchFocus(gui.getCommitFilesView(), gui.getMainView()); err != nil { return err } return gui.refreshPatchBuildingPanel(selectedLineIdx) } if gui.GitCommand.PatchManager.CommitSelected() && gui.GitCommand.PatchManager.CommitSha != commitFile.Sha { - return gui.createConfirmationPanel(gui.g, gui.getCommitFilesView(), false, gui.Tr.SLocalize("DiscardPatch"), gui.Tr.SLocalize("DiscardPatchConfirm"), func(g *gocui.Gui, v *gocui.View) error { - gui.GitCommand.PatchManager.Reset() - return enterTheFile(selectedLineIdx) - }, func(g *gocui.Gui, v *gocui.View) error { - return gui.switchFocus(gui.g, nil, gui.getCommitFilesView()) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: gui.getCommitFilesView(), + returnFocusOnClose: false, + title: gui.Tr.SLocalize("DiscardPatch"), + prompt: gui.Tr.SLocalize("DiscardPatchConfirm"), + handleConfirm: func() error { + gui.GitCommand.PatchManager.Reset() + return enterTheFile(selectedLineIdx) + }, + handleClose: func() error { + return gui.switchFocus(nil, gui.getCommitFilesView()) + }, }) } diff --git a/pkg/gui/commit_message_panel.go b/pkg/gui/commit_message_panel.go index bcc47f6b5..af79795f1 100644 --- a/pkg/gui/commit_message_panel.go +++ b/pkg/gui/commit_message_panel.go @@ -47,13 +47,13 @@ func (gui *Gui) handleCommitConfirm(g *gocui.Gui, v *gocui.View) error { _ = v.SetCursor(0, 0) _ = v.SetOrigin(0, 0) _, _ = g.SetViewOnBottom("commitMessage") - _ = gui.switchFocus(g, v, gui.getFilesView()) + _ = gui.switchFocus(v, gui.getFilesView()) return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) } func (gui *Gui) handleCommitClose(g *gocui.Gui, v *gocui.View) error { _, _ = g.SetViewOnBottom("commitMessage") - return gui.switchFocus(g, v, gui.getFilesView()) + return gui.switchFocus(v, gui.getFilesView()) } func (gui *Gui) handleCommitFocused(g *gocui.Gui, v *gocui.View) error { @@ -69,7 +69,7 @@ func (gui *Gui) handleCommitFocused(g *gocui.Gui, v *gocui.View) error { "keyBindNewLine": "tab", }, ) - gui.renderString(g, "options", message) + gui.renderString("options", message) return nil } diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index c7ea04b20..2c1beafc7 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -155,12 +155,18 @@ func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("Squash"), gui.Tr.SLocalize("SureSquashThisCommit"), func(g *gocui.Gui, v *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("SquashingStatus"), func() error { - err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "squash") - return gui.handleGenericMergeCommandResult(err) - }) - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("Squash"), + prompt: gui.Tr.SLocalize("SureSquashThisCommit"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("SquashingStatus"), func() error { + err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "squash") + return gui.handleGenericMergeCommandResult(err) + }) + }, + }) } func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error { @@ -180,12 +186,18 @@ func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("Fixup"), gui.Tr.SLocalize("SureFixupThisCommit"), func(g *gocui.Gui, v *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("FixingStatus"), func() error { - err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "fixup") - return gui.handleGenericMergeCommandResult(err) - }) - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("Fixup"), + prompt: gui.Tr.SLocalize("SureFixupThisCommit"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("FixingStatus"), func() error { + err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "fixup") + return gui.handleGenericMergeCommandResult(err) + }) + }, + }) } func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error { @@ -204,8 +216,8 @@ func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error { if gui.State.Panels.Commits.SelectedLine != 0 { return gui.createErrorPanel(gui.Tr.SLocalize("OnlyRenameTopCommit")) } - return gui.createPromptPanel(g, v, gui.Tr.SLocalize("renameCommit"), "", func(g *gocui.Gui, v *gocui.View) error { - if err := gui.GitCommand.RenameCommit(v.Buffer()); err != nil { + return gui.createPromptPanel(v, gui.Tr.SLocalize("renameCommit"), "", func(response string) error { + if err := gui.GitCommand.RenameCommit(response); err != nil { return gui.surfaceError(err) } @@ -276,12 +288,18 @@ func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("DeleteCommitTitle"), gui.Tr.SLocalize("DeleteCommitPrompt"), func(*gocui.Gui, *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("DeletingStatus"), func() error { - err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop") - return gui.handleGenericMergeCommandResult(err) - }) - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("DeleteCommitTitle"), + prompt: gui.Tr.SLocalize("DeleteCommitPrompt"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("DeletingStatus"), func() error { + err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop") + return gui.handleGenericMergeCommandResult(err) + }) + }, + }) } func (gui *Gui) handleCommitMoveDown(g *gocui.Gui, v *gocui.View) error { @@ -362,12 +380,18 @@ func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error { return err } - return gui.createConfirmationPanel(gui.g, v, true, gui.Tr.SLocalize("AmendCommitTitle"), gui.Tr.SLocalize("AmendCommitPrompt"), func(*gocui.Gui, *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("AmendingStatus"), func() error { - err := gui.GitCommand.AmendTo(gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha) - return gui.handleGenericMergeCommandResult(err) - }) - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("AmendCommitTitle"), + prompt: gui.Tr.SLocalize("AmendCommitPrompt"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("AmendingStatus"), func() error { + err := gui.GitCommand.AmendTo(gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha) + return gui.handleGenericMergeCommandResult(err) + }) + }, + }) } func (gui *Gui) handleCommitPick(g *gocui.Gui, v *gocui.View) error { @@ -474,12 +498,18 @@ func (gui *Gui) HandlePasteCommits(g *gocui.Gui, v *gocui.View) error { return err } - return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("CherryPick"), gui.Tr.SLocalize("SureCherryPick"), func(g *gocui.Gui, v *gocui.View) error { - return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error { - err := gui.GitCommand.CherryPickCommits(gui.State.CherryPickedCommits) - return gui.handleGenericMergeCommandResult(err) - }) - }, nil) + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("CherryPick"), + prompt: gui.Tr.SLocalize("SureCherryPick"), + handleConfirm: func() error { + return gui.WithWaitingStatus(gui.Tr.SLocalize("CherryPickingStatus"), func() error { + err := gui.GitCommand.CherryPickCommits(gui.State.CherryPickedCommits) + return gui.handleGenericMergeCommandResult(err) + }) + }, + }) } func (gui *Gui) handleSwitchToCommitFilesPanel(g *gocui.Gui, v *gocui.View) error { @@ -487,7 +517,7 @@ func (gui *Gui) handleSwitchToCommitFilesPanel(g *gocui.Gui, v *gocui.View) erro return err } - return gui.switchFocus(g, gui.getCommitsView(), gui.getCommitFilesView()) + return gui.switchFocus(gui.getCommitsView(), gui.getCommitFilesView()) } func (gui *Gui) hasCommit(commits []*commands.Commit, target string) (int, bool) { @@ -513,18 +543,24 @@ func (gui *Gui) handleCreateFixupCommit(g *gocui.Gui, v *gocui.View) error { return nil } - return gui.createConfirmationPanel(g, v, true, gui.Tr.SLocalize("CreateFixupCommit"), gui.Tr.TemplateLocalize( - "SureCreateFixupCommit", - Teml{ - "commit": commit.Sha, - }, - ), func(g *gocui.Gui, v *gocui.View) error { - if err := gui.GitCommand.CreateFixupCommit(commit.Sha); err != nil { - return gui.surfaceError(err) - } + return gui.createConfirmationPanel(createConfirmationPanelOpts{ + returnToView: v, + returnFocusOnClose: true, + title: gui.Tr.SLocalize("CreateFixupCommit"), + prompt: gui.Tr.TemplateLocalize( + "SureCreateFixupCommit", + Teml{ + "commit": commit.Sha, + }, + ), + handleConfirm: func() error { + if err := gui.GitCommand.CreateFixupCommit(commit.Sha); err != nil { + return gui.surfaceError(err) + } - return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) - }, nil) + return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) + }, + }) } func (gui *Gui) handleSquashAllAboveFixupCommits(g *gocui.Gui, v *gocui.View) error { @@ -537,17 +573,23 @@ func (gui *Gui) handleSquashAllAboveFixupCommits(g *gocui.Gui, v *gocui.View) er return nil |