1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-04 23:37:41 +02:00

Remove return value of Alert/Confirm/Prompt

This might seem controversial; in many cases the client code gets longer,
because it needs an extra line for an explicit `return nil`. I still prefer
this, because it makes it clearer which calls can return errors.
This commit is contained in:
Stefan Haller 2024-09-05 11:10:27 +02:00
parent b15a1c7ae7
commit d4ef8e53d5
39 changed files with 303 additions and 131 deletions

View File

@ -83,7 +83,7 @@ func (self *BackgroundRoutineMgr) startBackgroundFetch() {
} }
err := self.backgroundFetch() err := self.backgroundFetch()
if err != nil && strings.Contains(err.Error(), "exit status 128") && isNew { if err != nil && strings.Contains(err.Error(), "exit status 128") && isNew {
_ = self.gui.c.Alert(self.gui.c.Tr.NoAutomaticGitFetchTitle, self.gui.c.Tr.NoAutomaticGitFetchBody) self.gui.c.Alert(self.gui.c.Tr.NoAutomaticGitFetchTitle, self.gui.c.Tr.NoAutomaticGitFetchBody)
} else { } else {
self.goEvery(time.Second*time.Duration(userConfig.Refresher.FetchInterval), self.gui.stopChan, func() error { self.goEvery(time.Second*time.Duration(userConfig.Refresher.FetchInterval), self.gui.stopChan, func() error {
err := self.backgroundFetch() err := self.backgroundFetch()

View File

@ -280,7 +280,7 @@ func (self *BasicCommitsController) createResetMenu(commit *models.Commit) error
} }
func (self *BasicCommitsController) checkout(commit *models.Commit) error { func (self *BasicCommitsController) checkout(commit *models.Commit) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.CheckoutCommit, Title: self.c.Tr.CheckoutCommit,
Prompt: self.c.Tr.SureCheckoutThisCommit, Prompt: self.c.Tr.SureCheckoutThisCommit,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -288,6 +288,7 @@ func (self *BasicCommitsController) checkout(commit *models.Commit) error {
return self.c.Helpers().Refs.CheckoutRef(commit.Hash, types.CheckoutRefOptions{}) return self.c.Helpers().Refs.CheckoutRef(commit.Hash, types.CheckoutRefOptions{})
}, },
}) })
return nil
} }
func (self *BasicCommitsController) copyRange(*models.Commit) error { func (self *BasicCommitsController) copyRange(*models.Commit) error {

View File

@ -201,10 +201,10 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
{ {
Label: self.c.Tr.Bisect.ChooseTerms, Label: self.c.Tr.Bisect.ChooseTerms,
OnPress: func() error { OnPress: func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.Bisect.OldTermPrompt, Title: self.c.Tr.Bisect.OldTermPrompt,
HandleConfirm: func(oldTerm string) error { HandleConfirm: func(oldTerm string) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.Bisect.NewTermPrompt, Title: self.c.Tr.Bisect.NewTermPrompt,
HandleConfirm: func(newTerm string) error { HandleConfirm: func(newTerm string) error {
self.c.LogAction(self.c.Tr.Actions.StartBisect) self.c.LogAction(self.c.Tr.Actions.StartBisect)
@ -215,8 +215,10 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
return self.c.Helpers().Bisect.PostBisectCommandRefresh() return self.c.Helpers().Bisect.PostBisectCommandRefresh()
}, },
}) })
return nil
}, },
}) })
return nil
}, },
Key: 't', Key: 't',
}, },
@ -235,7 +237,7 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
return err return err
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Bisect.CompleteTitle, Title: self.c.Tr.Bisect.CompleteTitle,
Prompt: fmt.Sprintf(prompt, strings.TrimSpace(formattedCommits)), Prompt: fmt.Sprintf(prompt, strings.TrimSpace(formattedCommits)),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -247,6 +249,8 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
return self.c.Helpers().Bisect.PostBisectCommandRefresh() return self.c.Helpers().Bisect.PostBisectCommandRefresh()
}, },
}) })
return nil
} }
func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) error { func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool) error {

View File

@ -410,13 +410,15 @@ func (self *BranchesController) promptToCheckoutWorktree(worktree *models.Worktr
"worktreeName": worktree.Name, "worktreeName": worktree.Name,
}) })
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.SwitchToWorktree, Title: self.c.Tr.SwitchToWorktree,
Prompt: prompt, Prompt: prompt,
HandleConfirm: func() error { HandleConfirm: func() error {
return self.c.Helpers().Worktree.Switch(worktree, context.LOCAL_BRANCHES_CONTEXT_KEY) return self.c.Helpers().Worktree.Switch(worktree, context.LOCAL_BRANCHES_CONTEXT_KEY)
}, },
}) })
return nil
} }
func (self *BranchesController) handleCreatePullRequest(selectedBranch *models.Branch) error { func (self *BranchesController) handleCreatePullRequest(selectedBranch *models.Branch) error {
@ -460,7 +462,7 @@ func (self *BranchesController) forceCheckout() error {
message := self.c.Tr.SureForceCheckout message := self.c.Tr.SureForceCheckout
title := self.c.Tr.ForceCheckoutBranch title := self.c.Tr.ForceCheckoutBranch
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: title, Title: title,
Prompt: message, Prompt: message,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -471,10 +473,12 @@ func (self *BranchesController) forceCheckout() error {
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
}, },
}) })
return nil
} }
func (self *BranchesController) checkoutByName() error { func (self *BranchesController) checkoutByName() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.BranchName + ":", Title: self.c.Tr.BranchName + ":",
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(),
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
@ -485,18 +489,22 @@ func (self *BranchesController) checkoutByName() error {
} }
return self.c.Helpers().Refs.CheckoutRef(response, types.CheckoutRefOptions{ return self.c.Helpers().Refs.CheckoutRef(response, types.CheckoutRefOptions{
OnRefNotFound: func(ref string) error { OnRefNotFound: func(ref string) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.BranchNotFoundTitle, Title: self.c.Tr.BranchNotFoundTitle,
Prompt: fmt.Sprintf("%s %s%s", self.c.Tr.BranchNotFoundPrompt, ref, "?"), Prompt: fmt.Sprintf("%s %s%s", self.c.Tr.BranchNotFoundPrompt, ref, "?"),
HandleConfirm: func() error { HandleConfirm: func() error {
return self.createNewBranchWithName(ref) return self.createNewBranchWithName(ref)
}, },
}) })
return nil
}, },
}) })
}, },
}, },
) )
return nil
} }
func (self *BranchesController) createNewBranchWithName(newBranchName string) error { func (self *BranchesController) createNewBranchWithName(newBranchName string) error {
@ -586,7 +594,7 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error {
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: title, Title: title,
Prompt: message, Prompt: message,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -596,6 +604,8 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error {
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}}) return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
}, },
}) })
return nil
} }
func (self *BranchesController) delete(branch *models.Branch) error { func (self *BranchesController) delete(branch *models.Branch) error {
@ -715,7 +725,7 @@ func (self *BranchesController) createResetMenu(selectedBranch *models.Branch) e
func (self *BranchesController) rename(branch *models.Branch) error { func (self *BranchesController) rename(branch *models.Branch) error {
promptForNewName := func() error { promptForNewName := func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewBranchNamePrompt + " " + branch.Name + ":", Title: self.c.Tr.NewBranchNamePrompt + " " + branch.Name + ":",
InitialContent: branch.Name, InitialContent: branch.Name,
HandleConfirm: func(newBranchName string) error { HandleConfirm: func(newBranchName string) error {
@ -741,6 +751,8 @@ func (self *BranchesController) rename(branch *models.Branch) error {
return nil return nil
}, },
}) })
return nil
} }
// I could do an explicit check here for whether the branch is tracking a remote branch // I could do an explicit check here for whether the branch is tracking a remote branch
@ -750,11 +762,13 @@ func (self *BranchesController) rename(branch *models.Branch) error {
return promptForNewName() return promptForNewName()
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.RenameBranch, Title: self.c.Tr.RenameBranch,
Prompt: self.c.Tr.RenameBranchWarning, Prompt: self.c.Tr.RenameBranchWarning,
HandleConfirm: promptForNewName, HandleConfirm: promptForNewName,
}) })
return nil
} }
func (self *BranchesController) newBranch(selectedBranch *models.Branch) error { func (self *BranchesController) newBranch(selectedBranch *models.Branch) error {
@ -779,13 +793,15 @@ func (self *BranchesController) createPullRequestMenu(selectedBranch *models.Bra
{ {
LabelColumns: fromToLabelColumns(branch.Name, self.c.Tr.SelectBranch), LabelColumns: fromToLabelColumns(branch.Name, self.c.Tr.SelectBranch),
OnPress: func() error { OnPress: func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: branch.Name + " →", Title: branch.Name + " →",
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteBranchesSuggestionsFunc("/"), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteBranchesSuggestionsFunc("/"),
HandleConfirm: func(targetBranchName string) error { HandleConfirm: func(targetBranchName string) error {
return self.createPullRequest(branch.Name, targetBranchName) return self.createPullRequest(branch.Name, targetBranchName)
}, },
}) })
return nil
}, },
}, },
} }

