1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-01-04 03:48:07 +02:00

reset state on each Run() call

This commit is contained in:
Jesse Duffield 2020-03-29 10:35:12 +11:00
parent a8db672ffb
commit d90d9d7330
4 changed files with 15 additions and 5 deletions

View File

@ -283,6 +283,8 @@ func NewGui(log *logrus.Entry, gitCommand *commands.GitCommand, oSCommand *comma
// Run setup the gui with keybindings and start the mainloop
func (gui *Gui) Run() error {
gui.resetState()
g, err := gocui.NewGui(gocui.Output256, OverlappingEdges)
if err != nil {
return err

View File

@ -32,6 +32,7 @@ func (gui *Gui) handleCreateRecentReposMenu(g *gocui.Gui, v *gocui.View) error {
return err
}
gui.GitCommand = newGitCommand
gui.State.FilterPath = ""
return gui.Errors.ErrSwitchRepo
},
}

View File

@ -47,23 +47,30 @@ func (gui *Gui) handleReflogCommitSelect(g *gocui.Gui, v *gocui.View) error {
return nil
}
// the reflogs panel is the only panel where we cache data, in that we only
// load entries that have been created since we last ran the call. This means
// we need to be more careful with how we use this, and to ensure we're emptying
// the reflogs array when changing contexts.
func (gui *Gui) refreshReflogCommits() error {
// pulling state into its own variable incase it gets swapped out for another state
// and we get an out of bounds exception
state := gui.State
var lastReflogCommit *commands.Commit
if len(gui.State.ReflogCommits) > 0 {
lastReflogCommit = gui.State.ReflogCommits[0]
if len(state.ReflogCommits) > 0 {
lastReflogCommit = state.ReflogCommits[0]
}
commits, onlyObtainedNewReflogCommits, err := gui.GitCommand.GetReflogCommits(lastReflogCommit, gui.State.FilterPath)
commits, onlyObtainedNewReflogCommits, err := gui.GitCommand.GetReflogCommits(lastReflogCommit, state.FilterPath)
if err != nil {
return gui.surfaceError(err)
}
if onlyObtainedNewReflogCommits {
gui.State.ReflogCommits = append(commits, gui.State.ReflogCommits...)
state.ReflogCommits = append(commits, state.ReflogCommits...)
} else {
// if we haven't found it we're probably in a new repo so we don't want to
// retain the old reflog commits
gui.State.ReflogCommits = commits
state.ReflogCommits = commits
}
if gui.getCommitsView().Context == "reflog-commits" {