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
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
contextsToDeactivate := gui.pushToContextStack(c)
|
contextsToDeactivate, contextToActivate := gui.pushToContextStack(c)
|
||||||
|
|
||||||
for _, contextToDeactivate := range contextsToDeactivate {
|
for _, contextToDeactivate := range contextsToDeactivate {
|
||||||
if err := gui.deactivateContext(contextToDeactivate, types.OnFocusLostOpts{NewContextKey: c.GetKey()}); err != nil {
|
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
|
// Adjusts the context stack based on the context that's being pushed and
|
||||||
func (gui *Gui) pushToContextStack(c types.Context) []types.Context {
|
// returns (contexts to deactivate, context to activate)
|
||||||
|
func (gui *Gui) pushToContextStack(c types.Context) ([]types.Context, types.Context) {
|
||||||
contextsToDeactivate := []types.Context{}
|
contextsToDeactivate := []types.Context{}
|
||||||
|
|
||||||
gui.State.ContextManager.Lock()
|
gui.State.ContextManager.Lock()
|
||||||
defer gui.State.ContextManager.Unlock()
|
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 {
|
if len(gui.State.ContextManager.ContextStack) == 0 {
|
||||||
gui.State.ContextManager.ContextStack = append(gui.State.ContextManager.ContextStack, c)
|
gui.State.ContextManager.ContextStack = append(gui.State.ContextManager.ContextStack, c)
|
||||||
} else if c.GetKind() == types.SIDE_CONTEXT {
|
} 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 {
|
func (gui *Gui) popContext() error {
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
|
"github.com/jesseduffield/lazygit/pkg/gui/controllers/helpers"
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking"
|
"github.com/jesseduffield/lazygit/pkg/gui/modes/cherrypicking"
|
||||||
"github.com/jesseduffield/lazygit/pkg/gui/services/custom_commands"
|
"github.com/jesseduffield/lazygit/pkg/gui/services/custom_commands"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
||||||
"github.com/jesseduffield/lazygit/pkg/snake"
|
"github.com/jesseduffield/lazygit/pkg/snake"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -92,6 +93,9 @@ func (gui *Gui) resetControllers() {
|
|||||||
|
|
||||||
onCommitSuccess := func() {
|
onCommitSuccess := func() {
|
||||||
gui.State.savedCommitMessage = ""
|
gui.State.savedCommitMessage = ""
|
||||||
|
_ = gui.c.Refresh(types.RefreshOptions{
|
||||||
|
Scope: []types.RefreshableView{types.STAGING},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
commitMessageController := controllers.NewCommitMessageController(
|
commitMessageController := controllers.NewCommitMessageController(
|
||||||
|
@ -63,9 +63,9 @@ type ContextManager struct {
|
|||||||
sync.RWMutex
|
sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewContextManager(initialContext types.Context) ContextManager {
|
func NewContextManager() ContextManager {
|
||||||
return ContextManager{
|
return ContextManager{
|
||||||
ContextStack: []types.Context{initialContext},
|
ContextStack: []types.Context{},
|
||||||
RWMutex: sync.RWMutex{},
|
RWMutex: sync.RWMutex{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -298,11 +298,15 @@ func (gui *Gui) resetState(startArgs appTypes.StartArgs, reuseState bool) {
|
|||||||
},
|
},
|
||||||
ScreenMode: initialScreenMode,
|
ScreenMode: initialScreenMode,
|
||||||
// TODO: put contexts in the context manager
|
// TODO: put contexts in the context manager
|
||||||
ContextManager: NewContextManager(initialContext),
|
ContextManager: NewContextManager(),
|
||||||
Contexts: contextTree,
|
Contexts: contextTree,
|
||||||
WindowViewNameMap: initialWindowViewNameMap,
|
WindowViewNameMap: initialWindowViewNameMap,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := gui.c.PushContext(initialContext); err != nil {
|
||||||
|
gui.c.Log.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
gui.RepoStateMap[Repo(currentDir)] = gui.State
|
gui.RepoStateMap[Repo(currentDir)] = gui.State
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,8 +53,12 @@ var Staged = NewIntegrationTest(NewIntegrationTestArgs{
|
|||||||
Contains(commitMessage),
|
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),
|
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