View File

@ -186,7 +186,7 @@ func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileN
return err return err
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DiscardFileChangesTitle, Title: self.c.Tr.DiscardFileChangesTitle,
Prompt: self.c.Tr.DiscardFileChangesPrompt, Prompt: self.c.Tr.DiscardFileChangesPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -224,6 +224,8 @@ func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileN
}) })
}, },
}) })
return nil
} }
func (self *CommitFilesController) open(node *filetree.CommitFileNode) error { func (self *CommitFilesController) open(node *filetree.CommitFileNode) error {
@ -307,7 +309,7 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
from, to, reverse := self.currentFromToReverseForPatchBuilding() from, to, reverse := self.currentFromToReverseForPatchBuilding()
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) { if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DiscardPatch, Title: self.c.Tr.DiscardPatch,
Prompt: self.c.Tr.DiscardPatchConfirm, Prompt: self.c.Tr.DiscardPatchConfirm,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -315,6 +317,8 @@ func (self *CommitFilesController) toggleForPatch(selectedNodes []*filetree.Comm
return toggle() return toggle()
}, },
}) })
return nil
} }
return toggle() return toggle()
@ -365,7 +369,7 @@ func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode
from, to, reverse := self.currentFromToReverseForPatchBuilding() from, to, reverse := self.currentFromToReverseForPatchBuilding()
if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) { if self.c.Git().Patch.PatchBuilder.Active() && self.c.Git().Patch.PatchBuilder.NewPatchRequired(from, to, reverse) {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DiscardPatch, Title: self.c.Tr.DiscardPatch,
Prompt: self.c.Tr.DiscardPatchConfirm, Prompt: self.c.Tr.DiscardPatchConfirm,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -373,6 +377,8 @@ func (self *CommitFilesController) enterCommitFile(node *filetree.CommitFileNode
return enterTheFile() return enterTheFile()
}, },
}) })
return nil
} }
return enterTheFile() return enterTheFile()

View File

@ -174,13 +174,15 @@ func (self *CustomPatchOptionsMenuAction) handleMovePatchIntoWorkingTree() error
} }
if self.c.Helpers().WorkingTree.IsWorkingTreeDirty() { if self.c.Helpers().WorkingTree.IsWorkingTreeDirty() {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.MustStashTitle, Title: self.c.Tr.MustStashTitle,
Prompt: self.c.Tr.MustStashWarning, Prompt: self.c.Tr.MustStashWarning,
HandleConfirm: func() error { HandleConfirm: func() error {
return pull(true) return pull(true)
}, },
}) })
return nil
} else { } else {
return pull(false) return pull(false)
} }

View File

@ -33,7 +33,7 @@ func (self *DiffingMenuAction) Call() error {
{ {
Label: self.c.Tr.EnterRefToDiff, Label: self.c.Tr.EnterRefToDiff,
OnPress: func() error { OnPress: func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.EnterRefName, Title: self.c.Tr.EnterRefName,
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(),
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
@ -41,6 +41,8 @@ func (self *DiffingMenuAction) Call() error {
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
}, },
}) })
return nil
}, },
}, },
}...) }...)

View File

@ -601,13 +601,15 @@ func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, t
func (self *FilesController) ignoreOrExcludeFile(node *filetree.FileNode, trText string, trPrompt string, trAction string, f func(string) error) error { func (self *FilesController) ignoreOrExcludeFile(node *filetree.FileNode, trText string, trPrompt string, trAction string, f func(string) error) error {
if node.GetIsTracked() { if node.GetIsTracked() {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: trText, Title: trText,
Prompt: trPrompt, Prompt: trPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
return self.ignoreOrExcludeTracked(node, trAction, f) return self.ignoreOrExcludeTracked(node, trAction, f)
}, },
}) })
return nil
} }
return self.ignoreOrExcludeUntracked(node, trAction, f) return self.ignoreOrExcludeUntracked(node, trAction, f)
} }
@ -660,7 +662,7 @@ func (self *FilesController) refresh() error {
} }
func (self *FilesController) handleAmendCommitPress() error { func (self *FilesController) handleAmendCommitPress() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AmendLastCommitTitle, Title: self.c.Tr.AmendLastCommitTitle,
Prompt: self.c.Tr.SureToAmend, Prompt: self.c.Tr.SureToAmend,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -673,6 +675,8 @@ func (self *FilesController) handleAmendCommitPress() error {
}) })
}, },
}) })
return nil
} }
func (self *FilesController) handleStatusFilterPressed() error { func (self *FilesController) handleStatusFilterPressed() error {
@ -959,7 +963,7 @@ func (self *FilesController) toggleTreeView() error {
} }
func (self *FilesController) handleStashSave(stashFunc func(message string) error, action string) error { func (self *FilesController) handleStashSave(stashFunc func(message string) error, action string) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.StashChanges, Title: self.c.Tr.StashChanges,
HandleConfirm: func(stashComment string) error { HandleConfirm: func(stashComment string) error {
self.c.LogAction(action) self.c.LogAction(action)
@ -970,6 +974,8 @@ func (self *FilesController) handleStashSave(stashFunc func(message string) erro
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}}) return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}})
}, },
}) })
return nil
} }
func (self *FilesController) onClickMain(opts gocui.ViewMouseBindingOpts) error { func (self *FilesController) onClickMain(opts gocui.ViewMouseBindingOpts) error {

View File

@ -61,13 +61,15 @@ func (self *FilteringMenuAction) Call() error {
menuItems = append(menuItems, &types.MenuItem{ menuItems = append(menuItems, &types.MenuItem{
Label: self.c.Tr.FilterPathOption, Label: self.c.Tr.FilterPathOption,
OnPress: func() error { OnPress: func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetFilePathSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetFilePathSuggestionsFunc(),
Title: self.c.Tr.EnterFileName, Title: self.c.Tr.EnterFileName,
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
return self.setFilteringPath(strings.TrimSpace(response)) return self.setFilteringPath(strings.TrimSpace(response))
}, },
}) })
return nil
}, },
Tooltip: tooltip, Tooltip: tooltip,
}) })
@ -75,13 +77,15 @@ func (self *FilteringMenuAction) Call() error {
menuItems = append(menuItems, &types.MenuItem{ menuItems = append(menuItems, &types.MenuItem{
Label: self.c.Tr.FilterAuthorOption, Label: self.c.Tr.FilterAuthorOption,
OnPress: func() error { OnPress: func() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(),
Title: self.c.Tr.EnterAuthor, Title: self.c.Tr.EnterAuthor,
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
return self.setFilteringAuthor(strings.TrimSpace(response)) return self.setFilteringAuthor(strings.TrimSpace(response))
}, },
}) })
return nil
}, },
Tooltip: tooltip, Tooltip: tooltip,
}) })

