summaryrefslogtreecommitdiffstats
path: root/pkg/gui/commits_panel.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/commits_panel.go')
-rw-r--r--pkg/gui/commits_panel.go102
1 files changed, 50 insertions, 52 deletions
diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go
index be291091c..2591fa240 100644
--- a/pkg/gui/commits_panel.go
+++ b/pkg/gui/commits_panel.go
@@ -9,31 +9,54 @@ import (
"github.com/jesseduffield/lazygit/pkg/utils"
)
+// list panel functions
+
+func (gui *Gui) getSelectedCommit(g *gocui.Gui) *commands.Commit {
+ selectedLine := gui.State.Panels.Commits.SelectedLine
+ if selectedLine == -1 {
+ return nil
+ }
+
+ return gui.State.Commits[selectedLine]
+}
+
+func (gui *Gui) handleCommitSelect(g *gocui.Gui, v *gocui.View) error {
+ commit := gui.getSelectedCommit(g)
+ if commit == nil {
+ return gui.renderString(g, "main", gui.Tr.SLocalize("NoCommitsThisBranch"))
+ }
+
+ if err := gui.focusPoint(0, gui.State.Panels.Commits.SelectedLine, v); err != nil {
+ return err
+ }
+ commitText, err := gui.GitCommand.Show(commit.Sha)
+ if err != nil {
+ return err
+ }
+ return gui.renderString(g, "main", commitText)
+}
+
func (gui *Gui) refreshCommits(g *gocui.Gui) error {
g.Update(func(*gocui.Gui) error {
commits, err := gui.GitCommand.GetCommits()
if err != nil {
return err
}
-
gui.State.Commits = commits
- v, err := g.View("commits")
- if err != nil {
- return err
- }
gui.refreshSelectedLine(&gui.State.Panels.Commits.SelectedLine, len(gui.State.Commits))
- v.Clear()
-
list, err := utils.RenderList(gui.State.Commits)
if err != nil {
return err
}
+
+ v := gui.getCommitsView(gui.g)
+ v.Clear()
fmt.Fprint(v, list)
gui.refreshStatus(g)
- if g.CurrentView().Name() == "commits" {
+ if v == g.CurrentView() {
gui.handleCommitSelect(g, v)
}
return nil
@@ -41,6 +64,22 @@ func (gui *Gui) refreshCommits(g *gocui.Gui) error {
return nil
}
+func (gui *Gui) handleCommitsNextLine(g *gocui.Gui, v *gocui.View) error {
+ panelState := gui.State.Panels.Commits
+ gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Commits), false)
+
+ return gui.handleCommitSelect(gui.g, v)
+}
+
+func (gui *Gui) handleCommitsPrevLine(g *gocui.Gui, v *gocui.View) error {
+ panelState := gui.State.Panels.Commits
+ gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Commits), true)
+
+ return gui.handleCommitSelect(gui.g, v)
+}
+
+// specific functions
+
func (gui *Gui) handleResetToCommit(g *gocui.Gui, commitView *gocui.View) error {
return gui.createConfirmationPanel(g, commitView, gui.Tr.SLocalize("ResetToCommit"), gui.Tr.SLocalize("SureResetThisCommit"), func(g *gocui.Gui, v *gocui.View) error {
commit := gui.getSelectedCommit(g)
@@ -61,24 +100,8 @@ func (gui *Gui) handleResetToCommit(g *gocui.Gui, commitView *gocui.View) error
}, nil)
}
-func (gui *Gui) handleCommitSelect(g *gocui.Gui, v *gocui.View) error {
- commit := gui.getSelectedCommit(g)
- if commit == nil {
- return gui.renderString(g, "main", gui.Tr.SLocalize("NoCommitsThisBranch"))
- }
-
- if err := gui.focusPoint(0, gui.State.Panels.Commits.SelectedLine, v); err != nil {
- return err
- }
- commitText, err := gui.GitCommand.Show(commit.Sha)
- if err != nil {
- return err
- }
- return gui.renderString(g, "main", commitText)
-}
-
func (gui *Gui) handleCommitSquashDown(g *gocui.Gui, v *gocui.View) error {
- if gui.getItemPosition(v) != 0 {
+ if gui.State.Panels.Commits.SelectedLine != 0 {
return gui.createErrorPanel(g, gui.Tr.SLocalize("OnlySquashTopmostCommit"))
}
if len(gui.State.Commits) <= 1 {
@@ -134,7 +157,7 @@ func (gui *Gui) handleCommitFixup(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error {
- if gui.getItemPosition(gui.getCommitsView(g)) != 0 {
+ if gui.State.Panels.Commits.SelectedLine != 0 {
return gui.createErrorPanel(g, gui.Tr.SLocalize("OnlyRenameTopCommit"))
}
return gui.createPromptPanel(g, v, gui.Tr.SLocalize("renameCommit"), func(g *gocui.Gui, v *gocui.View) error {
@@ -149,7 +172,7 @@ func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleRenameCommitEditor(g *gocui.Gui, v *gocui.View) error {
- if gui.getItemPosition(gui.getCommitsView(g)) != 0 {
+ if gui.State.Panels.Commits.SelectedLine != 0 {
return gui.createErrorPanel(g, gui.Tr.SLocalize("OnlyRenameTopCommit"))
}
@@ -160,28 +183,3 @@ func (gui *Gui) handleRenameCommitEditor(g *gocui.Gui, v *gocui.View) error {
return nil
}
-
-func (gui *Gui) getSelectedCommit(g *gocui.Gui) *commands.Commit {
- selectedLine := gui.State.Panels.Commits.SelectedLine
- if selectedLine == -1 {
- return nil
- }
-
- return gui.State.Commits[selectedLine]
-}
-
-func (gui *Gui) handleCommitsNextLine(g *gocui.Gui, v *gocui.View) error {
- gui.Log.Info(utils.AsJson(gui.State.Panels))
- panelState := gui.State.Panels.Commits
- gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Commits), false)
-
- return gui.handleCommitSelect(gui.g, v)
-}
-
-func (gui *Gui) handleCommitsPrevLine(g *gocui.Gui, v *gocui.View) error {
- gui.Log.Info(utils.AsJson(gui.State.Panels))
- panelState := gui.State.Panels.Commits
- gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Commits), true)
-
- return gui.handleCommitSelect(gui.g, v)
-}