diff --git a/docs/keybindings/Keybindings_en.md b/docs/keybindings/Keybindings_en.md
index 38302fcd8..3a1d21fbd 100644
--- a/docs/keybindings/Keybindings_en.md
+++ b/docs/keybindings/Keybindings_en.md
@@ -146,6 +146,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
►: select next conflict
▲: select previous hunk
▼: select next hunk
+ e: edit file
+ o: open file
z: undo
diff --git a/docs/keybindings/Keybindings_nl.md b/docs/keybindings/Keybindings_nl.md
index 3d5e2cecb..8778d1105 100644
--- a/docs/keybindings/Keybindings_nl.md
+++ b/docs/keybindings/Keybindings_nl.md
@@ -146,6 +146,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
►: selecteer volgende conflict
▲: selecteer bovenste hunk
▼: selecteer onderste hunk
+ e: verander bestand
+ o: open bestand
z: ongedaan maken
diff --git a/docs/keybindings/Keybindings_pl.md b/docs/keybindings/Keybindings_pl.md
index 7c2427949..49940447a 100644
--- a/docs/keybindings/Keybindings_pl.md
+++ b/docs/keybindings/Keybindings_pl.md
@@ -219,6 +219,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
►: następny konflikt
▲: wybierz poprzedni kawałek
▼: wybierz następny kawałek
+ e: edytuj plik
+ o: otwórz plik
z: cofnij
diff --git a/docs/keybindings/Keybindings_zh.md b/docs/keybindings/Keybindings_zh.md
index aea56c1c2..c3f313771 100644
--- a/docs/keybindings/Keybindings_zh.md
+++ b/docs/keybindings/Keybindings_zh.md
@@ -216,6 +216,8 @@ _This file is auto-generated. To update, make the changes in the pkg/i18n direct
►: 选择下一个冲突
▲: 选择顶部块
▼: 选择底部块
+ e: 编辑文件
+ o: 打开文件
z: 撤销
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index 7a2d5f757..8598502ef 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -671,6 +671,20 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
Modifier: gocui.ModNone,
Handler: self.handleSelectNextConflictHunk,
},
+ {
+ ViewName: "main",
+ Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
+ Key: opts.GetKey(opts.Config.Universal.Edit),
+ Handler: self.handleMergeConflictEditFileAtLine,
+ Description: self.c.Tr.LcEditFile,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
+ Key: opts.GetKey(opts.Config.Universal.OpenFile),
+ Handler: self.handleMergeConflictOpenFileAtLine,
+ Description: self.c.Tr.LcOpenFile,
+ },
{
ViewName: "main",
Contexts: []string{string(context.MAIN_MERGING_CONTEXT_KEY)},
diff --git a/pkg/gui/merge_panel.go b/pkg/gui/merge_panel.go
index b9a00eaa2..4d9c7304b 100644
--- a/pkg/gui/merge_panel.go
+++ b/pkg/gui/merge_panel.go
@@ -299,3 +299,23 @@ func (gui *Gui) switchToMerge(path string) error {
return gui.c.PushContext(gui.State.Contexts.Merging)
}
+
+func (gui *Gui) handleMergeConflictEditFileAtLine() error {
+ file := gui.getSelectedFile()
+ if file == nil {
+ return nil
+ }
+
+ lineNumber := gui.State.Panels.Merging.GetSelectedLine()
+ return gui.helpers.Files.EditFileAtLine(file.GetPath(), lineNumber)
+}
+
+func (gui *Gui) handleMergeConflictOpenFileAtLine() error {
+ file := gui.getSelectedFile()
+ if file == nil {
+ return nil
+ }
+
+ lineNumber := gui.State.Panels.Merging.GetSelectedLine()
+ return gui.helpers.Files.OpenFileAtLine(file.GetPath(), lineNumber)
+}
diff --git a/pkg/gui/mergeconflicts/state.go b/pkg/gui/mergeconflicts/state.go
index 3d0254e15..41a072617 100644
--- a/pkg/gui/mergeconflicts/state.go
+++ b/pkg/gui/mergeconflicts/state.go
@@ -182,3 +182,13 @@ func (s *State) ContentAfterConflictResolve(selection Selection) (bool, string,
return true, content, nil
}
+
+func (s *State) GetSelectedLine() int {
+ conflict := s.currentConflict()
+ if conflict == nil {
+ return 1
+ }
+ selection := s.Selection()
+ startIndex, _ := selection.bounds(conflict)
+ return startIndex + 1
+}