View File

@ -54,7 +54,7 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er
return func() error { return func() error {
title := utils.ResolvePlaceholderString(self.c.Tr.NewGitFlowBranchPrompt, map[string]string{"branchType": branchType}) title := utils.ResolvePlaceholderString(self.c.Tr.NewGitFlowBranchPrompt, map[string]string{"branchType": branchType})
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: title, Title: title,
HandleConfirm: func(name string) error { HandleConfirm: func(name string) error {
self.c.LogAction(self.c.Tr.Actions.GitFlowStart) self.c.LogAction(self.c.Tr.Actions.GitFlowStart)
@ -63,6 +63,8 @@ func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) er
) )
}, },
}) })
return nil
} }
} }

View File

@ -13,7 +13,7 @@ func NewBisectHelper(c *HelperCommon) *BisectHelper {
} }
func (self *BisectHelper) Reset() error { func (self *BisectHelper) Reset() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Bisect.ResetTitle, Title: self.c.Tr.Bisect.ResetTitle,
Prompt: self.c.Tr.Bisect.ResetPrompt, Prompt: self.c.Tr.Bisect.ResetPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -25,6 +25,8 @@ func (self *BisectHelper) Reset() error {
return self.PostBisectCommandRefresh() return self.PostBisectCommandRefresh()
}, },
}) })
return nil
} }
func (self *BisectHelper) PostBisectCommandRefresh() error { func (self *BisectHelper) PostBisectCommandRefresh() error {

View File

@ -32,7 +32,7 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteName string, branchName st
"upstream": remoteName, "upstream": remoteName,
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: title, Title: title,
Prompt: prompt, Prompt: prompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -45,6 +45,8 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteName string, branchName st
}) })
}, },
}) })
return nil
} }
func ShortBranchName(fullBranchName string) string { func ShortBranchName(fullBranchName string) string {

View File

@ -63,7 +63,7 @@ func (self *CherryPickHelper) CopyRange(commitsList []*models.Commit, context ty
// HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied. // HandlePasteCommits begins a cherry-pick rebase with the commits the user has copied.
// Only to be called from the branch commits controller // Only to be called from the branch commits controller
func (self *CherryPickHelper) Paste() error { func (self *CherryPickHelper) Paste() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.CherryPick, Title: self.c.Tr.CherryPick,
Prompt: self.c.Tr.SureCherryPick, Prompt: self.c.Tr.SureCherryPick,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -108,6 +108,8 @@ func (self *CherryPickHelper) Paste() error {
}) })
}, },
}) })
return nil
} }
func (self *CherryPickHelper) CanPaste() bool { func (self *CherryPickHelper) CanPaste() bool {

View File

@ -231,7 +231,7 @@ func (self *CommitsHelper) OpenCommitMenu(suggestionFunc func(string) []*types.S
} }
func (self *CommitsHelper) addCoAuthor(suggestionFunc func(string) []*types.Suggestion) error { func (self *CommitsHelper) addCoAuthor(suggestionFunc func(string) []*types.Suggestion) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.AddCoAuthorPromptTitle, Title: self.c.Tr.AddCoAuthorPromptTitle,
FindSuggestionsFunc: suggestionFunc, FindSuggestionsFunc: suggestionFunc,
HandleConfirm: func(value string) error { HandleConfirm: func(value string) error {
@ -241,6 +241,8 @@ func (self *CommitsHelper) addCoAuthor(suggestionFunc func(string) []*types.Sugg
return nil return nil
}, },
}) })
return nil
} }
func (self *CommitsHelper) pasteCommitMessageFromClipboard() error { func (self *CommitsHelper) pasteCommitMessageFromClipboard() error {
@ -258,7 +260,7 @@ func (self *CommitsHelper) pasteCommitMessageFromClipboard() error {
} }
// Confirm before overwriting the commit message // Confirm before overwriting the commit message
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.PasteCommitMessageFromClipboard, Title: self.c.Tr.PasteCommitMessageFromClipboard,
Prompt: self.c.Tr.SurePasteCommitMessage, Prompt: self.c.Tr.SurePasteCommitMessage,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -266,4 +268,6 @@ func (self *CommitsHelper) pasteCommitMessageFromClipboard() error {
return nil return nil
}, },
}) })
return nil
} }

View File

@ -27,7 +27,7 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr
self.c.OnUIThread(func() error { self.c.OnUIThread(func() error {
title, mask := self.getTitleAndMask(passOrUname) title, mask := self.getTitleAndMask(passOrUname)
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: title, Title: title,
Mask: mask, Mask: mask,
HandleConfirm: func(input string) error { HandleConfirm: func(input string) error {
@ -41,6 +41,8 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr
return nil return nil
}, },
}) })
return nil
}) })
return ch return ch

View File

@ -142,13 +142,15 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error {
} }
if warnAboutAddedLines { if warnAboutAddedLines {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.FindBaseCommitForFixup, Title: self.c.Tr.FindBaseCommitForFixup,
Prompt: self.c.Tr.HunksWithOnlyAddedLinesWarning, Prompt: self.c.Tr.HunksWithOnlyAddedLinesWarning,
HandleConfirm: func() error { HandleConfirm: func() error {
return doIt() return doIt()
}, },
}) })
return nil
} }
return doIt() return doIt()

View File

@ -221,13 +221,15 @@ func (self *MergeAndRebaseHelper) PromptForConflictHandling() error {
func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error { func (self *MergeAndRebaseHelper) AbortMergeOrRebaseWithConfirm() error {
// prompt user to confirm that they want to abort, then do it // prompt user to confirm that they want to abort, then do it
mode := self.workingTreeStateNoun() mode := self.workingTreeStateNoun()
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: fmt.Sprintf(self.c.Tr.AbortTitle, mode), Title: fmt.Sprintf(self.c.Tr.AbortTitle, mode),
Prompt: fmt.Sprintf(self.c.Tr.AbortPrompt, mode), Prompt: fmt.Sprintf(self.c.Tr.AbortPrompt, mode),
HandleConfirm: func() error { HandleConfirm: func() error {
return self.genericMergeCommand(REBASE_OPTION_ABORT) return self.genericMergeCommand(REBASE_OPTION_ABORT)
}, },
}) })
return nil
} }
func (self *MergeAndRebaseHelper) workingTreeStateNoun() string { func (self *MergeAndRebaseHelper) workingTreeStateNoun() string {
@ -244,7 +246,7 @@ func (self *MergeAndRebaseHelper) workingTreeStateNoun() string {
// PromptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress // PromptToContinueRebase asks the user if they want to continue the rebase/merge that's in progress
func (self *MergeAndRebaseHelper) PromptToContinueRebase() error { func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Continue, Title: self.c.Tr.Continue,
Prompt: self.c.Tr.ConflictsResolved, Prompt: self.c.Tr.ConflictsResolved,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -264,7 +266,7 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
root := self.c.Contexts().Files.FileTreeViewModel.GetRoot() root := self.c.Contexts().Files.FileTreeViewModel.GetRoot()
if root.GetHasUnstagedChanges() { if root.GetHasUnstagedChanges() {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Continue, Title: self.c.Tr.Continue,
Prompt: self.c.Tr.UnstagedFilesAfterConflictsResolved, Prompt: self.c.Tr.UnstagedFilesAfterConflictsResolved,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -276,11 +278,15 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
return self.genericMergeCommand(REBASE_OPTION_CONTINUE) return self.genericMergeCommand(REBASE_OPTION_CONTINUE)
}, },
}) })
return nil
} }
return self.genericMergeCommand(REBASE_OPTION_CONTINUE) return self.genericMergeCommand(REBASE_OPTION_CONTINUE)
}, },
}) })
return nil
} }
func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error { func (self *MergeAndRebaseHelper) RebaseOntoRef(ref string) error {

View File

@ -79,7 +79,7 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions
self.c.OnUIThread(func() error { self.c.OnUIThread(func() error {
// (Before showing the prompt, render again to remove the inline status) // (Before showing the prompt, render again to remove the inline status)
self.c.Contexts().Branches.HandleRender() self.c.Contexts().Branches.HandleRender()
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AutoStashTitle, Title: self.c.Tr.AutoStashTitle,
Prompt: self.c.Tr.AutoStashPrompt, Prompt: self.c.Tr.AutoStashPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -97,6 +97,8 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions
}) })
}, },
}) })
return nil
}) })
return nil return nil
} }
@ -292,7 +294,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true}) return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
} }
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: message, Title: message,
InitialContent: suggestedBranchName, InitialContent: suggestedBranchName,
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
@ -305,7 +307,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
if err := newBranchFunc(newBranchName, from); err != nil { if err := newBranchFunc(newBranchName, from); err != nil {
if IsSwitchBranchUncommitedChangesError(err) { if IsSwitchBranchUncommitedChangesError(err) {
// offer to autostash changes // offer to autostash changes
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AutoStashTitle, Title: self.c.Tr.AutoStashTitle,
Prompt: self.c.Tr.AutoStashPrompt, Prompt: self.c.Tr.AutoStashPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -325,6 +327,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
return refreshError return refreshError
}, },
}) })
return nil
} }
return err return err
@ -333,6 +337,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
return refresh() return refresh()
}, },
}) })
return nil
} }
// SanitizedBranchName will remove all spaces in favor of a dash "-" to meet // SanitizedBranchName will remove all spaces in favor of a dash "-" to meet

