mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-17 22:32:58 +02:00
better keybindings for patch building mode
This commit is contained in:
parent
4c9b620bd0
commit
79299be3b2
@ -1137,16 +1137,8 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
|||||||
Contexts: []string{"patch-building"},
|
Contexts: []string{"patch-building"},
|
||||||
Key: gui.getKey("universal.select"),
|
Key: gui.getKey("universal.select"),
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleAddSelectionToPatch,
|
Handler: gui.handleToggleSelectionForPatch,
|
||||||
Description: gui.Tr.SLocalize("StageSelection"),
|
Description: gui.Tr.SLocalize("ToggleSelectionForPatch"),
|
||||||
},
|
|
||||||
{
|
|
||||||
ViewName: "main",
|
|
||||||
Contexts: []string{"patch-building"},
|
|
||||||
Key: gui.getKey("universal.remove"),
|
|
||||||
Modifier: gocui.ModNone,
|
|
||||||
Handler: gui.handleRemoveSelectionFromPatch,
|
|
||||||
Description: gui.Tr.SLocalize("ResetSelection"),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
|
@ -220,6 +220,10 @@ func (gui *Gui) handleMouseScrollDown(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return gui.handleCycleLine(1)
|
return gui.handleCycleLine(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) getSelectedCommitFileName() string {
|
||||||
|
return gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name
|
||||||
|
}
|
||||||
|
|
||||||
func (gui *Gui) refreshMainView() error {
|
func (gui *Gui) refreshMainView() error {
|
||||||
state := gui.State.Panels.LineByLine
|
state := gui.State.Panels.LineByLine
|
||||||
|
|
||||||
@ -227,7 +231,7 @@ func (gui *Gui) refreshMainView() error {
|
|||||||
// I'd prefer not to have knowledge of contexts using this file but I'm not sure
|
// I'd prefer not to have knowledge of contexts using this file but I'm not sure
|
||||||
// how to get around this
|
// how to get around this
|
||||||
if gui.State.MainContext == "patch-building" {
|
if gui.State.MainContext == "patch-building" {
|
||||||
filename := gui.State.CommitFiles[gui.State.Panels.CommitFiles.SelectedLine].Name
|
filename := gui.getSelectedCommitFileName()
|
||||||
includedLineIndices = gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
includedLineIndices = gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
||||||
}
|
}
|
||||||
colorDiff := state.PatchParser.Render(state.FirstLineIdx, state.LastLineIdx, includedLineIndices)
|
colorDiff := state.PatchParser.Render(state.FirstLineIdx, state.LastLineIdx, includedLineIndices)
|
||||||
|
@ -2,6 +2,7 @@ package gui
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gui *Gui) refreshPatchBuildingPanel(selectedLineIdx int) error {
|
func (gui *Gui) refreshPatchBuildingPanel(selectedLineIdx int) error {
|
||||||
@ -42,38 +43,24 @@ func (gui *Gui) refreshPatchBuildingPanel(selectedLineIdx int) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleAddSelectionToPatch(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleToggleSelectionForPatch(g *gocui.Gui, v *gocui.View) error {
|
||||||
state := gui.State.Panels.LineByLine
|
state := gui.State.Panels.LineByLine
|
||||||
|
|
||||||
|
toggleFunc := gui.GitCommand.PatchManager.AddFileLineRange
|
||||||
|
filename := gui.getSelectedCommitFileName()
|
||||||
|
includedLineIndices := gui.GitCommand.PatchManager.GetFileIncLineIndices(filename)
|
||||||
|
currentLineIsStaged := utils.IncludesInt(includedLineIndices, state.SelectedLineIdx)
|
||||||
|
if currentLineIsStaged {
|
||||||
|
toggleFunc = gui.GitCommand.PatchManager.RemoveFileLineRange
|
||||||
|
}
|
||||||
|
|
||||||
// add range of lines to those set for the file
|
// add range of lines to those set for the file
|
||||||
commitFile := gui.getSelectedCommitFile(gui.g)
|
commitFile := gui.getSelectedCommitFile(gui.g)
|
||||||
if commitFile == nil {
|
if commitFile == nil {
|
||||||
return gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles"))
|
return gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles"))
|
||||||
}
|
}
|
||||||
|
|
||||||
gui.GitCommand.PatchManager.AddFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx)
|
toggleFunc(commitFile.Name, state.FirstLineIdx, state.LastLineIdx)
|
||||||
|
|
||||||
if err := gui.refreshCommitFilesView(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := gui.refreshPatchBuildingPanel(-1); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (gui *Gui) handleRemoveSelectionFromPatch(g *gocui.Gui, v *gocui.View) error {
|
|
||||||
state := gui.State.Panels.LineByLine
|
|
||||||
|
|
||||||
// add range of lines to those set for the file
|
|
||||||
commitFile := gui.getSelectedCommitFile(gui.g)
|
|
||||||
if commitFile == nil {
|
|
||||||
return gui.renderString(gui.g, "commitFiles", gui.Tr.SLocalize("NoCommiteFiles"))
|
|
||||||
}
|
|
||||||
|
|
||||||
gui.GitCommand.PatchManager.RemoveFileLineRange(commitFile.Name, state.FirstLineIdx, state.LastLineIdx)
|
|
||||||
|
|
||||||
if err := gui.refreshCommitFilesView(); err != nil {
|
if err := gui.refreshCommitFilesView(); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -511,6 +511,9 @@ func addEnglish(i18nObject *i18n.Bundle) error {
|
|||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "ToggleSelectHunk",
|
ID: "ToggleSelectHunk",
|
||||||
Other: `toggle select hunk`,
|
Other: `toggle select hunk`,
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "ToggleSelectionForPatch",
|
||||||
|
Other: `add/remove line(s) to patch`,
|
||||||
},
|
},
|
||||||
&i18n.Message{
|
&i18n.Message{
|
||||||
ID: "TogglePanel",
|
ID: "TogglePanel",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user