diff options
Diffstat (limited to 'pkg/gui')
-rw-r--r-- | pkg/gui/commits_panel.go | 38 | ||||
-rw-r--r-- | pkg/gui/keybindings.go | 24 | ||||
-rw-r--r-- | pkg/gui/status_panel.go | 4 |
3 files changed, 59 insertions, 7 deletions
diff --git a/pkg/gui/commits_panel.go b/pkg/gui/commits_panel.go index 4bf0d4362..374f7ccf0 100644 --- a/pkg/gui/commits_panel.go +++ b/pkg/gui/commits_panel.go @@ -181,17 +181,45 @@ func (gui *Gui) handleRenameCommit(g *gocui.Gui, v *gocui.View) error { } func (gui *Gui) handleRenameCommitEditor(g *gocui.Gui, v *gocui.View) error { - subProcess, err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "reword") + subProcess, err := gui.GitCommand.RewordCommit(gui.State.Commits, gui.State.Panels.Commits.SelectedLine) if err != nil { - return err + return gui.createErrorPanel(gui.g, err.Error()) } if subProcess != nil { gui.SubProcess = subProcess - // g.Update(func(g *gocui.Gui) error { - // return gui.Errors.ErrSubProcess - // }) return gui.Errors.ErrSubProcess } return nil } + +func (gui *Gui) handleCommitDelete(g *gocui.Gui, v *gocui.View) error { + // TODO: i18n + return gui.createConfirmationPanel(gui.g, v, "Delete Commit", "Are you sure you want to delete this commit?", func(*gocui.Gui, *gocui.View) error { + err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "drop") + return gui.handleGenericMergeCommandResult(err) + }, nil) +} + +func (gui *Gui) handleCommitMoveDown(g *gocui.Gui, v *gocui.View) error { + gui.State.Panels.Commits.SelectedLine++ + + err := gui.GitCommand.MoveCommitDown(gui.State.Commits, gui.State.Panels.Commits.SelectedLine-1) + return gui.handleGenericMergeCommandResult(err) +} + +func (gui *Gui) handleCommitMoveUp(g *gocui.Gui, v *gocui.View) error { + if gui.State.Panels.Commits.SelectedLine == 0 { + return gui.createErrorPanel(gui.g, "You cannot move the topmost commit up") // TODO: i18n + } + + gui.State.Panels.Commits.SelectedLine-- + + err := gui.GitCommand.MoveCommitDown(gui.State.Commits, gui.State.Panels.Commits.SelectedLine) + return gui.handleGenericMergeCommandResult(err) +} + +func (gui *Gui) handleCommitEdit(g *gocui.Gui, v *gocui.View) error { + err := gui.GitCommand.InteractiveRebase(gui.State.Commits, gui.State.Panels.Commits.SelectedLine, "edit") + return gui.handleGenericMergeCommandResult(err) +} diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go index df6bd8ee3..c0becfe2b 100644 --- a/pkg/gui/keybindings.go +++ b/pkg/gui/keybindings.go @@ -311,6 +311,30 @@ func (gui *Gui) GetInitialKeybindings() []*Binding { Handler: gui.handleCommitFixup, Description: gui.Tr.SLocalize("fixupCommit"), }, { + ViewName: "commits", + Key: 'd', + Modifier: gocui.ModNone, + Handler: gui.handleCommitDelete, + Description: gui.Tr.SLocalize("deleteCommit"), + }, { + ViewName: "commits", + Key: 'J', + Modifier: gocui.ModNone, + Handler: gui.handleCommitMoveDown, + Description: gui.Tr.SLocalize("moveDownCommit"), + }, { + ViewName: "commits", + Key: 'K', + Modifier: gocui.ModNone, + Handler: gui.handleCommitMoveUp, + Description: gui.Tr.SLocalize("moveUpCommit"), + }, { + ViewName: "commits", + Key: 'e', + Modifier: gocui.ModNone, + Handler: gui.handleCommitEdit, + Description: gui.Tr.SLocalize("editCommit"), + }, { ViewName: "stash", Key: gocui.KeySpace, Modifier: gocui.ModNone, diff --git a/pkg/gui/status_panel.go b/pkg/gui/status_panel.go index 06b94d722..a6bed8f83 100644 --- a/pkg/gui/status_panel.go +++ b/pkg/gui/status_panel.go @@ -94,11 +94,11 @@ func (gui *Gui) updateWorkTreeState() error { gui.State.WorkingTreeState = "merging" return nil } - rebasing, err := gui.GitCommand.IsInRebaseState() + rebaseMode, err := gui.GitCommand.RebaseMode() if err != nil { return err } - if rebasing { + if rebaseMode != "" { gui.State.WorkingTreeState = "rebasing" return nil } |