View File

@ -52,16 +52,18 @@ func (self *TagsHelper) OpenCreateTagPrompt(ref string, onCreate func()) error {
"confirmKey": self.c.UserConfig().Keybinding.Universal.Confirm, "confirmKey": self.c.UserConfig().Keybinding.Universal.Confirm,
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ForceTag, Title: self.c.Tr.ForceTag,
Prompt: prompt, Prompt: prompt,
HandleConfirm: func() error { HandleConfirm: func() error {
return doCreateTag(tagName, description, true) return doCreateTag(tagName, description, true)
}, },
}) })
} else {
return doCreateTag(tagName, description, false) return nil
} }
return doCreateTag(tagName, description, false)
} }
return self.commitsHelper.OpenCommitMessagePanel( return self.commitsHelper.OpenCommitMessagePanel(

View File

@ -75,7 +75,8 @@ func (self *UpdateHelper) onUpdateFinish(err error) error {
) )
return errors.New(errMessage) return errors.New(errMessage)
} }
return self.c.Alert(self.c.Tr.UpdateCompletedTitle, self.c.Tr.UpdateCompleted) self.c.Alert(self.c.Tr.UpdateCompletedTitle, self.c.Tr.UpdateCompleted)
return nil
}) })
return nil return nil
@ -88,7 +89,7 @@ func (self *UpdateHelper) showUpdatePrompt(newVersion string) error {
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.UpdateAvailableTitle, Title: self.c.Tr.UpdateAvailableTitle,
Prompt: message, Prompt: message,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -96,4 +97,6 @@ func (self *UpdateHelper) showUpdatePrompt(newVersion string) error {
return nil return nil
}, },
}) })
return nil
} }

View File

@ -47,12 +47,14 @@ func (self *UpstreamHelper) ParseUpstream(upstream string) (string, string, erro
} }
func (self *UpstreamHelper) promptForUpstream(initialContent string, onConfirm func(string) error) error { func (self *UpstreamHelper) promptForUpstream(initialContent string, onConfirm func(string) error) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.EnterUpstream, Title: self.c.Tr.EnterUpstream,
InitialContent: initialContent, InitialContent: initialContent,
FindSuggestionsFunc: self.getRemoteBranchesSuggestionsFunc(" "), FindSuggestionsFunc: self.getRemoteBranchesSuggestionsFunc(" "),
HandleConfirm: onConfirm, HandleConfirm: onConfirm,
}) })
return nil
} }
func (self *UpstreamHelper) PromptForUpstreamWithInitialContent(currentBranch *models.Branch, onConfirm func(string) error) error { func (self *UpstreamHelper) PromptForUpstreamWithInitialContent(currentBranch *models.Branch, onConfirm func(string) error) error {

View File

@ -72,7 +72,7 @@ func (self *WorkingTreeHelper) FileForSubmodule(submodule *models.SubmoduleConfi
} }
func (self *WorkingTreeHelper) OpenMergeTool() error { func (self *WorkingTreeHelper) OpenMergeTool() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.MergeToolTitle, Title: self.c.Tr.MergeToolTitle,
Prompt: self.c.Tr.MergeToolPrompt, Prompt: self.c.Tr.MergeToolPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -82,6 +82,8 @@ func (self *WorkingTreeHelper) OpenMergeTool() error {
) )
}, },
}) })
return nil
} }
func (self *WorkingTreeHelper) HandleCommitPressWithMessage(initialMessage string) error { func (self *WorkingTreeHelper) HandleCommitPressWithMessage(initialMessage string) error {
@ -185,7 +187,7 @@ func (self *WorkingTreeHelper) WithEnsureCommitableFiles(handler func() error) e
} }
func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) error { func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.NoFilesStagedTitle, Title: self.c.Tr.NoFilesStagedTitle,
Prompt: self.c.Tr.NoFilesStagedPrompt, Prompt: self.c.Tr.NoFilesStagedPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -200,6 +202,8 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro
return retry() return retry()
}, },
}) })
return nil
} }
// for when you need to refetch files before continuing an action. Runs synchronously. // for when you need to refetch files before continuing an action. Runs synchronously.

View File

