mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-21 12:16:54 +02:00
show loading status for rebasing events
This commit is contained in:
parent
8305d8e72f
commit
4bb577ab7d
@ -1,6 +1,9 @@
|
|||||||
package gui
|
package gui
|
||||||
|
|
||||||
import "github.com/jesseduffield/lazygit/pkg/utils"
|
import (
|
||||||
|
"github.com/jesseduffield/gocui"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||||
|
)
|
||||||
|
|
||||||
type appStatus struct {
|
type appStatus struct {
|
||||||
name string
|
name string
|
||||||
@ -42,3 +45,26 @@ func (m *statusManager) getStatusString() string {
|
|||||||
}
|
}
|
||||||
return topStatus.name
|
return topStatus.name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithWaitingStatus wraps a function and shows a waiting status while the function is still executing
|
||||||
|
func (gui *Gui) WithWaitingStatus(name string, f func() error) error {
|
||||||
|
go func() {
|
||||||
|
gui.g.Update(func(g *gocui.Gui) error {
|
||||||
|
gui.statusManager.addWaitingStatus(name)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
defer gui.g.Update(func(g *gocui.Gui) error {
|
||||||
|
gui.statusManager.removeStatus(name)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
|
if err := f(); err != nil {
|
||||||
|
gui.g.Update(func(g *gocui.Gui) error {
|
||||||
|
return gui.createErrorPanel(gui.g, err.Error())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -144,8 +144,10 @@ func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Squash"), gui.Tr.SLocalize("SureSquashThisCommit"), func(g *gocui.Gui, v *gocui.View) error {
|
gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Squash"), gui.Tr.SLocalize("SureSquashThisCommit"), func(g *gocui.Gui, v *gocui.View) error {
|
||||||
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "squash")
|
return gui.WithWaitingStatus("squashing", func() error {
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "squash")
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}, nil)
|
}, nil)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -174,8 +176,10 @@ func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Fixup"), gui.Tr.SLocalize("SureFixupThisCommit"), func(g *gocui.Gui, v *gocui.View) error {
|
gui.createConfirmationPanel(g, v, gui.Tr.SLocalize("Fixup"), gui.Tr.SLocalize("SureFixupThisCommit"), func(g *gocui.Gui, v *gocui.View) error {
|
||||||
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "fixup")
|
return gui.WithWaitingStatus("fixing up", func() error {
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "fixup")
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}, nil)
|
}, nil)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -272,8 +276,10 @@ func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("DeleteCommitTitle"), gui.Tr.SLocalize("DeleteCommitPrompt"), func(*gocui.Gui, *gocui.View) error {
|
return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("DeleteCommitTitle"), gui.Tr.SLocalize("DeleteCommitPrompt"), func(*gocui.Gui, *gocui.View) error {
|
||||||
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop")
|
return gui.WithWaitingStatus("deleting", func() error {
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop")
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}, nil)
|
}, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,11 +297,13 @@ func (gui *Gui) handleCommitMoveDown(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return gui.refreshCommits(gui.g)
|
return gui.refreshCommits(gui.g)
|
||||||
}
|
}
|
||||||
|
|
||||||
err := gui.GitCommand.MoveCommitDown(gui.State.Commits, index)
|
return gui.WithWaitingStatus("moving", func() error {
|
||||||
if err == nil {
|
err := gui.GitCommand.MoveCommitDown(gui.State.Commits, index)
|
||||||
gui.State.Panels.Commits.SelectedLine++
|
if err == nil {
|
||||||
}
|
gui.State.Panels.Commits.SelectedLine++
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
}
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error {
|
||||||
@ -303,7 +311,6 @@ func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error {
|
|||||||
if index == 0 {
|
if index == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedCommit := gui.State.Commits[index]
|
selectedCommit := gui.State.Commits[index]
|
||||||
if selectedCommit.Status == "rebasing" {
|
if selectedCommit.Status == "rebasing" {
|
||||||
if err := gui.GitCommand.MoveTodoDown(index - 1); err != nil {
|
if err := gui.GitCommand.MoveTodoDown(index - 1); err != nil {
|
||||||
@ -313,11 +320,13 @@ func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return gui.refreshCommits(gui.g)
|
return gui.refreshCommits(gui.g)
|
||||||
}
|
}
|
||||||
|
|
||||||
err := gui.GitCommand.MoveCommitDown(gui.State.Commits, index-1)
|
return gui.WithWaitingStatus("moving", func() error {
|
||||||
if err == nil {
|
err := gui.GitCommand.MoveCommitDown(gui.State.Commits, index-1)
|
||||||
gui.State.Panels.Commits.SelectedLine--
|
if err == nil {
|
||||||
}
|
gui.State.Panels.Commits.SelectedLine--
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
}
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error {
|
||||||
@ -329,14 +338,18 @@ func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err = gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "edit")
|
return gui.WithWaitingStatus("rebasing", func() error {
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
err = gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "edit")
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleCommitAmendTo(g *gocui.Gui, v *gocui.View) error {
|
||||||
return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("AmendCommitTitle"), gui.Tr.SLocalize("AmendCommitPrompt"), func(*gocui.Gui, *gocui.View) error {
|
return gui.createConfirmationPanel(gui.g, v, gui.Tr.SLocalize("AmendCommitTitle"), gui.Tr.SLocalize("AmendCommitPrompt"), func(*gocui.Gui, *gocui.View) error {
|
||||||
err := gui.GitCommand.AmendTo(gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha)
|
return gui.WithWaitingStatus("amending", func() error {
|
||||||
return gui.handleGenericMergeCommandResult(err)
|
err := gui.GitCommand.AmendTo(gui.State.Commits[gui.State.Panels.Commits.SelectedLine].Sha)
|
||||||
|
return gui.handleGenericMergeCommandResult(err)
|
||||||
|
})
|
||||||
}, nil)
|
}, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user