mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-27 12:32:37 +02:00
more mutex safety with staging panel
This commit is contained in:
parent
a9049b4a82
commit
bb081ca764
@ -1275,7 +1275,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY},
|
Contexts: []string{MAIN_PATCH_BUILDING_CONTEXT_KEY},
|
||||||
Key: gui.getKey(config.Universal.Select),
|
Key: gui.getKey(config.Universal.Select),
|
||||||
Handler: gui.handleToggleSelectionForPatch,
|
Handler: gui.wrappedHandler(gui.handleToggleSelectionForPatch),
|
||||||
Description: gui.Tr.ToggleSelectionForPatch,
|
Description: gui.Tr.ToggleSelectionForPatch,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -341,7 +341,7 @@ func (gui *Gui) handleToggleSelectHunk() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) escapeLineByLinePanel() {
|
func (gui *Gui) escapeLineByLinePanel() {
|
||||||
gui.withLBLActiveCheck(func(*lineByLinePanelState) error {
|
_ = gui.withLBLActiveCheck(func(*lineByLinePanelState) error {
|
||||||
gui.State.Panels.LineByLine = nil
|
gui.State.Panels.LineByLine = nil
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package gui
|
package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/gocui"
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/utils"
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -58,9 +57,8 @@ func (gui *Gui) refreshPatchBuildingPanel(selectedLineIdx int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleToggleSelectionForPatch() error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
toggleFunc := gui.GitCommand.PatchManager.AddFileLineRange
|
toggleFunc := gui.GitCommand.PatchManager.AddFileLineRange
|
||||||
filename := gui.getSelectedCommitFileName()
|
filename := gui.getSelectedCommitFileName()
|
||||||
includedLineIndices, err := gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
includedLineIndices, err := gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
||||||
@ -78,7 +76,10 @@ func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleFunc(commitFile.Name, state.FirstLineIdx, state.LastLineIdx)
|
if err := toggleFunc(commitFile.Name, state.FirstLineIdx, state.LastLineIdx); err != nil {
|
||||||
|
// might actually want to return an error here
|
||||||
|
gui.Log.Error(err)
|
||||||
|
}
|
||||||
|
|
||||||
if err := gui.refreshCommitFilesView(); err != nil {
|
if err := gui.refreshCommitFilesView(); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -89,6 +90,7 @@ func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error
|
|||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleEscapePatchBuildingPanel() error {
|
func (gui *Gui) handleEscapePatchBuildingPanel() error {
|
||||||
|
@ -69,18 +69,18 @@ func (gui *Gui) refreshStagingPanel(forceSecondaryFocused bool, selectedLineIdx
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleTogglePanelClick(g *gocui.Gui, v *gocui.View) error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
state.SecondaryFocused = !state.SecondaryFocused
|
state.SecondaryFocused = !state.SecondaryFocused
|
||||||
|
|
||||||
return gui.refreshStagingPanel(false, v.SelectedLineIdx())
|
return gui.refreshStagingPanel(false, v.SelectedLineIdx())
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleTogglePanel(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleTogglePanel(g *gocui.Gui, v *gocui.View) error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
state.SecondaryFocused = !state.SecondaryFocused
|
state.SecondaryFocused = !state.SecondaryFocused
|
||||||
return gui.refreshStagingPanel(false, -1)
|
return gui.refreshStagingPanel(false, -1)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleStagingEscape() error {
|
func (gui *Gui) handleStagingEscape() error {
|
||||||
@ -90,14 +90,13 @@ func (gui *Gui) handleStagingEscape() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleToggleStagedSelection(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleToggleStagedSelection(g *gocui.Gui, v *gocui.View) error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
return gui.applySelection(state.SecondaryFocused)
|
return gui.applySelection(state.SecondaryFocused)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
if state.SecondaryFocused {
|
if state.SecondaryFocused {
|
||||||
// for backwards compatibility
|
// for backwards compatibility
|
||||||
return gui.applySelection(true)
|
return gui.applySelection(true)
|
||||||
@ -122,11 +121,11 @@ func (gui *Gui) handleResetSelection(g *gocui.Gui, v *gocui.View) error {
|
|||||||
} else {
|
} else {
|
||||||
return gui.applySelection(true)
|
return gui.applySelection(true)
|
||||||
}
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) applySelection(reverse bool) error {
|
func (gui *Gui) applySelection(reverse bool) error {
|
||||||
state := gui.State.Panels.LineByLine
|
return gui.withLBLActiveCheck(func(state *lineByLinePanelState) error {
|
||||||
|
|
||||||
file := gui.getSelectedFile()
|
file := gui.getSelectedFile()
|
||||||
if file == nil {
|
if file == nil {
|
||||||
return nil
|
return nil
|
||||||
@ -160,4 +159,5 @@ func (gui *Gui) applySelection(reverse bool) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user