@ -63,8 +63,8 @@ func (self *WorktreeHelper) NewWorktree() error {
branch := self.refsHelper.GetCheckedOutRef() branch := self.refsHelper.GetCheckedOutRef()
currentBranchName := branch.RefName() currentBranchName := branch.RefName()
f := func(detached bool) error { f := func(detached bool) {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewWorktreeBase, Title: self.c.Tr.NewWorktreeBase,
InitialContent: currentBranchName, InitialContent: currentBranchName,
FindSuggestionsFunc: self.suggestionsHelper.GetRefsSuggestionsFunc(), FindSuggestionsFunc: self.suggestionsHelper.GetRefsSuggestionsFunc(),
@ -84,13 +84,15 @@ func (self *WorktreeHelper) NewWorktree() error {
{ {
LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFrom, placeholders)}, LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFrom, placeholders)},
OnPress: func() error { OnPress: func() error {
return f(false) f(false)
return nil
}, },
}, },
{ {
LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFromDetached, placeholders)}, LabelColumns: []string{utils.ResolvePlaceholderString(self.c.Tr.CreateWorktreeFromDetached, placeholders)},
OnPress: func() error { OnPress: func() error {
return f(true) f(true)
return nil
}, },
}, },
}, },
@ -114,7 +116,7 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo
}) })
} }
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewWorktreePath, Title: self.c.Tr.NewWorktreePath,
HandleConfirm: func(path string) error { HandleConfirm: func(path string) error {
opts.Path = path opts.Path = path
@ -126,7 +128,7 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo
if canCheckoutBase { if canCheckoutBase {
title := utils.ResolvePlaceholderString(self.c.Tr.NewBranchNameLeaveBlank, map[string]string{"default": base}) title := utils.ResolvePlaceholderString(self.c.Tr.NewBranchNameLeaveBlank, map[string]string{"default": base})
// prompt for the new branch name where a blank means we just check out the branch // prompt for the new branch name where a blank means we just check out the branch
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: title, Title: title,
HandleConfirm: func(branchName string) error { HandleConfirm: func(branchName string) error {
opts.Branch = branchName opts.Branch = branchName
@ -134,9 +136,11 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo
return f() return f()
}, },
}) })
return nil
} else { } else {
// prompt for the new branch name where a blank means we just check out the branch // prompt for the new branch name where a blank means we just check out the branch
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewBranchName, Title: self.c.Tr.NewBranchName,
HandleConfirm: func(branchName string) error { HandleConfirm: func(branchName string) error {
if branchName == "" { if branchName == "" {
@ -148,9 +152,13 @@ func (self *WorktreeHelper) NewWorktreeCheckout(base string, canCheckoutBase boo
return f() return f()
}, },
}) })
return nil
} }
}, },
}) })
return nil
} }
func (self *WorktreeHelper) Switch(worktree *models.Worktree, contextKey types.ContextKey) error { func (self *WorktreeHelper) Switch(worktree *models.Worktree, contextKey types.ContextKey) error {
@ -178,7 +186,7 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: title, Title: title,
Prompt: message, Prompt: message,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -199,6 +207,8 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error
}) })
}, },
}) })
return nil
} }
func (self *WorktreeHelper) Detach(worktree *models.Worktree) error { func (self *WorktreeHelper) Detach(worktree *models.Worktree) error {

View File

@ -325,7 +325,7 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit,
return self.updateTodos(todo.Squash, selectedCommits) return self.updateTodos(todo.Squash, selectedCommits)
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Squash, Title: self.c.Tr.Squash,
Prompt: self.c.Tr.SureSquashThisCommit, Prompt: self.c.Tr.SureSquashThisCommit,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -335,6 +335,8 @@ func (self *LocalCommitsController) squashDown(selectedCommits []*models.Commit,
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, startIdx int, endIdx int) error { func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, startIdx int, endIdx int) error {
@ -342,7 +344,7 @@ func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, star
return self.updateTodos(todo.Fixup, selectedCommits) return self.updateTodos(todo.Fixup, selectedCommits)
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Fixup, Title: self.c.Tr.Fixup,
Prompt: self.c.Tr.SureFixupThisCommit, Prompt: self.c.Tr.SureFixupThisCommit,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -352,6 +354,8 @@ func (self *LocalCommitsController) fixup(selectedCommits []*models.Commit, star
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) reword(commit *models.Commit) error { func (self *LocalCommitsController) reword(commit *models.Commit) error {
@ -442,13 +446,15 @@ func (self *LocalCommitsController) doRewordEditor() error {
func (self *LocalCommitsController) rewordEditor(commit *models.Commit) error { func (self *LocalCommitsController) rewordEditor(commit *models.Commit) error {
if self.c.UserConfig().Gui.SkipRewordInEditorWarning { if self.c.UserConfig().Gui.SkipRewordInEditorWarning {
return self.doRewordEditor() return self.doRewordEditor()
} else {
return self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.RewordInEditorTitle,
Prompt: self.c.Tr.RewordInEditorPrompt,
HandleConfirm: self.doRewordEditor,
})
} }
self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.RewordInEditorTitle,
Prompt: self.c.Tr.RewordInEditorPrompt,
HandleConfirm: self.doRewordEditor,
})
return nil
} }
func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, startIdx int, endIdx int) error { func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, startIdx int, endIdx int) error {
@ -460,7 +466,7 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start
nonUpdateRefTodos := groupedTodos[false] nonUpdateRefTodos := groupedTodos[false]
if len(updateRefTodos) > 0 { if len(updateRefTodos) > 0 {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DropCommitTitle, Title: self.c.Tr.DropCommitTitle,
Prompt: self.c.Tr.DropUpdateRefPrompt, Prompt: self.c.Tr.DropUpdateRefPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -481,12 +487,14 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start
return self.updateTodos(todo.Drop, nonUpdateRefTodos) return self.updateTodos(todo.Drop, nonUpdateRefTodos)
}, },
}) })
return nil
} }
return self.updateTodos(todo.Drop, selectedCommits) return self.updateTodos(todo.Drop, selectedCommits)
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DropCommitTitle, Title: self.c.Tr.DropCommitTitle,
Prompt: self.c.Tr.DropCommitPrompt, Prompt: self.c.Tr.DropCommitPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -496,6 +504,8 @@ func (self *LocalCommitsController) drop(selectedCommits []*models.Commit, start
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) edit(selectedCommits []*models.Commit) error { func (self *LocalCommitsController) edit(selectedCommits []*models.Commit) error {
@ -680,7 +690,7 @@ func (self *LocalCommitsController) moveUp(selectedCommits []*models.Commit, sta
func (self *LocalCommitsController) amendTo(commit *models.Commit) error { func (self *LocalCommitsController) amendTo(commit *models.Commit) error {
if self.isSelectedHeadCommit() { if self.isSelectedHeadCommit() {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AmendCommitTitle, Title: self.c.Tr.AmendCommitTitle,
Prompt: self.c.Tr.AmendCommitPrompt, Prompt: self.c.Tr.AmendCommitPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -692,9 +702,11 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error {
}) })
}, },
}) })
return nil
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AmendCommitTitle, Title: self.c.Tr.AmendCommitTitle,
Prompt: self.c.Tr.AmendCommitPrompt, Prompt: self.c.Tr.AmendCommitPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -707,6 +719,8 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error {
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) canAmendRange(commits []*models.Commit, start, end int) *types.DisabledReason { func (self *LocalCommitsController) canAmendRange(commits []*models.Commit, start, end int) *types.DisabledReason {
@ -761,7 +775,7 @@ func (self *LocalCommitsController) resetAuthor(start, end int) error {
} }
func (self *LocalCommitsController) setAuthor(start, end int) error { func (self *LocalCommitsController) setAuthor(start, end int) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.SetAuthorPromptTitle, Title: self.c.Tr.SetAuthorPromptTitle,
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(),
HandleConfirm: func(value string) error { HandleConfirm: func(value string) error {
@ -775,10 +789,12 @@ func (self *LocalCommitsController) setAuthor(start, end int) error {
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) addCoAuthor(start, end int) error { func (self *LocalCommitsController) addCoAuthor(start, end int) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.AddCoAuthorPromptTitle, Title: self.c.Tr.AddCoAuthorPromptTitle,
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetAuthorsSuggestionsFunc(),
HandleConfirm: func(value string) error { HandleConfirm: func(value string) error {
@ -791,30 +807,34 @@ func (self *LocalCommitsController) addCoAuthor(start, end int) error {
}) })
}, },
}) })
return nil
} }
func (self *LocalCommitsController) revert(commit *models.Commit) error { func (self *LocalCommitsController) revert(commit *models.Commit) error {
if commit.IsMerge() { if commit.IsMerge() {
return self.createRevertMergeCommitMenu(commit) return self.createRevertMergeCommitMenu(commit)
} else {
return self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.RevertCommit,
Prompt: utils.ResolvePlaceholderString(
self.c.Tr.ConfirmRevertCommit,
map[string]string{
"selectedCommit": commit.ShortHash(),
}),
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.RevertCommit)
return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error {
if err := self.c.Git().Commit.Revert(commit.Hash); err != nil {
return err
}
return self.afterRevertCommit()
})
},
})
} }
self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.RevertCommit,
Prompt: utils.ResolvePlaceholderString(
self.c.Tr.ConfirmRevertCommit,
map[string]string{
"selectedCommit": commit.ShortHash(),
}),
HandleConfirm: func() error {
self.c.LogAction(self.c.Tr.Actions.RevertCommit)
return self.c.WithWaitingStatusSync(self.c.Tr.RevertingStatus, func() error {
if err := self.c.Git().Commit.Revert(commit.Hash); err != nil {
return err
}
return self.afterRevertCommit()
})
},
})
return nil
} }
func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.Commit) error { func (self *LocalCommitsController) createRevertMergeCommitMenu(commit *models.Commit) error {

View File

@ -26,26 +26,30 @@ func (self *QuitActions) quitAux() error {
} }
if self.c.UserConfig().ConfirmOnQuit { if self.c.UserConfig().ConfirmOnQuit {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: "", Title: "",
Prompt: self.c.Tr.ConfirmQuit, Prompt: self.c.Tr.ConfirmQuit,
HandleConfirm: func() error { HandleConfirm: func() error {
return gocui.ErrQuit return gocui.ErrQuit
}, },
}) })
return nil
} }
return gocui.ErrQuit return gocui.ErrQuit
} }
func (self *QuitActions) confirmQuitDuringUpdate() error { func (self *QuitActions) confirmQuitDuringUpdate() error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ConfirmQuitDuringUpdateTitle, Title: self.c.Tr.ConfirmQuitDuringUpdateTitle,
Prompt: self.c.Tr.ConfirmQuitDuringUpdate, Prompt: self.c.Tr.ConfirmQuitDuringUpdate,
HandleConfirm: func() error { HandleConfirm: func() error {
return gocui.ErrQuit return gocui.ErrQuit
}, },
}) })
return nil
} }
func (self *QuitActions) Escape() error { func (self *QuitActions) Escape() error {

View File

@ -172,7 +172,7 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.SetUpstreamTitle, Title: self.c.Tr.SetUpstreamTitle,
Prompt: message, Prompt: message,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -184,6 +184,8 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
}, },
}) })
return nil
} }
func (self *RemoteBranchesController) newLocalBranch(selectedBranch *models.RemoteBranch) error { func (self *RemoteBranchesController) newLocalBranch(selectedBranch *models.RemoteBranch) error {

View File

@ -136,10 +136,10 @@ func (self *RemotesController) enter(remote *models.Remote) error {
} }
func (self *RemotesController) add() error { func (self *RemotesController) add() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewRemoteName, Title: self.c.Tr.NewRemoteName,
HandleConfirm: func(remoteName string) error { HandleConfirm: func(remoteName string) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewRemoteUrl, Title: self.c.Tr.NewRemoteUrl,
HandleConfirm: func(remoteUrl string) error { HandleConfirm: func(remoteUrl string) error {
self.c.LogAction(self.c.Tr.Actions.AddRemote) self.c.LogAction(self.c.Tr.Actions.AddRemote)
@ -169,12 +169,16 @@ func (self *RemotesController) add() error {
return self.fetch(self.c.Contexts().Remotes.GetSelected()) return self.fetch(self.c.Contexts().Remotes.GetSelected())
}, },
}) })
return nil
}, },
}) })
return nil
} }
func (self *RemotesController) remove(remote *models.Remote) error { func (self *RemotesController) remove(remote *models.Remote) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.RemoveRemote, Title: self.c.Tr.RemoveRemote,
Prompt: self.c.Tr.RemoveRemotePrompt + " '" + remote.Name + "'?", Prompt: self.c.Tr.RemoveRemotePrompt + " '" + remote.Name + "'?",
HandleConfirm: func() error { HandleConfirm: func() error {
@ -186,6 +190,8 @@ func (self *RemotesController) remove(remote *models.Remote) error {
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
}, },
}) })
return nil
} }
func (self *RemotesController) edit(remote *models.Remote) error { func (self *RemotesController) edit(remote *models.Remote) error {
@ -196,7 +202,7 @@ func (self *RemotesController) edit(remote *models.Remote) error {
}, },
) )
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: editNameMessage, Title: editNameMessage,
InitialContent: remote.Name, InitialContent: remote.Name,
HandleConfirm: func(updatedRemoteName string) error { HandleConfirm: func(updatedRemoteName string) error {
@ -220,7 +226,7 @@ func (self *RemotesController) edit(remote *models.Remote) error {
url = urls[0] url = urls[0]
} }
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: editUrlMessage, Title: editUrlMessage,
InitialContent: url, InitialContent: url,
HandleConfirm: func(updatedRemoteUrl string) error { HandleConfirm: func(updatedRemoteUrl string) error {
@ -231,8 +237,12 @@ func (self *RemotesController) edit(remote *models.Remote) error {
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}}) return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
}, },
}) })
return nil
}, },
}) })
return nil
} }
func (self *RemotesController) fetch(remote *models.Remote) error { func (self *RemotesController) fetch(remote *models.Remote) error {

View File

@ -15,7 +15,7 @@ type ShellCommandAction struct {
} }
func (self *ShellCommandAction) Call() error { func (self *ShellCommandAction) Call() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.ShellCommand, Title: self.c.Tr.ShellCommand,
FindSuggestionsFunc: self.GetShellCommandsHistorySuggestionsFunc(), FindSuggestionsFunc: self.GetShellCommandsHistorySuggestionsFunc(),
AllowEditSuggestion: true, AllowEditSuggestion: true,
@ -54,6 +54,8 @@ func (self *ShellCommandAction) Call() error {
return nil return nil
}, },
}) })
return nil
} }
func (self *ShellCommandAction) GetShellCommandsHistorySuggestionsFunc() func(string) []*types.Suggestion { func (self *ShellCommandAction) GetShellCommandsHistorySuggestionsFunc() func(string) []*types.Suggestion {

View File

@ -191,11 +191,13 @@ func (self *StagingController) DiscardSelection() error {
reset := func() error { return self.applySelectionAndRefresh(true) } reset := func() error { return self.applySelectionAndRefresh(true) }
if !self.staged && !self.c.UserConfig().Gui.SkipDiscardChangeWarning { if !self.staged && !self.c.UserConfig().Gui.SkipDiscardChangeWarning {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.DiscardChangeTitle, Title: self.c.Tr.DiscardChangeTitle,
Prompt: self.c.Tr.DiscardChangePrompt, Prompt: self.c.Tr.DiscardChangePrompt,
HandleConfirm: reset, HandleConfirm: reset,
}) })
return nil
} }
return reset() return reset()

