mirror of
https://github.com/jesseduffield/lazygit.git
synced 2024-12-04 10:34:55 +02:00
Merge pull request #2377 from shinhs0506/clear-staging-after-commit
This commit is contained in:
commit
4780953cef
@ -52,7 +52,7 @@ func (gui *Gui) pushContext(c types.Context, opts types.OnFocusOpts) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
contextsToDeactivate := gui.pushToContextStack(c)
|
||||
contextsToDeactivate, contextToActivate := gui.pushToContextStack(c)
|
||||
|
||||
for _, contextToDeactivate := range contextsToDeactivate {
|
||||
if err := gui.deactivateContext(contextToDeactivate, types.OnFocusLostOpts{NewContextKey: c.GetKey()}); err != nil {
|
||||
@ -60,16 +60,28 @@ func (gui *Gui) pushContext(c types.Context, opts types.OnFocusOpts) error {
|
||||
}
|
||||
}
|
||||
|
||||
return gui.activateContext(c, opts)
|
||||
if contextToActivate == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return gui.activateContext(contextToActivate, opts)
|
||||
}
|
||||
|
||||
// Adjusts the context stack based on the context that's being pushed and returns contexts to deactivate
|
||||
func (gui *Gui) pushToContextStack(c types.Context) []types.Context {
|
||||
// Adjusts the context stack based on the context that's being pushed and
|
||||
// returns (contexts to deactivate, context to activate)
|
||||
func (gui *Gui) pushToContextStack(c types.Context) ([]types.Context, types.Context) {
|
||||
contextsToDeactivate := []types.Context{}
|
||||
|
||||
gui.State.ContextManager.Lock()
|
||||
defer gui.State.ContextManager.Unlock()
|
||||
|
||||
if len(gui.State.ContextManager.ContextStack) > 0 &&
|
||||
c == gui.State.ContextManager.ContextStack[len(gui.State.ContextManager.ContextStack)-1] {
|
||||
// Context being pushed is already on top of the stack: nothing to
|
||||
// deactivate or activate
|
||||
return contextsToDeactivate, nil
|
||||
}
|
||||
|
||||
if len(gui.State.ContextManager.ContextStack) == 0 {
|
||||
gui.State.ContextManager.ContextStack = append(gui.State.ContextManager.ContextStack, c)
|
||||
} else if c.GetKind() == types.SIDE_CONTEXT {
|
||||
@ -108,7 +120,7 @@ func (gui *Gui) pushToContextStack(c types.Context) []types.Context {
|
||||
}
|
||||
}
|
||||
|
||||
return contextsToDeactivate
|
||||
return contextsToDeactivate, c
|
||||
}
|
||||
|
||||
func (gui *Gui) popContext() error {
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/services/custom_commands"
|
||||
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||
"github.com/jesseduffield/lazygit/pkg/snake"
|
||||
)
|
||||
|
||||
@ -92,6 +93,9 @@ func (gui *Gui) resetControllers() {
|
||||
|
||||
onCommitSuccess := func() {
|
||||
gui.State.savedCommitMessage = ""
|
||||
_ = gui.c.Refresh(types.RefreshOptions{
|
||||
Scope: []types.RefreshableView{types.STAGING},
|
||||
})
|
||||
}
|
||||
|
||||
commitMessageController := controllers.NewCommitMessageController(
|
||||
|
@ -63,9 +63,9 @@ type ContextManager struct {
|
||||
sync.RWMutex
|
||||
}
|
||||
|
||||
func NewContextManager(initialContext types.Context) ContextManager {
|
||||
func NewContextManager() ContextManager {
|
||||
return ContextManager{
|
||||
ContextStack: []types.Context{initialContext},
|
||||
ContextStack: []types.Context{},
|
||||
RWMutex: sync.RWMutex{},
|
||||
}
|
||||
}
|
||||
@ -298,11 +298,15 @@ func (gui *Gui) resetState(startArgs appTypes.StartArgs, reuseState bool) {
|
||||
},
|
||||
ScreenMode: initialScreenMode,
|
||||
// TODO: put contexts in the context manager
|
||||
ContextManager: NewContextManager(initialContext),
|
||||
ContextManager: NewContextManager(),
|
||||
Contexts: contextTree,
|
||||
WindowViewNameMap: initialWindowViewNameMap,
|
||||
}
|
||||
|
||||
if err := gui.c.PushContext(initialContext); err != nil {
|
||||
gui.c.Log.Error(err)
|
||||
}
|
||||
|
||||
gui.RepoStateMap[Repo(currentDir)] = gui.State
|
||||
}
|
||||
|
||||
|
@ -53,8 +53,12 @@ var Staged = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Contains(commitMessage),
|
||||
)
|
||||
|
||||
t.Views().StagingSecondary().IsFocused()
|
||||
t.Views().StagingSecondary().
|
||||
IsEmpty()
|
||||
|
||||
// TODO: assert that the staging panel has been refreshed (it currently does not get correctly refreshed)
|
||||
t.Views().Staging().
|
||||
IsFocused().
|
||||
Content(Contains("+myfile content")).
|
||||
Content(DoesNotContain("+with a second line"))
|
||||
},
|
||||
})
|
||||
|
@ -53,8 +53,12 @@ var StagedWithoutHooks = NewIntegrationTest(NewIntegrationTestArgs{
|
||||
Contains("WIP" + commitMessage),
|
||||
)
|
||||
|
||||
t.Views().StagingSecondary().IsFocused()
|
||||
t.Views().StagingSecondary().
|
||||
IsEmpty()
|
||||
|
||||
// TODO: assert that the staging panel has been refreshed (it currently does not get correctly refreshed)
|
||||
t.Views().Staging().
|
||||
IsFocused().
|
||||
Content(Contains("+myfile content")).
|
||||
Content(DoesNotContain("+with a second line"))
|
||||
},
|
||||
})
|
||||
|
Loading…
Reference in New Issue
Block a user