mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-08-13 20:04:25 +02:00
stop crash due to context stack not being initialized
This commit is contained in:
@@ -96,7 +96,7 @@ func (gui *Gui) refreshCommits() error {
|
||||
|
||||
go func() {
|
||||
_ = gui.refreshCommitsWithLimit()
|
||||
if gui.g.CurrentView() == gui.getCommitFilesView() || (gui.currentContext().GetKey() == gui.Contexts.PatchBuilding.Context.GetKey()) {
|
||||
if gui.g.CurrentView() == gui.getCommitFilesView() || (gui.currentContextKey() == gui.Contexts.PatchBuilding.Context.GetKey()) {
|
||||
_ = gui.refreshCommitFilesView()
|
||||
}
|
||||
wg.Done()
|
||||
|
@@ -208,12 +208,17 @@ func (gui *Gui) renderContextStack() string {
|
||||
return result
|
||||
}
|
||||
|
||||
func (gui *Gui) currentContext() Context {
|
||||
return gui.State.ContextStack[len(gui.State.ContextStack)-1]
|
||||
func (gui *Gui) currentContextKey() string {
|
||||
// on startup the stack can be empty so we'll return an empty string in that case
|
||||
if len(gui.State.ContextStack) == 0 {
|
||||
return ""
|
||||
}
|
||||
|
||||
return gui.State.ContextStack[len(gui.State.ContextStack)-1].GetKey()
|
||||
}
|
||||
|
||||
func (gui *Gui) createContextTree() {
|
||||
gui.Contexts = ContextTree{
|
||||
func (gui *Gui) contextTree() ContextTree {
|
||||
return ContextTree{
|
||||
Status: SimpleContextNode{
|
||||
Context: BasicContext{
|
||||
OnFocus: gui.handleStatusSelect,
|
||||
@@ -329,8 +334,10 @@ func (gui *Gui) createContextTree() {
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
gui.State.ViewContextMap = map[string]Context{
|
||||
func (gui *Gui) initialViewContextMap() map[string]Context {
|
||||
return map[string]Context{
|
||||
"status": gui.Contexts.Status.Context,
|
||||
"files": gui.Contexts.Files.Context,
|
||||
"branches": gui.Contexts.Branches.Context,
|
||||
@@ -344,7 +351,9 @@ func (gui *Gui) createContextTree() {
|
||||
"main": gui.Contexts.Normal.Context,
|
||||
"secondary": gui.Contexts.Normal.Context,
|
||||
}
|
||||
}
|
||||
|
||||
func (gui *Gui) setInitialViewContexts() {
|
||||
// arguably we should only have our ViewContextMap and we should do away with
|
||||
// contexts on views, or vice versa
|
||||
for viewName, context := range gui.State.ViewContextMap {
|
||||
|
@@ -282,10 +282,11 @@ func (gui *Gui) resetState() {
|
||||
EditHistory: stack.New(),
|
||||
},
|
||||
},
|
||||
SideView: nil,
|
||||
Ptmx: nil,
|
||||
FilterPath: prevFilterPath,
|
||||
Diff: prevDiff,
|
||||
SideView: nil,
|
||||
Ptmx: nil,
|
||||
FilterPath: prevFilterPath,
|
||||
Diff: prevDiff,
|
||||
ViewContextMap: gui.initialViewContextMap(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -306,6 +307,7 @@ func NewGui(log *logrus.Entry, gitCommand *commands.GitCommand, oSCommand *comma
|
||||
|
||||
gui.resetState()
|
||||
gui.State.FilterPath = filterPath
|
||||
gui.Contexts = gui.contextTree()
|
||||
|
||||
gui.watchFilesForChanges()
|
||||
|
||||
|
@@ -337,7 +337,7 @@ func (gui *Gui) layout(g *gocui.Gui) error {
|
||||
}
|
||||
|
||||
func (gui *Gui) onInitialViewsCreation() error {
|
||||
gui.createContextTree()
|
||||
gui.setInitialViewContexts()
|
||||
|
||||
if err := gui.switchContext(gui.Contexts.Files.Context); err != nil {
|
||||
return err
|
||||
|
@@ -234,7 +234,7 @@ func (gui *Gui) refreshMainView() error {
|
||||
var includedLineIndices []int
|
||||
// I'd prefer not to have knowledge of contexts using this file but I'm not sure
|
||||
// how to get around this
|
||||
if gui.currentContext().GetKey() == gui.Contexts.PatchBuilding.Context.GetKey() {
|
||||
if gui.currentContextKey() == gui.Contexts.PatchBuilding.Context.GetKey() {
|
||||
filename := gui.getSelectedCommitFileName()
|
||||
includedLineIndices = gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
||||
}
|
||||
|
Reference in New Issue
Block a user