View File

@ -118,13 +118,15 @@ func (self *StashController) handleStashApply(stashEntry *models.StashEntry) err
return apply() return apply()
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.StashApply, Title: self.c.Tr.StashApply,
Prompt: self.c.Tr.SureApplyStashEntry, Prompt: self.c.Tr.SureApplyStashEntry,
HandleConfirm: func() error { HandleConfirm: func() error {
return apply() return apply()
}, },
}) })
return nil
} }
func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error { func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error {
@ -142,17 +144,19 @@ func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error
return pop() return pop()
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.StashPop, Title: self.c.Tr.StashPop,
Prompt: self.c.Tr.SurePopStashEntry, Prompt: self.c.Tr.SurePopStashEntry,
HandleConfirm: func() error { HandleConfirm: func() error {
return pop() return pop()
}, },
}) })
return nil
} }
func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) error { func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.StashDrop, Title: self.c.Tr.StashDrop,
Prompt: self.c.Tr.SureDropStashEntry, Prompt: self.c.Tr.SureDropStashEntry,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -165,6 +169,8 @@ func (self *StashController) handleStashDrop(stashEntry *models.StashEntry) erro
return nil return nil
}, },
}) })
return nil
} }
func (self *StashController) postStashRefresh() error { func (self *StashController) postStashRefresh() error {
@ -183,7 +189,7 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr
}, },
) )
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: message, Title: message,
InitialContent: stashEntry.Name, InitialContent: stashEntry.Name,
HandleConfirm: func(response string) error { HandleConfirm: func(response string) error {
@ -198,4 +204,6 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr
return nil return nil
}, },
}) })
return nil
} }

