From 906a49049e2c10886fbf7f97ffabddd78b975f0e Mon Sep 17 00:00:00 2001 From: Jesse Duffield Date: Sat, 28 Mar 2020 09:57:36 +1100 Subject: smart refreshing files --- pkg/gui/commit_files_panel.go | 2 +- pkg/gui/credentials_panel.go | 14 ++------------ pkg/gui/discard_changes_menu_panel.go | 4 ++-- pkg/gui/file_watching.go | 7 +------ pkg/gui/files_panel.go | 10 +++++----- pkg/gui/merge_panel.go | 4 ++-- pkg/gui/staging_panel.go | 2 +- pkg/gui/view_helpers.go | 4 ++-- pkg/gui/workspace_reset_options_panel.go | 12 ++++++------ 9 files changed, 22 insertions(+), 37 deletions(-) (limited to 'pkg/gui') diff --git a/pkg/gui/commit_files_panel.go b/pkg/gui/commit_files_panel.go index 4d4cdcbbb..899b3137f 100644 --- a/pkg/gui/commit_files_panel.go +++ b/pkg/gui/commit_files_panel.go @@ -67,7 +67,7 @@ func (gui *Gui) handleCheckoutCommitFile(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC}) } func (gui *Gui) handleDiscardOldFileChange(g *gocui.Gui, v *gocui.View) error { diff --git a/pkg/gui/credentials_panel.go b/pkg/gui/credentials_panel.go index 468035fd8..e1b918e56 100644 --- a/pkg/gui/credentials_panel.go +++ b/pkg/gui/credentials_panel.go @@ -36,19 +36,9 @@ func (gui *Gui) waitForPassUname(g *gocui.Gui, currentView *gocui.View, passOrUn func (gui *Gui) handleSubmitCredential(g *gocui.Gui, v *gocui.View) error { message := gui.trimmedContent(v) gui.credentials <- message - err := gui.refreshFiles() - if err != nil { - return err - } v.Clear() - err = v.SetCursor(0, 0) - if err != nil { - return err - } - _, err = g.SetViewOnBottom("credentials") - if err != nil { - return err - } + _ = v.SetCursor(0, 0) + _, _ = g.SetViewOnBottom("credentials") nextView, err := gui.g.View("confirmation") if err != nil { nextView = gui.getFilesView() diff --git a/pkg/gui/discard_changes_menu_panel.go b/pkg/gui/discard_changes_menu_panel.go index 761551a6a..46722e1e5 100644 --- a/pkg/gui/discard_changes_menu_panel.go +++ b/pkg/gui/discard_changes_menu_panel.go @@ -20,7 +20,7 @@ func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.DiscardAllFileChanges(file); err != nil { return err } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, } @@ -33,7 +33,7 @@ func (gui *Gui) handleCreateDiscardMenu(g *gocui.Gui, v *gocui.View) error { return err } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }) } diff --git a/pkg/gui/file_watching.go b/pkg/gui/file_watching.go index 47d426c87..7e5e20a76 100644 --- a/pkg/gui/file_watching.go +++ b/pkg/gui/file_watching.go @@ -132,12 +132,7 @@ func (gui *Gui) watchFilesForChanges() { } // only refresh if we're not already if !gui.State.IsRefreshingFiles { - if err := gui.refreshFiles(); err != nil { - err = gui.createErrorPanel(gui.g, err.Error()) - if err != nil { - gui.Log.Error(err) - } - } + gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) } // watch for errors diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go index bee4cc6f8..21195957e 100644 --- a/pkg/gui/files_panel.go +++ b/pkg/gui/files_panel.go @@ -194,7 +194,7 @@ func (gui *Gui) handleFilePress(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - if err := gui.refreshFiles(); err != nil { + if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil { return err } @@ -229,7 +229,7 @@ func (gui *Gui) handleStageAll(g *gocui.Gui, v *gocui.View) error { _ = gui.createErrorPanel(g, err.Error()) } - if err := gui.refreshFiles(); err != nil { + if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil { return err } @@ -252,7 +252,7 @@ func (gui *Gui) handleIgnoreFile(g *gocui.Gui, v *gocui.View) error { if err := gui.GitCommand.RemoveTrackedFiles(file.Name); err != nil { return err } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}) }, nil) } @@ -260,7 +260,7 @@ func (gui *Gui) handleIgnoreFile(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}) } func (gui *Gui) handleWIPCommitPress(g *gocui.Gui, filesView *gocui.View) error { @@ -362,7 +362,7 @@ func (gui *Gui) handleFileOpen(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) handleRefreshFiles(g *gocui.Gui, v *gocui.View) error { - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}) } func (gui *Gui) refreshStateFiles() error { diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go index e94d5541c..fa238ccb7 100644 --- a/pkg/gui/merge_panel.go +++ b/pkg/gui/merge_panel.go @@ -261,7 +261,7 @@ func (gui *Gui) renderMergeOptions() error { func (gui *Gui) handleEscapeMerge(g *gocui.Gui, v *gocui.View) error { gui.State.Panels.Merging.EditHistory = stack.New() - if err := gui.refreshFiles(); err != nil { + if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil { return err } // it's possible this method won't be called from the merging view so we need to @@ -276,7 +276,7 @@ func (gui *Gui) handleCompleteMerge() error { if err := gui.stageSelectedFile(gui.g); err != nil { return err } - if err := gui.refreshFiles(); err != nil { + if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil { return err } // if we got conflicts after unstashing, we don't want to call any git diff --git a/pkg/gui/staging_panel.go b/pkg/gui/staging_panel.go index 08a39cb90..77afcda86 100644 --- a/pkg/gui/staging_panel.go +++ b/pkg/gui/staging_panel.go @@ -151,7 +151,7 @@ func (gui *Gui) applySelection(reverse bool) error { state.SelectMode = LINE } - if err := gui.refreshFiles(); err != nil { + if err := gui.refreshSidePanels(refreshOptions{scope: []int{FILES}}); err != nil { return err } if err := gui.refreshStagingPanel(false, -1); err != nil { diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index fbf8ad847..60d548bcb 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -22,6 +22,7 @@ const ( REFLOG TAGS REMOTES + STATUS ) const ( @@ -55,7 +56,7 @@ func (gui *Gui) refreshSidePanels(options refreshOptions) error { f := func() { var scopeMap map[int]bool if len(options.scope) == 0 { - scopeMap = intArrToMap([]int{COMMITS, BRANCHES, FILES, STASH, REFLOG, TAGS, REMOTES}) + scopeMap = intArrToMap([]int{COMMITS, BRANCHES, FILES, STASH, REFLOG, TAGS, REMOTES, STATUS}) } else { scopeMap = intArrToMap(options.scope) } @@ -82,7 +83,6 @@ func (gui *Gui) refreshSidePanels(options refreshOptions) error { } wg.Done() }() - } if scopeMap[STASH] { diff --git a/pkg/gui/workspace_reset_options_panel.go b/pkg/gui/workspace_reset_options_panel.go index f4ceb633c..37928c0aa 100644 --- a/pkg/gui/workspace_reset_options_panel.go +++ b/pkg/gui/workspace_reset_options_panel.go @@ -19,7 +19,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, { @@ -32,7 +32,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, { @@ -45,7 +45,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, { @@ -58,7 +58,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, { @@ -71,7 +71,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, { @@ -84,7 +84,7 @@ func (gui *Gui) handleCreateResetMenu(g *gocui.Gui, v *gocui.View) error { return gui.createErrorPanel(gui.g, err.Error()) } - return gui.refreshFiles() + return gui.refreshSidePanels(refreshOptions{mode: ASYNC, scope: []int{FILES}}) }, }, } -- cgit v1.2.3