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 +}