View File

@ -146,16 +146,16 @@ func (self *SubmodulesController) enter(submodule *models.SubmoduleConfig) error
} }
func (self *SubmodulesController) add() error { func (self *SubmodulesController) add() error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewSubmoduleUrl, Title: self.c.Tr.NewSubmoduleUrl,
HandleConfirm: func(submoduleUrl string) error { HandleConfirm: func(submoduleUrl string) error {
nameSuggestion := filepath.Base(strings.TrimSuffix(submoduleUrl, filepath.Ext(submoduleUrl))) nameSuggestion := filepath.Base(strings.TrimSuffix(submoduleUrl, filepath.Ext(submoduleUrl)))
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewSubmoduleName, Title: self.c.Tr.NewSubmoduleName,
InitialContent: nameSuggestion, InitialContent: nameSuggestion,
HandleConfirm: func(submoduleName string) error { HandleConfirm: func(submoduleName string) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: self.c.Tr.NewSubmodulePath, Title: self.c.Tr.NewSubmodulePath,
InitialContent: submoduleName, InitialContent: submoduleName,
HandleConfirm: func(submodulePath string) error { HandleConfirm: func(submodulePath string) error {
@ -170,14 +170,20 @@ func (self *SubmodulesController) add() error {
}) })
}, },
}) })
return nil
}, },
}) })
return nil
}, },
}) })
return nil
} }
func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) error { func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) error {
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: fmt.Sprintf(self.c.Tr.UpdateSubmoduleUrl, submodule.FullName()), Title: fmt.Sprintf(self.c.Tr.UpdateSubmoduleUrl, submodule.FullName()),
InitialContent: submodule.Url, InitialContent: submodule.Url,
HandleConfirm: func(newUrl string) error { HandleConfirm: func(newUrl string) error {
@ -192,6 +198,8 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err
}) })
}, },
}) })
return nil
} }
func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error { func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error {
@ -270,7 +278,7 @@ func (self *SubmodulesController) update(submodule *models.SubmoduleConfig) erro
} }
func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) error { func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.RemoveSubmodule, Title: self.c.Tr.RemoveSubmodule,
Prompt: fmt.Sprintf(self.c.Tr.RemoveSubmodulePrompt, submodule.FullName()), Prompt: fmt.Sprintf(self.c.Tr.RemoveSubmodulePrompt, submodule.FullName()),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -282,6 +290,8 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}}) return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}})
}, },
}) })
return nil
} }
func (self *SubmodulesController) easterEgg() error { func (self *SubmodulesController) easterEgg() error {

View File

@ -214,7 +214,7 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts)
if forcePushDisabled { if forcePushDisabled {
return errors.New(self.c.Tr.UpdatesRejectedAndForcePushDisabled) return errors.New(self.c.Tr.UpdatesRejectedAndForcePushDisabled)
} }
_ = self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ForcePush, Title: self.c.Tr.ForcePush,
Prompt: self.forcePushPrompt(), Prompt: self.forcePushPrompt(),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -238,7 +238,7 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt
return errors.New(self.c.Tr.ForcePushDisabled) return errors.New(self.c.Tr.ForcePushDisabled)
} }
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.ForcePush, Title: self.c.Tr.ForcePush,
Prompt: self.forcePushPrompt(), Prompt: self.forcePushPrompt(),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -246,6 +246,8 @@ func (self *SyncController) requestToForcePush(currentBranch *models.Branch, opt
return self.pushAux(currentBranch, opts) return self.pushAux(currentBranch, opts)
}, },
}) })
return nil
} }
func (self *SyncController) forcePushPrompt() string { func (self *SyncController) forcePushPrompt() string {

View File

@ -136,7 +136,7 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error {
}, },
) )
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: title, Title: title,
InitialContent: "origin", InitialContent: "origin",
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(),
@ -155,7 +155,7 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error {
}, },
) )
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: confirmTitle, Title: confirmTitle,
Prompt: confirmPrompt, Prompt: confirmPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -169,8 +169,12 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error {
}) })
}, },
}) })
return nil
}, },
}) })
return nil
} }
func (self *TagsController) delete(tag *models.Tag) error { func (self *TagsController) delete(tag *models.Tag) error {
@ -213,7 +217,7 @@ func (self *TagsController) push(tag *models.Tag) error {
}, },
) )
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: title, Title: title,
InitialContent: "origin", InitialContent: "origin",
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(), FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRemoteSuggestionsFunc(),
@ -232,6 +236,8 @@ func (self *TagsController) push(tag *models.Tag) error {
}) })
}, },
}) })
return nil
} }
func (self *TagsController) createResetMenu(tag *models.Tag) error { func (self *TagsController) createResetMenu(tag *models.Tag) error {

View File

@ -89,7 +89,7 @@ func (self *UndoController) reflogUndo() error {
switch action.kind { switch action.kind {
case COMMIT, REBASE: case COMMIT, REBASE:
return true, self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.Undo, Title: self.c.Tr.Actions.Undo,
Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.from), Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.from),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -100,8 +100,10 @@ func (self *UndoController) reflogUndo() error {
}) })
}, },
}) })
return true, nil
case CHECKOUT: case CHECKOUT:
return true, self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.Undo, Title: self.c.Tr.Actions.Undo,
Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.from), Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.from),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -112,6 +114,7 @@ func (self *UndoController) reflogUndo() error {
}) })
}, },
}) })
return true, nil
case CURRENT_REBASE: case CURRENT_REBASE:
// do nothing // do nothing
@ -140,7 +143,7 @@ func (self *UndoController) reflogRedo() error {
switch action.kind { switch action.kind {
case COMMIT, REBASE: case COMMIT, REBASE:
return true, self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.Redo, Title: self.c.Tr.Actions.Redo,
Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.to), Prompt: fmt.Sprintf(self.c.Tr.HardResetAutostashPrompt, action.to),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -151,9 +154,10 @@ func (self *UndoController) reflogRedo() error {
}) })
}, },
}) })
return true, nil
case CHECKOUT: case CHECKOUT:
return true, self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.Actions.Redo, Title: self.c.Tr.Actions.Redo,
Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.to), Prompt: fmt.Sprintf(self.c.Tr.CheckoutPrompt, action.to),
HandleConfirm: func() error { HandleConfirm: func() error {
@ -164,6 +168,8 @@ func (self *UndoController) reflogRedo() error {
}) })
}, },
}) })
return true, nil
case CURRENT_REBASE: case CURRENT_REBASE:
// do nothing // do nothing
} }
@ -242,7 +248,7 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha
dirtyWorkingTree := self.c.Helpers().WorkingTree.IsWorkingTreeDirty() dirtyWorkingTree := self.c.Helpers().WorkingTree.IsWorkingTreeDirty()
if dirtyWorkingTree { if dirtyWorkingTree {
// offer to autostash changes // offer to autostash changes
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: self.c.Tr.AutoStashTitle, Title: self.c.Tr.AutoStashTitle,
Prompt: self.c.Tr.AutoStashPrompt, Prompt: self.c.Tr.AutoStashPrompt,
HandleConfirm: func() error { HandleConfirm: func() error {
@ -262,6 +268,7 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha
}) })
}, },
}) })
return nil
} }
return self.c.WithWaitingStatus(options.WaitingStatus, func(gocui.Task) error { return self.c.WithWaitingStatus(options.WaitingStatus, func(gocui.Task) error {

View File

@ -505,10 +505,12 @@ func (gui *Gui) checkForChangedConfigsThatDontAutoReload(oldConfig *config.UserC
"configs": strings.Join(changedConfigs, "\n"), "configs": strings.Join(changedConfigs, "\n"),
}, },
) )
return gui.c.Confirm(types.ConfirmOpts{ gui.c.Confirm(types.ConfirmOpts{
Title: gui.c.Tr.NonReloadableConfigWarningTitle, Title: gui.c.Tr.NonReloadableConfigWarningTitle,
Prompt: message, Prompt: message,
}) })
return nil
} }
// resetState reuses the repo state from our repo state map, if the repo was // resetState reuses the repo state from our repo state map, if the repo was
@ -1001,12 +1003,14 @@ func (gui *Gui) showIntroPopupMessage() {
return err return err
} }
return gui.c.Confirm(types.ConfirmOpts{ gui.c.Confirm(types.ConfirmOpts{
Title: "", Title: "",
Prompt: gui.c.Tr.IntroPopupMessage, Prompt: gui.c.Tr.IntroPopupMessage,
HandleConfirm: onConfirm, HandleConfirm: onConfirm,
HandleClose: onConfirm, HandleClose: onConfirm,
}) })
return nil
}) })
} }
@ -1066,12 +1070,13 @@ func (gui *Gui) showBreakingChangesMessage() {
return nil return nil
} }
return gui.c.Confirm(types.ConfirmOpts{ gui.c.Confirm(types.ConfirmOpts{
Title: gui.Tr.BreakingChangesTitle, Title: gui.Tr.BreakingChangesTitle,
Prompt: gui.Tr.BreakingChangesMessage + "\n\n" + message, Prompt: gui.Tr.BreakingChangesMessage + "\n\n" + message,
HandleConfirm: onConfirm, HandleConfirm: onConfirm,
HandleClose: onConfirm, HandleClose: onConfirm,
}) })
return nil
}) })
} }
} }

