summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/branches_panel.go11
-rw-r--r--pkg/gui/keybindings.go6
2 files changed, 10 insertions, 7 deletions
diff --git a/pkg/gui/branches_panel.go b/pkg/gui/branches_panel.go
index 11a4a0ebb..dbf4b007a 100644
--- a/pkg/gui/branches_panel.go
+++ b/pkg/gui/branches_panel.go
@@ -87,6 +87,10 @@ func (gui *Gui) deleteBranch(g *gocui.Gui, v *gocui.View, force bool) error {
if checkedOutBranch.Name == selectedBranch.Name {
return gui.createErrorPanel(g, gui.Tr.SLocalize("CantDeleteCheckOutBranch"))
}
+ return gui.deleteNamedBranch(g, v, selectedBranch, force)
+}
+
+func (gui *Gui) deleteNamedBranch(g *gocui.Gui, v *gocui.View, selectedBranch *commands.Branch, force bool) error {
title := gui.Tr.SLocalize("DeleteBranch")
var messageId string
if force {
@@ -102,7 +106,12 @@ func (gui *Gui) deleteBranch(g *gocui.Gui, v *gocui.View, force bool) error {
)
return gui.createConfirmationPanel(g, v, title, message, func(g *gocui.Gui, v *gocui.View) error {
if err := gui.GitCommand.DeleteBranch(selectedBranch.Name, force); err != nil {
- return gui.createErrorPanel(g, err.Error())
+ errMessage := err.Error()
+ if !force && strings.Contains(errMessage, "is not fully merged") {
+ return gui.deleteNamedBranch(g, v, selectedBranch, true)
+ } else {
+ return gui.createErrorPanel(g, errMessage)
+ }
}
return gui.refreshSidePanels(g)
}, nil)
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index cc1edc24b..8d07429a6 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -309,12 +309,6 @@ func (gui *Gui) GetKeybindings() []*Binding {
Description: gui.Tr.SLocalize("deleteBranch"),
}, {
ViewName: "branches",
- Key: 'D',
- Modifier: gocui.ModNone,
- Handler: gui.handleForceDeleteBranch,
- Description: gui.Tr.SLocalize("forceDeleteBranch"),
- }, {
- ViewName: "branches",
Key: 'm',
Modifier: gocui.ModNone,
Handler: gui.handleMerge,