Skip to content

Commit caad553

Browse files
committed
Remove ErrorMsg
There is no reason any more for application code to show error messages in a panel. Just return an error instead.
1 parent 723b929 commit caad553

27 files changed

+98
-73
lines changed

pkg/gui/context/menu_context.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package context
22

33
import (
4+
"errors"
5+
46
"github.com/jesseduffield/lazygit/pkg/gui/keybindings"
57
"github.com/jesseduffield/lazygit/pkg/gui/style"
68
"github.com/jesseduffield/lazygit/pkg/gui/types"
@@ -148,7 +150,7 @@ func (self *MenuContext) GetKeybindings(opts types.KeybindingsOpts) []*types.Bin
148150
func (self *MenuContext) OnMenuPress(selectedItem *types.MenuItem) error {
149151
if selectedItem != nil && selectedItem.DisabledReason != nil {
150152
if selectedItem.DisabledReason.ShowErrorInPanel {
151-
return self.c.ErrorMsg(selectedItem.DisabledReason.Text)
153+
return errors.New(selectedItem.DisabledReason.Text)
152154
}
153155

154156
self.c.ErrorToast(self.c.Tr.DisabledMenuItemPrefix + selectedItem.DisabledReason.Text)

pkg/gui/controllers/basic_commits_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"fmt"
56

67
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
@@ -314,7 +315,7 @@ func (self *BasicCommitsController) handleOldCherryPickKey() error {
314315
"paste": keybindings.Label(self.c.UserConfig.Keybinding.Commits.PasteCommits),
315316
})
316317

317-
return self.c.ErrorMsg(msg)
318+
return errors.New(msg)
318319
}
319320

320321
func (self *BasicCommitsController) openDiffTool(commit *models.Commit) error {

pkg/gui/controllers/branches_controller.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ func (self *BranchesController) context() *context.BranchesContext {
334334

335335
func (self *BranchesController) press(selectedBranch *models.Branch) error {
336336
if selectedBranch == self.c.Helpers().Refs.GetCheckedOutRef() {
337-
return self.c.ErrorMsg(self.c.Tr.AlreadyCheckedOutBranch)
337+
return errors.New(self.c.Tr.AlreadyCheckedOutBranch)
338338
}
339339

340340
worktreeForRef, ok := self.worktreeForBranch(selectedBranch)
@@ -378,7 +378,7 @@ func (self *BranchesController) promptToCheckoutWorktree(worktree *models.Worktr
378378

379379
func (self *BranchesController) handleCreatePullRequest(selectedBranch *models.Branch) error {
380380
if !selectedBranch.IsTrackingRemote() {
381-
return self.c.ErrorMsg(self.c.Tr.PullRequestNoUpstream)
381+
return errors.New(self.c.Tr.PullRequestNoUpstream)
382382
}
383383
return self.createPullRequest(selectedBranch.UpstreamBranch, "")
384384
}
@@ -548,7 +548,7 @@ func (self *BranchesController) forceDelete(branch *models.Branch) error {
548548
Prompt: message,
549549
HandleConfirm: func() error {
550550
if err := self.c.Git().Branch.LocalDelete(branch.Name, true); err != nil {
551-
return self.c.ErrorMsg(err.Error())
551+
return err
552552
}
553553
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
554554
},
@@ -615,13 +615,13 @@ func (self *BranchesController) notRebasingOntoSelf(branch *models.Branch) *type
615615

616616
func (self *BranchesController) fastForward(branch *models.Branch) error {
617617
if !branch.IsTrackingRemote() {
618-
return self.c.ErrorMsg(self.c.Tr.FwdNoUpstream)
618+
return errors.New(self.c.Tr.FwdNoUpstream)
619619
}
620620
if !branch.RemoteBranchStoredLocally() {
621-
return self.c.ErrorMsg(self.c.Tr.FwdNoLocalUpstream)
621+
return errors.New(self.c.Tr.FwdNoLocalUpstream)
622622
}
623623
if branch.HasCommitsToPush() {
624-
return self.c.ErrorMsg(self.c.Tr.FwdCommitsToPush)
624+
return errors.New(self.c.Tr.FwdCommitsToPush)
625625
}
626626

627627
action := self.c.Tr.Actions.FastForwardBranch
@@ -766,7 +766,7 @@ func (self *BranchesController) createPullRequestMenu(selectedBranch *models.Bra
766766
LabelColumns: fromToLabelColumns(checkedOutBranch.Name, selectedBranch.Name),
767767
OnPress: func() error {
768768
if !checkedOutBranch.IsTrackingRemote() || !selectedBranch.IsTrackingRemote() {
769-
return self.c.ErrorMsg(self.c.Tr.PullRequestNoUpstream)
769+
return errors.New(self.c.Tr.PullRequestNoUpstream)
770770
}
771771
return self.createPullRequest(checkedOutBranch.UpstreamBranch, selectedBranch.UpstreamBranch)
772772
},

pkg/gui/controllers/commit_message_controller.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package controllers
22

33
import (
4+
"errors"
5+
46
"github.com/jesseduffield/lazygit/pkg/commands/git_commands"
57
"github.com/jesseduffield/lazygit/pkg/gui/context"
68
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
@@ -114,7 +116,7 @@ func (self *CommitMessageController) setCommitMessageAtIndex(index int) (bool, e
114116
if err == git_commands.ErrInvalidCommitIndex {
115117
return false, nil
116118
}
117-
return false, self.c.ErrorMsg(self.c.Tr.CommitWithoutMessageErr)
119+
return false, errors.New(self.c.Tr.CommitWithoutMessageErr)
118120
}
119121
if self.c.UserConfig.Git.Commit.AutoWrapCommitMessage {
120122
commitMessage = helpers.TryRemoveHardLineBreaks(commitMessage, self.c.UserConfig.Git.Commit.AutoWrapWidth)

pkg/gui/controllers/commits_files_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"strings"
56

67
"github.com/jesseduffield/gocui"
@@ -179,7 +180,7 @@ func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error
179180
func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileNode) error {
180181
parentContext, ok := self.c.CurrentContext().GetParentContext()
181182
if !ok || parentContext.GetKey() != context.LOCAL_COMMITS_CONTEXT_KEY {
182-
return self.c.ErrorMsg(self.c.Tr.CanOnlyDiscardFromLocalCommits)
183+
return errors.New(self.c.Tr.CanOnlyDiscardFromLocalCommits)
183184
}
184185

185186
if ok, err := self.c.Helpers().PatchBuilding.ValidateNormalWorkingTreeState(); !ok {

pkg/gui/controllers/custom_patch_options_menu_action.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"fmt"
56

67
"github.com/jesseduffield/gocui"
@@ -15,11 +16,11 @@ type CustomPatchOptionsMenuAction struct {
1516

1617
func (self *CustomPatchOptionsMenuAction) Call() error {
1718
if !self.c.Git().Patch.PatchBuilder.Active() {
18-
return self.c.ErrorMsg(self.c.Tr.NoPatchError)
19+
return errors.New(self.c.Tr.NoPatchError)
1920
}
2021

2122
if self.c.Git().Patch.PatchBuilder.IsEmpty() {
22-
return self.c.ErrorMsg(self.c.Tr.EmptyPatchError)
23+
return errors.New(self.c.Tr.EmptyPatchError)
2324
}
2425

2526
menuItems := []*types.MenuItem{
@@ -115,7 +116,7 @@ func (self *CustomPatchOptionsMenuAction) getPatchCommitIndex() int {
115116

116117
func (self *CustomPatchOptionsMenuAction) validateNormalWorkingTreeState() (bool, error) {
117118
if self.c.Git().Status.WorkingTreeState() != enums.REBASE_MODE_NONE {
118-
return false, self.c.ErrorMsg(self.c.Tr.CantPatchWhileRebasingError)
119+
return false, errors.New(self.c.Tr.CantPatchWhileRebasingError)
119120
}
120121
return true, nil
121122
}

pkg/gui/controllers/files_controller.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"strings"
56

67
"github.com/jesseduffield/gocui"
@@ -388,7 +389,7 @@ func (self *FilesController) pressWithLock(selectedNodes []*filetree.FileNode) e
388389
// if any files within have inline merge conflicts we can't stage or unstage,
389390
// or it'll end up with those >>>>>> lines actually staged
390391
if node.GetHasInlineMergeConflicts() {
391-
return self.c.ErrorMsg(self.c.Tr.ErrStageDirWithInlineMergeConflicts)
392+
return errors.New(self.c.Tr.ErrStageDirWithInlineMergeConflicts)
392393
}
393394
}
394395

@@ -496,7 +497,7 @@ func (self *FilesController) EnterFile(opts types.OnFocusOpts) error {
496497
return self.switchToMerge()
497498
}
498499
if file.HasMergeConflicts {
499-
return self.c.ErrorMsg(self.c.Tr.FileStagingRequirements)
500+
return errors.New(self.c.Tr.FileStagingRequirements)
500501
}
501502

502503
return self.c.PushContext(self.c.Contexts().Staging, opts)
@@ -523,7 +524,7 @@ func (self *FilesController) toggleStagedAllWithLock() error {
523524
// if any files within have inline merge conflicts we can't stage or unstage,
524525
// or it'll end up with those >>>>>> lines actually staged
525526
if root.GetHasInlineMergeConflicts() {
526-
return self.c.ErrorMsg(self.c.Tr.ErrStageDirWithInlineMergeConflicts)
527+
return errors.New(self.c.Tr.ErrStageDirWithInlineMergeConflicts)
527528
}
528529

529530
if root.GetHasUnstagedChanges() {
@@ -606,14 +607,14 @@ func (self *FilesController) ignoreOrExcludeFile(node *filetree.FileNode, trText
606607

607608
func (self *FilesController) ignore(node *filetree.FileNode) error {
608609
if node.GetPath() == ".gitignore" {
609-
return self.c.ErrorMsg(self.c.Tr.Actions.IgnoreFileErr)
610+
return errors.New(self.c.Tr.Actions.IgnoreFileErr)
610611
}
611612
return self.ignoreOrExcludeFile(node, self.c.Tr.IgnoreTracked, self.c.Tr.IgnoreTrackedPrompt, self.c.Tr.Actions.IgnoreExcludeFile, self.c.Git().WorkingTree.Ignore)
612613
}
613614

614615
func (self *FilesController) exclude(node *filetree.FileNode) error {
615616
if node.GetPath() == ".gitignore" {
616-
return self.c.ErrorMsg(self.c.Tr.Actions.ExcludeGitIgnoreErr)
617+
return errors.New(self.c.Tr.Actions.ExcludeGitIgnoreErr)
617618
}
618619

619620
return self.ignoreOrExcludeFile(node, self.c.Tr.ExcludeTracked, self.c.Tr.ExcludeTrackedPrompt, self.c.Tr.Actions.ExcludeFile, self.c.Git().WorkingTree.Exclude)
@@ -658,7 +659,7 @@ func (self *FilesController) handleAmendCommitPress() error {
658659
HandleConfirm: func() error {
659660
return self.c.Helpers().WorkingTree.WithEnsureCommitableFiles(func() error {
660661
if len(self.c.Model().Commits) == 0 {
661-
return self.c.ErrorMsg(self.c.Tr.NoCommitToAmend)
662+
return errors.New(self.c.Tr.NoCommitToAmend)
662663
}
663664

664665
return self.c.Helpers().AmendHelper.AmendHead()
@@ -765,7 +766,7 @@ func (self *FilesController) createStashMenu() error {
765766
Label: self.c.Tr.StashAllChanges,
766767
OnPress: func() error {
767768
if !self.c.Helpers().WorkingTree.IsWorkingTreeDirty() {
768-
return self.c.ErrorMsg(self.c.Tr.NoFilesToStash)
769+
return errors.New(self.c.Tr.NoFilesToStash)
769770
}
770771
return self.handleStashSave(self.c.Git().Stash.Push, self.c.Tr.Actions.StashAllChanges)
771772
},
@@ -775,7 +776,7 @@ func (self *FilesController) createStashMenu() error {
775776
Label: self.c.Tr.StashAllChangesKeepIndex,
776777
OnPress: func() error {
777778
if !self.c.Helpers().WorkingTree.IsWorkingTreeDirty() {
778-
return self.c.ErrorMsg(self.c.Tr.NoFilesToStash)
779+
return errors.New(self.c.Tr.NoFilesToStash)
779780
}
780781
// if there are no staged files it behaves the same as Stash.Save
781782
return self.handleStashSave(self.c.Git().Stash.StashAndKeepIndex, self.c.Tr.Actions.StashAllChangesKeepIndex)
@@ -794,7 +795,7 @@ func (self *FilesController) createStashMenu() error {
794795
OnPress: func() error {
795796
// there must be something in staging otherwise the current implementation mucks the stash up
796797
if !self.c.Helpers().WorkingTree.AnyStagedFiles() {
797-
return self.c.ErrorMsg(self.c.Tr.NoTrackedStagedFilesStash)
798+
return errors.New(self.c.Tr.NoTrackedStagedFilesStash)
798799
}
799800
return self.handleStashSave(self.c.Git().Stash.SaveStagedChanges, self.c.Tr.Actions.StashStagedChanges)
800801
},
@@ -804,7 +805,7 @@ func (self *FilesController) createStashMenu() error {
804805
Label: self.c.Tr.StashUnstagedChanges,
805806
OnPress: func() error {
806807
if !self.c.Helpers().WorkingTree.IsWorkingTreeDirty() {
807-
return self.c.ErrorMsg(self.c.Tr.NoFilesToStash)
808+
return errors.New(self.c.Tr.NoFilesToStash)
808809
}
809810
if self.c.Helpers().WorkingTree.AnyStagedFiles() {
810811
return self.handleStashSave(self.c.Git().Stash.StashUnstagedChanges, self.c.Tr.Actions.StashUnstagedChanges)
@@ -986,7 +987,7 @@ func (self *FilesController) fetchAux(task gocui.Task) (err error) {
986987
err = self.c.Git().Sync.Fetch(task)
987988

988989
if err != nil && strings.Contains(err.Error(), "exit status 128") {
989-
_ = self.c.ErrorMsg(self.c.Tr.PassUnameWrong)
990+
return errors.New(self.c.Tr.PassUnameWrong)
990991
}
991992

992993
_ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.ASYNC})

pkg/gui/controllers/git_flow_controller.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package controllers
22

33
import (
4+
"errors"
45
"fmt"
56

67
"github.com/jesseduffield/lazygit/pkg/commands/models"
@@ -46,7 +47,7 @@ func (self *GitFlowController) GetKeybindings(opts types.KeybindingsOpts) []*typ
4647

4748
func (self *GitFlowController) handleCreateGitFlowMenu(branch *models.Branch) error {
4849
if !self.c.Git().Flow.GitFlowEnabled() {
49-
return self.c.ErrorMsg("You need to install git-flow and enable it in this repo to use git-flow features")
50+
return errors.New("You need to install git-flow and enable it in this repo to use git-flow features")
5051
}
5152

5253
startHandler := func(branchType string) func() error {

pkg/gui/controllers/helpers/commits_helper.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package helpers
22

33
import (
4+
"errors"
45
"path/filepath"
56
"strings"
67
"time"
@@ -167,7 +168,7 @@ func (self *CommitsHelper) HandleCommitConfirm() error {
167168
summary, description := self.getCommitSummary(), self.getCommitDescription()
168169

169170
if summary == "" {
170-
return self.c.ErrorMsg(self.c.Tr.CommitWithoutMessageErr)
171+
return errors.New(self.c.Tr.CommitWithoutMessageErr)
171172
}
172173

173174
err := self.c.Contexts().CommitMessage.OnConfirm(summary, description)

pkg/gui/controllers/helpers/fixup_helper.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package helpers
22

33
import (
4+
"errors"
5+
"fmt"
46
"regexp"
57
"strings"
68
"sync"
@@ -36,19 +38,19 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error {
3638
return err
3739
}
3840
if diff == "" {
39-
return self.c.ErrorMsg(self.c.Tr.NoChangedFiles)
41+
return errors.New(self.c.Tr.NoChangedFiles)
4042
}
4143

4244
deletedLineInfos, hasHunksWithOnlyAddedLines := self.parseDiff(diff)
4345
if len(deletedLineInfos) == 0 {
44-
return self.c.ErrorMsg(self.c.Tr.NoDeletedLinesInDiff)
46+
return errors.New(self.c.Tr.NoDeletedLinesInDiff)
4547
}
4648

4749
hashes := self.blameDeletedLines(deletedLineInfos)
4850

4951
if len(hashes) == 0 {
5052
// This should never happen
51-
return self.c.ErrorMsg(self.c.Tr.NoBaseCommitsFound)
53+
return errors.New(self.c.Tr.NoBaseCommitsFound)
5254
}
5355
if len(hashes) > 1 {
5456
subjects, err := self.c.Git().Commit.GetHashesAndCommitMessagesFirstLine(hashes)
@@ -58,7 +60,7 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error {
5860
message := lo.Ternary(hasStagedChanges,
5961
self.c.Tr.MultipleBaseCommitsFoundStaged,
6062
self.c.Tr.MultipleBaseCommitsFoundUnstaged)
61-
return self.c.ErrorMsg(message + "\n\n" + subjects)
63+
return fmt.Errorf("%s\n\n%s", message, subjects)
6264
}
6365

6466
commit, index, ok := lo.FindIndexOf(self.c.Model().Commits, func(commit *models.Commit) bool {
@@ -70,13 +72,13 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error {
7072
// If the commit is not found, it's most likely because it's already
7173
// merged, and more than 300 commits away. Check if the last known
7274
// commit is already merged; if so, show the "already merged" error.
73-
return self.c.ErrorMsg(self.c.Tr.BaseCommitIsAlreadyOnMainBranch)
75+
return errors.New(self.c.Tr.BaseCommitIsAlreadyOnMainBranch)
7476
}
7577
// If we get here, the current branch must have more then 300 commits. Unlikely...
76-
return self.c.ErrorMsg(self.c.Tr.BaseCommitIsNotInCurrentView)
78+
return errors.New(self.c.Tr.BaseCommitIsNotInCurrentView)
7779
}
7880
if commit.Status == models.StatusMerged {
79-
return self.c.ErrorMsg(self.c.Tr.BaseCommitIsAlreadyOnMainBranch)
81+
return errors.New(self.c.Tr.BaseCommitIsAlreadyOnMainBranch)
8082
}
8183

8284
doIt := func() error {

0 commit comments

Comments
 (0)