mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-15 01:34:26 +02:00
Change Refresh to not return an error
Refresh is one of those functions that shouldn't require error handling (similar to triggering a redraw of the UI, see https://github.com/jesseduffield/lazygit/issues/3887). As far as I see, the only reason why Refresh can currently return an error is that the Then function returns one. The actual refresh errors, e.g. from the git calls that are made to fetch data, are already logged and swallowed. Most of the Then functions do only UI stuff such as selecting a list item, and always return nil; there's only one that can return an error (updating the rebase todo file in LocalCommitsController.startInteractiveRebaseWithEdit); it's not a critical error if this fails, it is only used for setting rebase todo items to "edit" when you start an interactive rebase by pressing 'e' on a range selection of commits. We simply log this error instead of returning it.
This commit is contained in:
@ -93,7 +93,8 @@ func (self *BackgroundRoutineMgr) startBackgroundFilesRefresh(refreshInterval in
|
|||||||
self.gui.waitForIntro.Wait()
|
self.gui.waitForIntro.Wait()
|
||||||
|
|
||||||
self.goEvery(time.Second*time.Duration(refreshInterval), self.gui.stopChan, func() error {
|
self.goEvery(time.Second*time.Duration(refreshInterval), self.gui.stopChan, func() error {
|
||||||
return self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +126,7 @@ func (self *BackgroundRoutineMgr) goEvery(interval time.Duration, stop chan stru
|
|||||||
func (self *BackgroundRoutineMgr) backgroundFetch() (err error) {
|
func (self *BackgroundRoutineMgr) backgroundFetch() (err error) {
|
||||||
err = self.gui.git.Sync.FetchBackground()
|
err = self.gui.git.Sync.FetchBackground()
|
||||||
|
|
||||||
_ = self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC})
|
self.gui.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC})
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = self.gui.helpers.BranchesHelper.AutoForwardBranches()
|
err = self.gui.helpers.BranchesHelper.AutoForwardBranches()
|
||||||
|
@ -175,7 +175,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
DisabledReason: self.require(self.singleItemSelected())(),
|
DisabledReason: self.require(self.singleItemSelected())(),
|
||||||
Key: 'b',
|
Key: 'b',
|
||||||
@ -192,7 +193,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
DisabledReason: self.require(self.singleItemSelected())(),
|
DisabledReason: self.require(self.singleItemSelected())(),
|
||||||
Key: 'g',
|
Key: 'g',
|
||||||
@ -211,7 +213,8 @@ func (self *BisectController) openStartBisectMenu(info *git_commands.BisectInfo,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
@ -245,7 +248,8 @@ func (self *BisectController) showBisectCompleteMessage(candidateHashes []string
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -270,20 +274,21 @@ func (self *BisectController) afterMark(selectCurrent bool, waitToReselect bool)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error {
|
func (self *BisectController) afterBisectMarkRefresh(selectCurrent bool, waitToReselect bool) error {
|
||||||
selectFn := func() error {
|
selectFn := func() {
|
||||||
if selectCurrent {
|
if selectCurrent {
|
||||||
self.selectCurrentBisectCommit()
|
self.selectCurrentBisectCommit()
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if waitToReselect {
|
if waitToReselect {
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn})
|
self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{}, Then: selectFn})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = selectFn()
|
selectFn()
|
||||||
|
|
||||||
return self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
self.c.Helpers().Bisect.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *BisectController) selectCurrentBisectCommit() {
|
func (self *BisectController) selectCurrentBisectCommit() {
|
||||||
|
@ -263,15 +263,13 @@ func (self *BranchesController) viewUpstreamOptions(selectedBranch *models.Branc
|
|||||||
if err := self.c.Git().Branch.UnsetUpstream(selectedBranch.Name); err != nil {
|
if err := self.c.Git().Branch.UnsetUpstream(selectedBranch.Name); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
Scope: []types.RefreshableView{
|
Scope: []types.RefreshableView{
|
||||||
types.BRANCHES,
|
types.BRANCHES,
|
||||||
types.COMMITS,
|
types.COMMITS,
|
||||||
},
|
},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'u',
|
Key: 'u',
|
||||||
@ -289,15 +287,13 @@ func (self *BranchesController) viewUpstreamOptions(selectedBranch *models.Branc
|
|||||||
if err := self.c.Git().Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil {
|
if err := self.c.Git().Branch.SetUpstream(upstreamRemote, upstreamBranch, selectedBranch.Name); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
Scope: []types.RefreshableView{
|
Scope: []types.RefreshableView{
|
||||||
types.BRANCHES,
|
types.BRANCHES,
|
||||||
types.COMMITS,
|
types.COMMITS,
|
||||||
},
|
},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -478,7 +474,8 @@ func (self *BranchesController) forceCheckout() error {
|
|||||||
if err := self.c.Git().Branch.Checkout(branch.Name, git_commands.CheckoutOptions{Force: true}); err != nil {
|
if err := self.c.Git().Branch.Checkout(branch.Name, git_commands.CheckoutOptions{Force: true}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -526,7 +523,8 @@ func (self *BranchesController) createNewBranchWithName(newBranchName string) er
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.context().SetSelection(0)
|
self.context().SetSelection(0)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, KeepBranchSelectionIndex: true})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, KeepBranchSelectionIndex: true})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *BranchesController) localDelete(branches []*models.Branch) error {
|
func (self *BranchesController) localDelete(branches []*models.Branch) error {
|
||||||
@ -655,7 +653,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error {
|
|||||||
WorktreePath: worktreePath,
|
WorktreePath: worktreePath,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,7 +662,7 @@ func (self *BranchesController) fastForward(branch *models.Branch) error {
|
|||||||
err := self.c.Git().Sync.FastForward(
|
err := self.c.Git().Sync.FastForward(
|
||||||
task, branch.Name, branch.UpstreamRemote, branch.UpstreamBranch,
|
task, branch.Name, branch.UpstreamRemote, branch.UpstreamBranch,
|
||||||
)
|
)
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -679,7 +677,8 @@ func (self *BranchesController) createSortMenu() error {
|
|||||||
self.c.GetAppState().LocalBranchSortOrder = sortOrder
|
self.c.GetAppState().LocalBranchSortOrder = sortOrder
|
||||||
self.c.SaveAppStateAndLogError()
|
self.c.SaveAppStateAndLogError()
|
||||||
self.c.Contexts().Branches.SetSelection(0)
|
self.c.Contexts().Branches.SetSelection(0)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
@ -702,7 +701,7 @@ func (self *BranchesController) rename(branch *models.Branch) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// need to find where the branch is now so that we can re-select it. That means we need to refetch the branches synchronously and then find our branch
|
// need to find where the branch is now so that we can re-select it. That means we need to refetch the branches synchronously and then find our branch
|
||||||
_ = self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
Scope: []types.RefreshableView{types.BRANCHES, types.WORKTREES},
|
Scope: []types.RefreshableView{types.BRANCHES, types.WORKTREES},
|
||||||
})
|
})
|
||||||
|
@ -289,7 +289,8 @@ func (self *CommitFilesController) checkout(node *filetree.CommitFileNode) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileNode) error {
|
func (self *CommitFilesController) discard(selectedNodes []*filetree.CommitFileNode) error {
|
||||||
|
@ -103,13 +103,13 @@ func (self *ContextLinesController) applyChange() error {
|
|||||||
switch currentContext.GetKey() {
|
switch currentContext.GetKey() {
|
||||||
// we make an exception for our staging and patch building contexts because they actually need to refresh their state afterwards.
|
// we make an exception for our staging and patch building contexts because they actually need to refresh their state afterwards.
|
||||||
case context.PATCH_BUILDING_MAIN_CONTEXT_KEY:
|
case context.PATCH_BUILDING_MAIN_CONTEXT_KEY:
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.PATCH_BUILDING}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.PATCH_BUILDING}})
|
||||||
case context.STAGING_MAIN_CONTEXT_KEY, context.STAGING_SECONDARY_CONTEXT_KEY:
|
case context.STAGING_MAIN_CONTEXT_KEY, context.STAGING_SECONDARY_CONTEXT_KEY:
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STAGING}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STAGING}})
|
||||||
default:
|
default:
|
||||||
currentContext.HandleRenderToMain()
|
currentContext.HandleRenderToMain()
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ContextLinesController) checkCanChangeContext() error {
|
func (self *ContextLinesController) checkCanChangeContext() error {
|
||||||
|
@ -275,7 +275,8 @@ func (self *CustomPatchOptionsMenuAction) handleApplyPatch(reverse bool) error {
|
|||||||
if err := self.c.Git().Patch.ApplyCustomPatch(reverse, true); err != nil {
|
if err := self.c.Git().Patch.ApplyCustomPatch(reverse, true); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *CustomPatchOptionsMenuAction) copyPatchToClipboard() error {
|
func (self *CustomPatchOptionsMenuAction) copyPatchToClipboard() error {
|
||||||
|
@ -23,7 +23,8 @@ func (self *DiffingMenuAction) Call() error {
|
|||||||
OnPress: func() error {
|
OnPress: func() error {
|
||||||
self.c.Modes().Diffing.Ref = name
|
self.c.Modes().Diffing.Ref = name
|
||||||
// can scope this down based on current view but too lazy right now
|
// can scope this down based on current view but too lazy right now
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}...)
|
}...)
|
||||||
@ -38,7 +39,8 @@ func (self *DiffingMenuAction) Call() error {
|
|||||||
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(),
|
FindSuggestionsFunc: self.c.Helpers().Suggestions.GetRefsSuggestionsFunc(),
|
||||||
HandleConfirm: func(response string) error {
|
HandleConfirm: func(response string) error {
|
||||||
self.c.Modes().Diffing.Ref = strings.TrimSpace(response)
|
self.c.Modes().Diffing.Ref = strings.TrimSpace(response)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -53,14 +55,16 @@ func (self *DiffingMenuAction) Call() error {
|
|||||||
Label: self.c.Tr.SwapDiff,
|
Label: self.c.Tr.SwapDiff,
|
||||||
OnPress: func() error {
|
OnPress: func() error {
|
||||||
self.c.Modes().Diffing.Reverse = !self.c.Modes().Diffing.Reverse
|
self.c.Modes().Diffing.Reverse = !self.c.Modes().Diffing.Reverse
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Label: self.c.Tr.ExitDiffMode,
|
Label: self.c.Tr.ExitDiffMode,
|
||||||
OnPress: func() error {
|
OnPress: func() error {
|
||||||
self.c.Modes().Diffing = diffing.New()
|
self.c.Modes().Diffing = diffing.New()
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}...)
|
}...)
|
||||||
|
@ -486,9 +486,7 @@ func (self *FilesController) press(nodes []*filetree.FileNode) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
self.context().HandleFocus(types.OnFocusOpts{})
|
self.context().HandleFocus(types.OnFocusOpts{})
|
||||||
return nil
|
return nil
|
||||||
@ -566,7 +564,8 @@ func (self *FilesController) handleNonInlineConflict(file *models.File) error {
|
|||||||
if err := command(file.GetPath()); err != nil {
|
if err := command(file.GetPath()); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
keepItem := &types.MenuItem{
|
keepItem := &types.MenuItem{
|
||||||
Label: self.c.Tr.MergeConflictKeepFile,
|
Label: self.c.Tr.MergeConflictKeepFile,
|
||||||
@ -611,9 +610,7 @@ func (self *FilesController) toggleStagedAll() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
self.context().HandleFocus(types.OnFocusOpts{})
|
self.context().HandleFocus(types.OnFocusOpts{})
|
||||||
return nil
|
return nil
|
||||||
@ -683,7 +680,8 @@ func (self *FilesController) ignoreOrExcludeTracked(node *filetree.FileNode, trA
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, trAction string, f func(string) error) error {
|
func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, trAction string, f func(string) error) error {
|
||||||
@ -693,7 +691,8 @@ func (self *FilesController) ignoreOrExcludeUntracked(node *filetree.FileNode, t
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
@ -755,7 +754,8 @@ func (self *FilesController) ignoreOrExcludeMenu(node *filetree.FileNode) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *FilesController) refresh() error {
|
func (self *FilesController) refresh() error {
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *FilesController) handleAmendCommitPress() error {
|
func (self *FilesController) handleAmendCommitPress() error {
|
||||||
@ -900,10 +900,10 @@ func (self *FilesController) setStatusFiltering(filter filetree.FileTreeDisplayF
|
|||||||
// Whenever we switch between untracked and other filters, we need to refresh the files view
|
// Whenever we switch between untracked and other filters, we need to refresh the files view
|
||||||
// because the untracked files filter applies when running `git status`.
|
// because the untracked files filter applies when running `git status`.
|
||||||
if previousFilter != filter && (previousFilter == filetree.DisplayUntracked || filter == filetree.DisplayUntracked) {
|
if previousFilter != filter && (previousFilter == filetree.DisplayUntracked || filter == filetree.DisplayUntracked) {
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}, Mode: types.ASYNC})
|
||||||
|
} else {
|
||||||
|
self.c.PostRefreshUpdate(self.context())
|
||||||
}
|
}
|
||||||
|
|
||||||
self.c.PostRefreshUpdate(self.context())
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1177,7 +1177,8 @@ func (self *FilesController) handleStashSave(stashFunc func(message string) erro
|
|||||||
if err := stashFunc(stashComment); err != nil {
|
if err := stashFunc(stashComment); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -1197,7 +1198,7 @@ func (self *FilesController) fetch() error {
|
|||||||
return errors.New(self.c.Tr.PassUnameWrong)
|
return errors.New(self.c.Tr.PassUnameWrong)
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.COMMITS, types.REMOTES, types.TAGS}, Mode: types.SYNC})
|
||||||
|
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = self.c.Helpers().BranchesHelper.AutoForwardBranches()
|
err = self.c.Helpers().BranchesHelper.AutoForwardBranches()
|
||||||
@ -1322,7 +1323,8 @@ func (self *FilesController) remove(selectedNodes []*filetree.FileNode) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: self.c.KeybindingsOpts().GetKey(self.c.UserConfig().Keybinding.Files.ConfirmDiscard),
|
Key: self.c.KeybindingsOpts().GetKey(self.c.UserConfig().Keybinding.Files.ConfirmDiscard),
|
||||||
Tooltip: utils.ResolvePlaceholderString(
|
Tooltip: utils.ResolvePlaceholderString(
|
||||||
@ -1348,7 +1350,8 @@ func (self *FilesController) remove(selectedNodes []*filetree.FileNode) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.WORKTREES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'u',
|
Key: 'u',
|
||||||
Tooltip: utils.ResolvePlaceholderString(
|
Tooltip: utils.ResolvePlaceholderString(
|
||||||
@ -1389,7 +1392,8 @@ func (self *FilesController) ResetSubmodule(submodule *models.SubmoduleConfig) e
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES, types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,9 +122,10 @@ func (self *FilteringMenuAction) setFiltering() error {
|
|||||||
|
|
||||||
self.c.Context().Push(self.c.Contexts().LocalCommits, types.OnFocusOpts{})
|
self.c.Context().Push(self.c.Contexts().LocalCommits, types.OnFocusOpts{})
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() error {
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}, Then: func() {
|
||||||
self.c.Contexts().LocalCommits.SetSelection(0)
|
self.c.Contexts().LocalCommits.SetSelection(0)
|
||||||
self.c.Contexts().LocalCommits.FocusLine()
|
self.c.Contexts().LocalCommits.FocusLine()
|
||||||
return nil
|
|
||||||
}})
|
}})
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -143,7 +143,8 @@ func (self *GlobalController) createCustomPatchOptionsMenu() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *GlobalController) refresh() error {
|
func (self *GlobalController) refresh() error {
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *GlobalController) nextScreenMode() error {
|
func (self *GlobalController) nextScreenMode() error {
|
||||||
|
@ -22,13 +22,14 @@ func (self *BisectHelper) Reset() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.PostBisectCommandRefresh()
|
self.PostBisectCommandRefresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *BisectHelper) PostBisectCommandRefresh() error {
|
func (self *BisectHelper) PostBisectCommandRefresh() {
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{}})
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,8 @@ func (self *BranchesHelper) ConfirmLocalDelete(branches []*models.Branch) error
|
|||||||
}
|
}
|
||||||
selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange()
|
selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange()
|
||||||
self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart)
|
self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +114,8 @@ func (self *BranchesHelper) ConfirmDeleteRemote(remoteBranches []*models.RemoteB
|
|||||||
if err := self.deleteRemoteBranches(remoteBranches, task); err != nil {
|
if err := self.deleteRemoteBranches(remoteBranches, task); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -181,7 +183,8 @@ func (self *BranchesHelper) ConfirmLocalAndRemoteDelete(branches []*models.Branc
|
|||||||
selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange()
|
selectionStart, _ := self.c.Contexts().Branches.GetSelectionRange()
|
||||||
self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart)
|
self.c.Contexts().Branches.SetSelectedLineIdx(selectionStart)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -295,7 +298,7 @@ func (self *BranchesHelper) AutoForwardBranches() error {
|
|||||||
self.c.LogCommand(strings.TrimRight(updateCommands, "\n"), false)
|
self.c.LogCommand(strings.TrimRight(updateCommands, "\n"), false)
|
||||||
err := self.c.Git().Branch.UpdateBranchRefs(updateCommands)
|
err := self.c.Git().Branch.UpdateBranchRefs(updateCommands)
|
||||||
|
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES}, Mode: types.SYNC})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES}, Mode: types.SYNC})
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,8 @@ func (self *CredentialsHelper) PromptUserForCredential(passOrUname oscommands.Cr
|
|||||||
HandleConfirm: func(input string) error {
|
HandleConfirm: func(input string) error {
|
||||||
ch <- input + "\n"
|
ch <- input + "\n"
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
HandleClose: func() error {
|
HandleClose: func() error {
|
||||||
ch <- "\n"
|
ch <- "\n"
|
||||||
|
@ -72,7 +72,8 @@ func (self *DiffHelper) GetUpdateTaskForRenderingCommitsDiff(commit *models.Comm
|
|||||||
|
|
||||||
func (self *DiffHelper) ExitDiffMode() error {
|
func (self *DiffHelper) ExitDiffMode() error {
|
||||||
self.c.Modes().Diffing = diffing.New()
|
self.c.Modes().Diffing = diffing.New()
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *DiffHelper) RenderDiff() {
|
func (self *DiffHelper) RenderDiff() {
|
||||||
|
@ -133,7 +133,7 @@ func (self *FixupHelper) HandleFindBaseCommitForFixupPress() error {
|
|||||||
if err := self.c.Git().WorkingTree.StageAll(); err != nil {
|
if err := self.c.Git().WorkingTree.StageAll(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}})
|
||||||
}
|
}
|
||||||
|
|
||||||
self.c.Contexts().LocalCommits.SetSelection(index)
|
self.c.Contexts().LocalCommits.SetSelection(index)
|
||||||
|
@ -32,9 +32,7 @@ func (self *GpgHelper) WithGpgHandling(cmdObj *oscommands.CmdObj, configKey git_
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -45,7 +43,7 @@ func (self *GpgHelper) WithGpgHandling(cmdObj *oscommands.CmdObj, configKey git_
|
|||||||
func (self *GpgHelper) runAndStream(cmdObj *oscommands.CmdObj, waitingStatus string, onSuccess func() error, refreshScope []types.RefreshableView) error {
|
func (self *GpgHelper) runAndStream(cmdObj *oscommands.CmdObj, waitingStatus string, onSuccess func() error, refreshScope []types.RefreshableView) error {
|
||||||
return self.c.WithWaitingStatus(waitingStatus, func(gocui.Task) error {
|
return self.c.WithWaitingStatus(waitingStatus, func(gocui.Task) error {
|
||||||
if err := cmdObj.StreamOutput().Run(); err != nil {
|
if err := cmdObj.StreamOutput().Run(); err != nil {
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope})
|
||||||
return fmt.Errorf(
|
return fmt.Errorf(
|
||||||
self.c.Tr.GitCommandFailed, self.c.UserConfig().Keybinding.Universal.ExtrasMenu,
|
self.c.Tr.GitCommandFailed, self.c.UserConfig().Keybinding.Universal.ExtrasMenu,
|
||||||
)
|
)
|
||||||
@ -57,6 +55,7 @@ func (self *GpgHelper) runAndStream(cmdObj *oscommands.CmdObj, waitingStatus str
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: refreshScope})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -150,9 +150,8 @@ func isMergeConflictErr(errStr string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (self *MergeAndRebaseHelper) CheckMergeOrRebaseWithRefreshOptions(result error, refreshOptions types.RefreshOptions) error {
|
func (self *MergeAndRebaseHelper) CheckMergeOrRebaseWithRefreshOptions(result error, refreshOptions types.RefreshOptions) error {
|
||||||
if err := self.c.Refresh(refreshOptions); err != nil {
|
self.c.Refresh(refreshOptions)
|
||||||
return err
|
|
||||||
}
|
|
||||||
if result == nil {
|
if result == nil {
|
||||||
return nil
|
return nil
|
||||||
} else if strings.Contains(result.Error(), "No changes - did you forget to use") {
|
} else if strings.Contains(result.Error(), "No changes - did you forget to use") {
|
||||||
@ -234,11 +233,9 @@ func (self *MergeAndRebaseHelper) PromptToContinueRebase() error {
|
|||||||
// Need to refresh the files to be really sure if this is the case.
|
// Need to refresh the files to be really sure if this is the case.
|
||||||
// We would otherwise be relying on lazygit's auto-refresh on focus,
|
// We would otherwise be relying on lazygit's auto-refresh on focus,
|
||||||
// but this is not supported by all terminals or on all platforms.
|
// but this is not supported by all terminals or on all platforms.
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES},
|
Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
root := self.c.Contexts().Files.FileTreeViewModel.GetRoot()
|
root := self.c.Contexts().Files.FileTreeViewModel.GetRoot()
|
||||||
if root.GetHasUnstagedChanges() {
|
if root.GetHasUnstagedChanges() {
|
||||||
@ -457,7 +454,8 @@ func (self *MergeAndRebaseHelper) SquashMergeCommitted(refName, checkedOutBranch
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,9 +167,9 @@ func (self *ModeHelper) ClearFiltering() error {
|
|||||||
self.c.State().GetRepoState().SetScreenMode(types.SCREEN_NORMAL)
|
self.c.State().GetRepoState().SetScreenMode(types.SCREEN_NORMAL)
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.COMMITS},
|
Scope: []types.RefreshableView{types.COMMITS},
|
||||||
Then: func() error {
|
Then: func() {
|
||||||
// Find the commit that was last selected in filtering mode, and select it again after refreshing
|
// Find the commit that was last selected in filtering mode, and select it again after refreshing
|
||||||
if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) {
|
if !self.c.Contexts().LocalCommits.SelectCommitByHash(selectedCommitHash) {
|
||||||
// If we couldn't find it (either because no commit was selected
|
// If we couldn't find it (either because no commit was selected
|
||||||
@ -178,9 +178,9 @@ func (self *ModeHelper) ClearFiltering() error {
|
|||||||
// before we entered filtering
|
// before we entered filtering
|
||||||
self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash())
|
self.c.Contexts().LocalCommits.SelectCommitByHash(self.c.Modes().Filtering.GetSelectedCommitHash())
|
||||||
}
|
}
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *ModeHelper) SetSuppressRebasingMode(value bool) {
|
func (self *ModeHelper) SetSuppressRebasingMode(value bool) {
|
||||||
|
@ -40,11 +40,9 @@ func (self *PatchBuildingHelper) Reset() error {
|
|||||||
self.Escape()
|
self.Escape()
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.COMMIT_FILES},
|
Scope: []types.RefreshableView{types.COMMIT_FILES},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// refreshing the current context so that the secondary panel is hidden if necessary.
|
// refreshing the current context so that the secondary panel is hidden if necessary.
|
||||||
self.c.PostRefreshUpdate(self.c.Context().Current())
|
self.c.PostRefreshUpdate(self.c.Context().Current())
|
||||||
|
@ -51,7 +51,7 @@ func NewRefreshHelper(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *RefreshHelper) Refresh(options types.RefreshOptions) error {
|
func (self *RefreshHelper) Refresh(options types.RefreshOptions) {
|
||||||
if options.Mode == types.ASYNC && options.Then != nil {
|
if options.Mode == types.ASYNC && options.Then != nil {
|
||||||
panic("RefreshOptions.Then doesn't work with mode ASYNC")
|
panic("RefreshOptions.Then doesn't work with mode ASYNC")
|
||||||
}
|
}
|
||||||
@ -74,7 +74,7 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
f := func() error {
|
f := func() {
|
||||||
var scopeSet *set.Set[types.RefreshableView]
|
var scopeSet *set.Set[types.RefreshableView]
|
||||||
if len(options.Scope) == 0 {
|
if len(options.Scope) == 0 {
|
||||||
// not refreshing staging/patch-building unless explicitly requested because we only need
|
// not refreshing staging/patch-building unless explicitly requested because we only need
|
||||||
@ -191,22 +191,19 @@ func (self *RefreshHelper) Refresh(options types.RefreshOptions) error {
|
|||||||
wg.Wait()
|
wg.Wait()
|
||||||
|
|
||||||
if options.Then != nil {
|
if options.Then != nil {
|
||||||
if err := options.Then(); err != nil {
|
options.Then()
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if options.Mode == types.BLOCK_UI {
|
if options.Mode == types.BLOCK_UI {
|
||||||
self.c.OnUIThread(func() error {
|
self.c.OnUIThread(func() error {
|
||||||
return f()
|
f()
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
return nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return f()
|
f()
|
||||||
}
|
}
|
||||||
|
|
||||||
func getScopeNames(scopes []types.RefreshableView) []string {
|
func getScopeNames(scopes []types.RefreshableView) []string {
|
||||||
|
@ -46,7 +46,7 @@ func (self *RefsHelper) CheckoutRef(ref string, options types.CheckoutRefOptions
|
|||||||
// loading a heap of commits is slow so we limit them whenever doing a reset
|
// loading a heap of commits is slow so we limit them whenever doing a reset
|
||||||
self.c.Contexts().LocalCommits.SetLimitCommits(true)
|
self.c.Contexts().LocalCommits.SetLimitCommits(true)
|
||||||
|
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
||||||
}
|
}
|
||||||
|
|
||||||
localBranch, found := lo.Find(self.c.Model().Branches, func(branch *models.Branch) bool {
|
localBranch, found := lo.Find(self.c.Model().Branches, func(branch *models.Branch) bool {
|
||||||
@ -145,12 +145,10 @@ func (self *RefsHelper) CheckoutRemoteBranch(fullBranchName string, localBranchN
|
|||||||
}
|
}
|
||||||
// Do a sync refresh to make sure the new branch is visible,
|
// Do a sync refresh to make sure the new branch is visible,
|
||||||
// so that we see an inline status when checking it out
|
// so that we see an inline status when checking it out
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
Scope: []types.RefreshableView{types.BRANCHES},
|
Scope: []types.RefreshableView{types.BRANCHES},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
return checkout(localBranchName)
|
return checkout(localBranchName)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -183,9 +181,7 @@ func (self *RefsHelper) ResetToRef(ref string, strength string, envVars []string
|
|||||||
// loading a heap of commits is slow so we limit them whenever doing a reset
|
// loading a heap of commits is slow so we limit them whenever doing a reset
|
||||||
self.c.Contexts().LocalCommits.SetLimitCommits(true)
|
self.c.Contexts().LocalCommits.SetLimitCommits(true)
|
||||||
|
|
||||||
if err := self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.BRANCHES, types.REFLOG, types.COMMITS}}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.BRANCHES, types.REFLOG, types.COMMITS}})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -331,7 +327,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
refresh := func() error {
|
refresh := func() {
|
||||||
if self.c.Context().Current() != self.c.Contexts().Branches {
|
if self.c.Context().Current() != self.c.Contexts().Branches {
|
||||||
self.c.Context().Push(self.c.Contexts().Branches, types.OnFocusOpts{})
|
self.c.Context().Push(self.c.Contexts().Branches, types.OnFocusOpts{})
|
||||||
}
|
}
|
||||||
@ -339,7 +335,7 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
|
|||||||
self.c.Contexts().LocalCommits.SetSelection(0)
|
self.c.Contexts().LocalCommits.SetSelection(0)
|
||||||
self.c.Contexts().Branches.SetSelection(0)
|
self.c.Contexts().Branches.SetSelection(0)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
||||||
}
|
}
|
||||||
|
|
||||||
self.c.Prompt(types.PromptOpts{
|
self.c.Prompt(types.PromptOpts{
|
||||||
@ -365,14 +361,10 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
|
|||||||
if err := newBranchFunc(newBranchName, from); err != nil {
|
if err := newBranchFunc(newBranchName, from); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
popErr := self.c.Git().Stash.Pop(0)
|
err := self.c.Git().Stash.Pop(0)
|
||||||
// Branch switch successful so re-render the UI even if the pop operation failed (e.g. conflict).
|
// Branch switch successful so re-render the UI even if the pop operation failed (e.g. conflict).
|
||||||
refreshError := refresh()
|
refresh()
|
||||||
if popErr != nil {
|
return err
|
||||||
// An error from pop is the more important one to report to the user
|
|
||||||
return popErr
|
|
||||||
}
|
|
||||||
return refreshError
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -382,7 +374,8 @@ func (self *RefsHelper) NewBranch(from string, fromFormattedName string, suggest
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return refresh()
|
refresh()
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -498,7 +491,8 @@ func (self *RefsHelper) moveCommitsToNewBranchStackedOnCurrentBranch(currentBran
|
|||||||
self.c.Contexts().LocalCommits.SetSelection(0)
|
self.c.Contexts().LocalCommits.SetSelection(0)
|
||||||
self.c.Contexts().Branches.SetSelection(0)
|
self.c.Contexts().Branches.SetSelection(0)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *RefsHelper) moveCommitsToNewBranchOffOfMainBranch(currentBranch string, newBranchName string, baseBranchRef string) error {
|
func (self *RefsHelper) moveCommitsToNewBranchOffOfMainBranch(currentBranch string, newBranchName string, baseBranchRef string) error {
|
||||||
@ -536,7 +530,8 @@ func (self *RefsHelper) moveCommitsToNewBranchOffOfMainBranch(currentBranch stri
|
|||||||
self.c.Contexts().LocalCommits.SetSelection(0)
|
self.c.Contexts().LocalCommits.SetSelection(0)
|
||||||
self.c.Contexts().Branches.SetSelection(0)
|
self.c.Contexts().Branches.SetSelection(0)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
self.c.Refresh(types.RefreshOptions{Mode: types.BLOCK_UI, KeepBranchSelectionIndex: true})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *RefsHelper) CanMoveCommitsToNewBranch() *types.DisabledReason {
|
func (self *RefsHelper) CanMoveCommitsToNewBranch() *types.DisabledReason {
|
||||||
|
@ -210,9 +210,7 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro
|
|||||||
if err := self.c.Git().WorkingTree.StageAll(); err != nil {
|
if err := self.c.Git().WorkingTree.StageAll(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := self.syncRefresh(); err != nil {
|
self.syncRefresh()
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return retry()
|
return retry()
|
||||||
},
|
},
|
||||||
@ -222,8 +220,8 @@ func (self *WorkingTreeHelper) promptToStageAllAndRetry(retry func() error) erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 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.
|
||||||
func (self *WorkingTreeHelper) syncRefresh() error {
|
func (self *WorkingTreeHelper) syncRefresh() {
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.FILES}})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *WorkingTreeHelper) prepareFilesForCommit() error {
|
func (self *WorkingTreeHelper) prepareFilesForCommit() error {
|
||||||
@ -235,7 +233,7 @@ func (self *WorkingTreeHelper) prepareFilesForCommit() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.syncRefresh()
|
self.syncRefresh()
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -198,7 +198,8 @@ func (self *WorktreeHelper) Remove(worktree *models.Worktree, force bool) error
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -214,7 +215,8 @@ func (self *WorktreeHelper) Detach(worktree *models.Worktree) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.WORKTREES, types.BRANCHES, types.FILES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,7 +392,8 @@ func (self *LocalCommitsController) switchFromCommitMessagePanelToEditor(filepat
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *LocalCommitsController) handleReword(summary string, description string) error {
|
func (self *LocalCommitsController) handleReword(summary string, description string) error {
|
||||||
@ -408,7 +409,8 @@ func (self *LocalCommitsController) handleReword(summary string, description str
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -519,9 +521,8 @@ func (self *LocalCommitsController) edit(selectedCommits []*models.Commit, start
|
|||||||
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
|
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
|
||||||
err,
|
err,
|
||||||
types.RefreshOptions{
|
types.RefreshOptions{
|
||||||
Mode: types.BLOCK_UI, Then: func() error {
|
Mode: types.BLOCK_UI, Then: func() {
|
||||||
self.restoreSelectionRangeAndMode(selectionRangeAndMode)
|
self.restoreSelectionRangeAndMode(selectionRangeAndMode)
|
||||||
return nil
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -547,7 +548,7 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
|
|||||||
err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash())
|
err := self.c.Git().Rebase.EditRebase(commitsToEdit[len(commitsToEdit)-1].Hash())
|
||||||
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
|
return self.c.Helpers().MergeAndRebase.CheckMergeOrRebaseWithRefreshOptions(
|
||||||
err,
|
err,
|
||||||
types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() error {
|
types.RefreshOptions{Mode: types.BLOCK_UI, Then: func() {
|
||||||
todos := make([]*models.Commit, 0, len(commitsToEdit)-1)
|
todos := make([]*models.Commit, 0, len(commitsToEdit)-1)
|
||||||
for _, c := range commitsToEdit[:len(commitsToEdit)-1] {
|
for _, c := range commitsToEdit[:len(commitsToEdit)-1] {
|
||||||
// Merge commits can't be set to "edit", so just skip them
|
// Merge commits can't be set to "edit", so just skip them
|
||||||
@ -558,12 +559,11 @@ func (self *LocalCommitsController) startInteractiveRebaseWithEdit(
|
|||||||
if len(todos) > 0 {
|
if len(todos) > 0 {
|
||||||
err := self.updateTodos(todo.Edit, todos)
|
err := self.updateTodos(todo.Edit, todos)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
self.c.Log.Errorf("error when updating todos: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.restoreSelectionRangeAndMode(selectionRangeAndMode)
|
self.restoreSelectionRangeAndMode(selectionRangeAndMode)
|
||||||
return nil
|
|
||||||
}})
|
}})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -642,9 +642,11 @@ func (self *LocalCommitsController) updateTodos(action todo.TodoCommand, selecte
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *LocalCommitsController) rewordEnabled(commit *models.Commit) *types.DisabledReason {
|
func (self *LocalCommitsController) rewordEnabled(commit *models.Commit) *types.DisabledReason {
|
||||||
@ -681,9 +683,10 @@ func (self *LocalCommitsController) moveDown(selectedCommits []*models.Commit, s
|
|||||||
}
|
}
|
||||||
self.context().MoveSelection(1)
|
self.context().MoveSelection(1)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error {
|
return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error {
|
||||||
@ -704,9 +707,10 @@ func (self *LocalCommitsController) moveUp(selectedCommits []*models.Commit, sta
|
|||||||
}
|
}
|
||||||
self.context().MoveSelection(-1)
|
self.context().MoveSelection(-1)
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
Mode: types.SYNC, Scope: []types.RefreshableView{types.REBASE_COMMITS},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error {
|
return self.c.WithWaitingStatusSync(self.c.Tr.MovingStatus, func() error {
|
||||||
@ -729,7 +733,8 @@ func (self *LocalCommitsController) amendTo(commit *models.Commit) error {
|
|||||||
if err := self.c.Helpers().AmendHelper.AmendHead(); err != nil {
|
if err := self.c.Helpers().AmendHelper.AmendHead(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -804,7 +809,8 @@ func (self *LocalCommitsController) resetAuthor(start, end int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -819,7 +825,8 @@ func (self *LocalCommitsController) setAuthor(start, end int) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -837,7 +844,8 @@ func (self *LocalCommitsController) addCoAuthor(start, end int) error {
|
|||||||
if err := self.c.Git().Rebase.AddCommitCoAuthor(self.c.Model().Commits, start, end, value); err != nil {
|
if err := self.c.Git().Rebase.AddCommitCoAuthor(self.c.Model().Commits, start, end, value); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -870,9 +878,10 @@ func (self *LocalCommitsController) revert(commits []*models.Commit, start, end
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
self.context().MoveSelection(len(commits))
|
self.context().MoveSelection(len(commits))
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES},
|
Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS, types.BRANCHES},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -908,7 +917,8 @@ func (self *LocalCommitsController) createFixupCommit(commit *models.Commit) err
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.context().MoveSelectedLine(1)
|
self.context().MoveSelectedLine(1)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.SYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@ -1008,7 +1018,8 @@ func (self *LocalCommitsController) createAmendCommit(commit *models.Commit, inc
|
|||||||
}
|
}
|
||||||
|
|
||||||
self.context().MoveSelectedLine(1)
|
self.context().MoveSelectedLine(1)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.SYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.SYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
OnSwitchToEditor: nil,
|
OnSwitchToEditor: nil,
|
||||||
@ -1134,9 +1145,7 @@ func (self *LocalCommitsController) openSearch() error {
|
|||||||
// we usually lazyload these commits but now that we're searching we need to load them now
|
// we usually lazyload these commits but now that we're searching we need to load them now
|
||||||
if self.context().GetLimitCommits() {
|
if self.context().GetLimitCommits() {
|
||||||
self.context().SetLimitCommits(false)
|
self.context().SetLimitCommits(false)
|
||||||
if err := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS}}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS}})
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Helpers().Search.OpenSearchPrompt(self.context())
|
return self.c.Helpers().Search.OpenSearchPrompt(self.context())
|
||||||
@ -1156,9 +1165,10 @@ func (self *LocalCommitsController) handleOpenLogMenu() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error {
|
return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error {
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS}},
|
types.RefreshOptions{Mode: types.SYNC, Scope: []types.RefreshableView{types.COMMITS}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1208,12 +1218,13 @@ func (self *LocalCommitsController) handleOpenLogMenu() error {
|
|||||||
self.c.GetAppState().GitLogOrder = value
|
self.c.GetAppState().GitLogOrder = value
|
||||||
self.c.SaveAppStateAndLogError()
|
self.c.SaveAppStateAndLogError()
|
||||||
return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error {
|
return self.c.WithWaitingStatus(self.c.Tr.LoadingCommits, func(gocui.Task) error {
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{
|
types.RefreshOptions{
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
Scope: []types.RefreshableView{types.COMMITS},
|
Scope: []types.RefreshableView{types.COMMITS},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1255,7 +1266,8 @@ func (self *LocalCommitsController) GetOnFocus() func(types.OnFocusOpts) {
|
|||||||
if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() {
|
if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() {
|
||||||
context.SetLimitCommits(false)
|
context.SetLimitCommits(false)
|
||||||
self.c.OnWorker(func(_ gocui.Task) error {
|
self.c.OnWorker(func(_ gocui.Task) error {
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.COMMITS}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -277,7 +277,7 @@ func (self *MergeConflictsController) pickSelection(selection mergeconflicts.Sel
|
|||||||
}
|
}
|
||||||
|
|
||||||
if self.context().GetState().AllConflictsResolved() {
|
if self.context().GetState().AllConflictsResolved() {
|
||||||
return self.onLastConflictResolved()
|
self.onLastConflictResolved()
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -314,10 +314,10 @@ func (self *MergeConflictsController) resolveConflict(selection mergeconflicts.S
|
|||||||
return true, os.WriteFile(state.GetPath(), []byte(content), 0o644)
|
return true, os.WriteFile(state.GetPath(), []byte(content), 0o644)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *MergeConflictsController) onLastConflictResolved() error {
|
func (self *MergeConflictsController) onLastConflictResolved() {
|
||||||
// as part of refreshing files, we handle the situation where a file has had
|
// as part of refreshing files, we handle the situation where a file has had
|
||||||
// its merge conflicts resolved.
|
// its merge conflicts resolved.
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *MergeConflictsController) withRenderAndFocus(f func() error) func() error {
|
func (self *MergeConflictsController) withRenderAndFocus(f func() error) func() error {
|
||||||
|
@ -116,9 +116,10 @@ func (self *PatchBuildingController) ToggleSelectionAndRefresh() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.PATCH_BUILDING, types.COMMIT_FILES},
|
Scope: []types.RefreshableView{types.PATCH_BUILDING, types.COMMIT_FILES},
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *PatchBuildingController) toggleSelection() error {
|
func (self *PatchBuildingController) toggleSelection() error {
|
||||||
|
@ -150,7 +150,7 @@ func (self *RemoteBranchesController) createSortMenu() error {
|
|||||||
self.c.GetAppState().RemoteBranchSortOrder = sortOrder
|
self.c.GetAppState().RemoteBranchSortOrder = sortOrder
|
||||||
self.c.SaveAppStateAndLogError()
|
self.c.SaveAppStateAndLogError()
|
||||||
self.c.Contexts().RemoteBranches.SetSelection(0)
|
self.c.Contexts().RemoteBranches.SetSelection(0)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.REMOTES}})
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
@ -181,7 +181,8 @@ func (self *RemoteBranchesController) setAsUpstream(selectedBranch *models.Remot
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -148,12 +148,10 @@ func (self *RemotesController) add() error {
|
|||||||
// Do a sync refresh of the remotes so that we can select
|
// Do a sync refresh of the remotes so that we can select
|
||||||
// the new one. Loading remotes is not expensive, so we can
|
// the new one. Loading remotes is not expensive, so we can
|
||||||
// afford it.
|
// afford it.
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.REMOTES},
|
Scope: []types.RefreshableView{types.REMOTES},
|
||||||
Mode: types.SYNC,
|
Mode: types.SYNC,
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Select the new remote
|
// Select the new remote
|
||||||
for idx, remote := range self.c.Model().Remotes {
|
for idx, remote := range self.c.Model().Remotes {
|
||||||
@ -185,7 +183,8 @@ func (self *RemotesController) remove(remote *models.Remote) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -232,7 +231,8 @@ func (self *RemotesController) edit(remote *models.Remote) error {
|
|||||||
if err := self.c.Git().Remote.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil {
|
if err := self.c.Git().Remote.UpdateRemoteUrl(updatedRemoteName, updatedRemoteUrl); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -250,9 +250,10 @@ func (self *RemotesController) fetch(remote *models.Remote) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES},
|
Scope: []types.RefreshableView{types.BRANCHES, types.REMOTES},
|
||||||
Mode: types.ASYNC,
|
Mode: types.ASYNC,
|
||||||
})
|
})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -88,11 +88,11 @@ func (self *RenameSimilarityThresholdController) applyChange() error {
|
|||||||
switch currentContext.GetKey() {
|
switch currentContext.GetKey() {
|
||||||
// we make an exception for our files context, because it actually need to refresh its state afterwards.
|
// we make an exception for our files context, because it actually need to refresh its state afterwards.
|
||||||
case context.FILES_CONTEXT_KEY:
|
case context.FILES_CONTEXT_KEY:
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES}})
|
||||||
default:
|
default:
|
||||||
currentContext.HandleRenderToMain()
|
currentContext.HandleRenderToMain()
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *RenameSimilarityThresholdController) isShowingRenames() bool {
|
func (self *RenameSimilarityThresholdController) isShowingRenames() bool {
|
||||||
|
@ -221,7 +221,8 @@ func (self *StagingController) applySelectionAndRefresh(reverse bool) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StagingController) applySelection(reverse bool) error {
|
func (self *StagingController) applySelection(reverse bool) error {
|
||||||
@ -275,7 +276,8 @@ func (self *StagingController) EditHunkAndRefresh() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.FILES, types.STAGING}})
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StagingController) editHunk() error {
|
func (self *StagingController) editHunk() error {
|
||||||
|
@ -107,7 +107,7 @@ func (self *StashController) handleStashApply(stashEntry *models.StashEntry) err
|
|||||||
apply := func() error {
|
apply := func() error {
|
||||||
self.c.LogAction(self.c.Tr.Actions.Stash)
|
self.c.LogAction(self.c.Tr.Actions.Stash)
|
||||||
err := self.c.Git().Stash.Apply(stashEntry.Index)
|
err := self.c.Git().Stash.Apply(stashEntry.Index)
|
||||||
_ = self.postStashRefresh()
|
self.postStashRefresh()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ func (self *StashController) handleStashPop(stashEntry *models.StashEntry) error
|
|||||||
pop := func() error {
|
pop := func() error {
|
||||||
self.c.LogAction(self.c.Tr.Actions.Stash)
|
self.c.LogAction(self.c.Tr.Actions.Stash)
|
||||||
err := self.c.Git().Stash.Pop(stashEntry.Index)
|
err := self.c.Git().Stash.Pop(stashEntry.Index)
|
||||||
_ = self.postStashRefresh()
|
self.postStashRefresh()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -170,7 +170,7 @@ func (self *StashController) handleStashDrop(stashEntries []*models.StashEntry)
|
|||||||
startIndex := stashEntries[0].Index
|
startIndex := stashEntries[0].Index
|
||||||
for range stashEntries {
|
for range stashEntries {
|
||||||
err := self.c.Git().Stash.Drop(startIndex)
|
err := self.c.Git().Stash.Drop(startIndex)
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -182,8 +182,8 @@ func (self *StashController) handleStashDrop(stashEntries []*models.StashEntry)
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StashController) postStashRefresh() error {
|
func (self *StashController) postStashRefresh() {
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH, types.FILES}})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *StashController) handleNewBranchOffStashEntry(stashEntry *models.StashEntry) error {
|
func (self *StashController) handleNewBranchOffStashEntry(stashEntry *models.StashEntry) error {
|
||||||
@ -205,12 +205,13 @@ func (self *StashController) handleRenameStashEntry(stashEntry *models.StashEntr
|
|||||||
self.c.LogAction(self.c.Tr.Actions.RenameStash)
|
self.c.LogAction(self.c.Tr.Actions.RenameStash)
|
||||||
err := self.c.Git().Stash.Rename(stashEntry.Index, response)
|
err := self.c.Git().Stash.Rename(stashEntry.Index, response)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
self.context().SetSelection(0) // Select the renamed stash
|
self.context().SetSelection(0) // Select the renamed stash
|
||||||
self.context().FocusLine()
|
self.context().FocusLine()
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.STASH}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -68,7 +68,8 @@ func (self *SubCommitsController) GetOnFocus() func(types.OnFocusOpts) {
|
|||||||
if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() {
|
if context.GetSelectedLineIdx() > COMMIT_THRESHOLD && context.GetLimitCommits() {
|
||||||
context.SetLimitCommits(false)
|
context.SetLimitCommits(false)
|
||||||
self.c.OnWorker(func(_ gocui.Task) error {
|
self.c.OnWorker(func(_ gocui.Task) error {
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUB_COMMITS}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUB_COMMITS}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,8 @@ func (self *SubmodulesController) add() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -194,7 +195,8 @@ func (self *SubmodulesController) editURL(submodule *models.SubmoduleConfig) err
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -210,7 +212,8 @@ func (self *SubmodulesController) init(submodule *models.SubmoduleConfig) error
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -228,7 +231,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Key: 'i',
|
Key: 'i',
|
||||||
@ -242,7 +246,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Key: 'u',
|
Key: 'u',
|
||||||
@ -256,7 +261,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Key: 'r',
|
Key: 'r',
|
||||||
@ -270,7 +276,8 @@ func (self *SubmodulesController) openBulkActionsMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
Key: 'd',
|
Key: 'd',
|
||||||
@ -287,7 +294,8 @@ func (self *SubmodulesController) update(submodule *models.SubmoduleConfig) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,7 +309,8 @@ func (self *SubmodulesController) remove(submodule *models.SubmoduleConfig) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}})
|
self.c.Refresh(types.RefreshOptions{Scope: []types.RefreshableView{types.SUBMODULES, types.FILES}})
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -85,11 +85,9 @@ func (self *SwitchToDiffFilesController) enter() error {
|
|||||||
commitFilesContext.ClearSearchString()
|
commitFilesContext.ClearSearchString()
|
||||||
commitFilesContext.GetView().TitlePrefix = self.context.GetView().TitlePrefix
|
commitFilesContext.GetView().TitlePrefix = self.context.GetView().TitlePrefix
|
||||||
|
|
||||||
if err := self.c.Refresh(types.RefreshOptions{
|
self.c.Refresh(types.RefreshOptions{
|
||||||
Scope: []types.RefreshableView{types.COMMIT_FILES},
|
Scope: []types.RefreshableView{types.COMMIT_FILES},
|
||||||
}); err != nil {
|
})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
self.c.Context().Push(commitFilesContext, types.OnFocusOpts{})
|
self.c.Context().Push(commitFilesContext, types.OnFocusOpts{})
|
||||||
return nil
|
return nil
|
||||||
|
@ -229,7 +229,8 @@ func (self *SyncController) pushAux(currentBranch *models.Branch, opts pushOpts)
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,7 +158,7 @@ func (self *TagsController) localDelete(tag *models.Tag) error {
|
|||||||
return self.c.WithWaitingStatus(self.c.Tr.DeletingStatus, func(gocui.Task) error {
|
return self.c.WithWaitingStatus(self.c.Tr.DeletingStatus, func(gocui.Task) error {
|
||||||
self.c.LogAction(self.c.Tr.Actions.DeleteLocalTag)
|
self.c.LogAction(self.c.Tr.Actions.DeleteLocalTag)
|
||||||
err := self.c.Git().Tag.LocalDelete(tag.Name)
|
err := self.c.Git().Tag.LocalDelete(tag.Name)
|
||||||
_ = self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -200,7 +200,8 @@ func (self *TagsController) remoteDelete(tag *models.Tag) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
self.c.Toast(self.c.Tr.RemoteTagDeletedMessage)
|
self.c.Toast(self.c.Tr.RemoteTagDeletedMessage)
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -253,7 +254,8 @@ func (self *TagsController) localAndRemoteDelete(tag *models.Tag) error {
|
|||||||
if err := self.c.Git().Tag.LocalDelete(tag.Name); err != nil {
|
if err := self.c.Git().Tag.LocalDelete(tag.Name); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.COMMITS, types.TAGS}})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
@ -271,7 +271,8 @@ func (self *UndoController) hardResetWithAutoStash(commitHash string, options ha
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return self.c.Refresh(types.RefreshOptions{})
|
self.c.Refresh(types.RefreshOptions{})
|
||||||
|
return nil
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,9 +39,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
self.animateExplosion()
|
self.animateExplosion()
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'x',
|
Key: 'x',
|
||||||
Tooltip: self.c.Tr.NukeDescription,
|
Tooltip: self.c.Tr.NukeDescription,
|
||||||
@ -57,9 +58,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'u',
|
Key: 'u',
|
||||||
},
|
},
|
||||||
@ -74,9 +76,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'c',
|
Key: 'c',
|
||||||
},
|
},
|
||||||
@ -98,9 +101,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'S',
|
Key: 'S',
|
||||||
},
|
},
|
||||||
@ -115,9 +119,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 's',
|
Key: 's',
|
||||||
},
|
},
|
||||||
@ -132,9 +137,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'm',
|
Key: 'm',
|
||||||
},
|
},
|
||||||
@ -149,9 +155,10 @@ func (self *FilesController) createResetMenu() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return self.c.Refresh(
|
self.c.Refresh(
|
||||||
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
types.RefreshOptions{Mode: types.ASYNC, Scope: []types.RefreshableView{types.FILES}},
|
||||||
)
|
)
|
||||||
|
return nil
|
||||||
},
|
},
|
||||||
Key: 'h',
|
Key: 'h',
|
||||||
},
|
},
|
||||||
|
@ -349,13 +349,8 @@ func (gui *Gui) onNewRepo(startArgs appTypes.StartArgs, contextKey types.Context
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui.c.Log.Info("Receiving focus - refreshing")
|
gui.c.Log.Info("Receiving focus - refreshing")
|
||||||
refreshErr := gui.helpers.Refresh.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
gui.helpers.Refresh.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
if reloadErr != nil {
|
return reloadErr
|
||||||
// An error from reloading the config is the more important one
|
|
||||||
// to report to the user
|
|
||||||
return reloadErr
|
|
||||||
}
|
|
||||||
return refreshErr
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
@ -693,7 +688,7 @@ func NewGui(
|
|||||||
func(ctx goContext.Context, opts types.CreatePopupPanelOpts) {
|
func(ctx goContext.Context, opts types.CreatePopupPanelOpts) {
|
||||||
gui.helpers.Confirmation.CreatePopupPanel(ctx, opts)
|
gui.helpers.Confirmation.CreatePopupPanel(ctx, opts)
|
||||||
},
|
},
|
||||||
func() error { return gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}) },
|
func() error { gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); return nil },
|
||||||
func() { gui.State.ContextMgr.Pop() },
|
func() { gui.State.ContextMgr.Pop() },
|
||||||
func() types.Context { return gui.State.ContextMgr.Current() },
|
func() types.Context { return gui.State.ContextMgr.Current() },
|
||||||
gui.createMenu,
|
gui.createMenu,
|
||||||
@ -932,9 +927,7 @@ func (gui *Gui) runSubprocessWithSuspenseAndRefresh(subprocess *oscommands.CmdOb
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil {
|
gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -996,9 +989,7 @@ func (gui *Gui) loadNewRepo() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil {
|
gui.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := gui.os.UpdateWindowTitle(); err != nil {
|
if err := gui.os.UpdateWindowTitle(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -26,8 +26,8 @@ func (self *guiCommon) LogCommand(cmdStr string, isCommandLine bool) {
|
|||||||
self.gui.LogCommand(cmdStr, isCommandLine)
|
self.gui.LogCommand(cmdStr, isCommandLine)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *guiCommon) Refresh(opts types.RefreshOptions) error {
|
func (self *guiCommon) Refresh(opts types.RefreshOptions) {
|
||||||
return self.gui.helpers.Refresh.Refresh(opts)
|
self.gui.helpers.Refresh.Refresh(opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *guiCommon) PostRefreshUpdate(context types.Context) {
|
func (self *guiCommon) PostRefreshUpdate(context types.Context) {
|
||||||
|
@ -282,9 +282,7 @@ func (self *HandlerCreator) finalHandler(customCommand config.CustomCommand, ses
|
|||||||
}
|
}
|
||||||
output, err := cmdObj.RunWithOutput()
|
output, err := cmdObj.RunWithOutput()
|
||||||
|
|
||||||
if refreshErr := self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC}); err != nil {
|
self.c.Refresh(types.RefreshOptions{Mode: types.ASYNC})
|
||||||
self.c.Log.Error(refreshErr)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if customCommand.After != nil && customCommand.After.CheckForConflicts {
|
if customCommand.After != nil && customCommand.After.CheckForConflicts {
|
||||||
|
@ -29,7 +29,7 @@ type IGuiCommon interface {
|
|||||||
LogAction(action string)
|
LogAction(action string)
|
||||||
LogCommand(cmdStr string, isCommandLine bool)
|
LogCommand(cmdStr string, isCommandLine bool)
|
||||||
// we call this when we want to refetch some models and render the result. Internally calls PostRefreshUpdate
|
// we call this when we want to refetch some models and render the result. Internally calls PostRefreshUpdate
|
||||||
Refresh(RefreshOptions) error
|
Refresh(RefreshOptions)
|
||||||
// we call this when we've changed something in the view model but not the actual model,
|
// we call this when we've changed something in the view model but not the actual model,
|
||||||
// e.g. expanding or collapsing a folder in a file view. Calling 'Refresh' in this
|
// e.g. expanding or collapsing a folder in a file view. Calling 'Refresh' in this
|
||||||
// case would be overkill, although refresh will internally call 'PostRefreshUpdate'
|
// case would be overkill, although refresh will internally call 'PostRefreshUpdate'
|
||||||
|
@ -33,7 +33,7 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type RefreshOptions struct {
|
type RefreshOptions struct {
|
||||||
Then func() error
|
Then func()
|
||||||
Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything
|
Scope []RefreshableView // e.g. []RefreshableView{COMMITS, BRANCHES}. Leave empty to refresh everything
|
||||||
Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI
|
Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user