diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index 27f709f1e..e0b904f5b 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -2,6 +2,7 @@ package gui import ( "strconv" + "sync" "github.com/jesseduffield/gocui" "github.com/jesseduffield/lazygit/pkg/commands" @@ -75,15 +76,21 @@ func (gui *Gui) refreshCommits(g *gocui.Gui) error { return gui.createErrorPanel(gui.g, err.Error()) } - if err := gui.refreshCommitsWithLimit(); err != nil { - return gui.createErrorPanel(gui.g, err.Error()) - } + wg := sync.WaitGroup{} + wg.Add(2) - if err := gui.refreshReflogCommits(); err != nil { - return gui.createErrorPanel(gui.g, err.Error()) - } + go func() { + gui.refreshReflogCommits() + gui.refreshBranches() + wg.Done() + }() - gui.refreshBranches() + go func() { + gui.refreshCommitsWithLimit() + wg.Done() + }() + + wg.Wait() gui.refreshStatus() diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index 254abd044..831facb84 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -4,6 +4,7 @@ import ( "fmt" "sort" "strings" + "sync" "github.com/go-errors/errors" "github.com/jesseduffield/gocui" @@ -14,14 +15,28 @@ import ( var cyclableViews = []string{"status", "files", "branches", "commits", "stash"} func (gui *Gui) refreshSidePanels(g *gocui.Gui) error { - if err := gui.refreshCommits(g); err != nil { - return err - } - if err := gui.refreshFiles(); err != nil { - return err - } + wg := sync.WaitGroup{} - return gui.refreshStashEntries(g) + wg.Add(3) + + func() { + gui.refreshCommits(g) + wg.Done() + }() + + func() { + gui.refreshFiles() + wg.Done() + }() + + func() { + gui.refreshStashEntries(g) + wg.Done() + }() + + wg.Wait() + + return nil } func (gui *Gui) nextView(g *gocui.Gui, v *gocui.View) error {