View File

@ -33,7 +33,7 @@ func (gui *Gui) outsideFilterMode(f func() error) func() error {
func (gui *Gui) validateNotInFilterMode() bool { func (gui *Gui) validateNotInFilterMode() bool {
if gui.State.Modes.Filtering.Active() { if gui.State.Modes.Filtering.Active() {
_ = gui.c.Confirm(types.ConfirmOpts{ gui.c.Confirm(types.ConfirmOpts{
Title: gui.c.Tr.MustExitFilterModeTitle, Title: gui.c.Tr.MustExitFilterModeTitle,
Prompt: gui.c.Tr.MustExitFilterModePrompt, Prompt: gui.c.Tr.MustExitFilterModePrompt,
HandleConfirm: gui.helpers.Mode.ExitFilterMode, HandleConfirm: gui.helpers.Mode.ExitFilterMode,

View File

@ -86,24 +86,25 @@ func (self *PopupHandler) ErrorHandler(err error) error {
return err return err
} }
return self.Alert(self.Tr.Error, coloredMessage) self.Alert(self.Tr.Error, coloredMessage)
return nil
} }
func (self *PopupHandler) Alert(title string, message string) error { func (self *PopupHandler) Alert(title string, message string) {
return self.Confirm(types.ConfirmOpts{Title: title, Prompt: message}) self.Confirm(types.ConfirmOpts{Title: title, Prompt: message})
} }
func (self *PopupHandler) Confirm(opts types.ConfirmOpts) error { func (self *PopupHandler) Confirm(opts types.ConfirmOpts) {
self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{ self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{
Title: opts.Title, Title: opts.Title,
Prompt: opts.Prompt, Prompt: opts.Prompt,
HandleConfirm: opts.HandleConfirm, HandleConfirm: opts.HandleConfirm,
HandleClose: opts.HandleClose, HandleClose: opts.HandleClose,
}) })
return nil
} }
func (self *PopupHandler) Prompt(opts types.PromptOpts) error { func (self *PopupHandler) Prompt(opts types.PromptOpts) {
self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{ self.createPopupPanelFn(context.Background(), types.CreatePopupPanelOpts{
Title: opts.Title, Title: opts.Title,
Prompt: opts.InitialContent, Prompt: opts.InitialContent,
@ -115,7 +116,6 @@ func (self *PopupHandler) Prompt(opts types.PromptOpts) error {
AllowEditSuggestion: opts.AllowEditSuggestion, AllowEditSuggestion: opts.AllowEditSuggestion,
Mask: opts.Mask, Mask: opts.Mask,
}) })
return nil
} }
// returns the content that has currently been typed into the prompt. Useful for // returns the content that has currently been typed into the prompt. Useful for

View File

@ -118,7 +118,7 @@ func (self *HandlerCreator) inputPrompt(prompt *config.CustomCommandPrompt, wrap
return err return err
} }
return self.c.Prompt(types.PromptOpts{ self.c.Prompt(types.PromptOpts{
Title: prompt.Title, Title: prompt.Title,
InitialContent: prompt.InitialValue, InitialContent: prompt.InitialValue,
FindSuggestionsFunc: findSuggestionsFn, FindSuggestionsFunc: findSuggestionsFn,
@ -126,6 +126,8 @@ func (self *HandlerCreator) inputPrompt(prompt *config.CustomCommandPrompt, wrap
return wrappedF(str) return wrappedF(str)
}, },
}) })
return nil
} }
func (self *HandlerCreator) generateFindSuggestionsFunc(prompt *config.CustomCommandPrompt) (func(string) []*types.Suggestion, error) { func (self *HandlerCreator) generateFindSuggestionsFunc(prompt *config.CustomCommandPrompt) (func(string) []*types.Suggestion, error) {
@ -183,11 +185,13 @@ func (self *HandlerCreator) getPresetSuggestionsFn(preset string) (func(string)
} }
func (self *HandlerCreator) confirmPrompt(prompt *config.CustomCommandPrompt, handleConfirm func() error) error { func (self *HandlerCreator) confirmPrompt(prompt *config.CustomCommandPrompt, handleConfirm func() error) error {
return self.c.Confirm(types.ConfirmOpts{ self.c.Confirm(types.ConfirmOpts{
Title: prompt.Title, Title: prompt.Title,
Prompt: prompt.Body, Prompt: prompt.Body,
HandleConfirm: handleConfirm, HandleConfirm: handleConfirm,
}) })
return nil
} }
func (self *HandlerCreator) menuPrompt(prompt *config.CustomCommandPrompt, wrappedF func(string) error) error { func (self *HandlerCreator) menuPrompt(prompt *config.CustomCommandPrompt, wrappedF func(string) error) error {
@ -298,7 +302,7 @@ func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, ses
return err return err
} }
} }
return self.c.Alert(title, output) self.c.Alert(title, output)
} }
return nil return nil

View File

@ -120,11 +120,11 @@ type IPopupHandler interface {
// Shows a notification popup with the given title and message to the user. // Shows a notification popup with the given title and message to the user.
// //
// This is a convenience wrapper around Confirm(), thus the popup can be closed using both 'Enter' and 'ESC'. // This is a convenience wrapper around Confirm(), thus the popup can be closed using both 'Enter' and 'ESC'.
Alert(title string, message string) error Alert(title string, message string)
// Shows a popup asking the user for confirmation. // Shows a popup asking the user for confirmation.
Confirm(opts ConfirmOpts) error Confirm(opts ConfirmOpts)
// Shows a popup prompting the user for input. // Shows a popup prompting the user for input.
Prompt(opts PromptOpts) error Prompt(opts PromptOpts)
WithWaitingStatus(message string, f func(gocui.Task) error) error WithWaitingStatus(message string, f func(gocui.Task) error) error
WithWaitingStatusSync(message string, f func() error) error WithWaitingStatusSync(message string, f func() error) error
Menu(opts CreateMenuOptions) error Menu(opts CreateMenuOptions) error