summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyooooooga <eial5q265e5@gmail.com>2022-04-04 21:12:33 +0900
committerJesse Duffield <jessedduffield@gmail.com>2022-04-06 08:27:03 +1000
commit3b5a019e1a33bbb9b331d44956f98b2b8c4cd5a9 (patch)
tree8b4c129d57124441edee6a1d7d6734796498d1b6
parent53257db99d10bd533c134714b76965041c56cd19 (diff)
feat(merge_panel): Add open/edit files in merge conflict panel
-rw-r--r--docs/keybindings/Keybindings_en.md2
-rw-r--r--docs/keybindings/Keybindings_nl.md2
-rw-r--r--docs/keybindings/Keybindings_pl.md2
-rw-r--r--docs/keybindings/Keybindings_zh.md2
-rw-r--r--pkg/gui/keybindings.go14
-rw-r--r--pkg/gui/merge_panel.go20
-rw-r--r--pkg/gui/mergeconflicts/state.go10
7 files changed, 52 insertions, 0 deletions
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
<kbd>►</kbd>: select next conflict
<kbd>▲</kbd>: select previous hunk
<kbd>▼</kbd>: select next hunk
+ <kbd>e</kbd>: edit file
+ <kbd>o</kbd>: open file
<kbd>z</kbd>: undo
</pre>
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
<kbd>►</kbd>: selecteer volgende conflict
<kbd>▲</kbd>: selecteer bovenste hunk
<kbd>▼</kbd>: selecteer onderste hunk
+ <kbd>e</kbd>: verander bestand
+ <kbd>o</kbd>: open bestand
<kbd>z</kbd>: ongedaan maken
</pre>
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
<kbd>►</kbd>: następny konflikt
<kbd>▲</kbd>: wybierz poprzedni kawałek
<kbd>▼</kbd>: wybierz następny kawałek
+ <kbd>e</kbd>: edytuj plik
+ <kbd>o</kbd>: otwórz plik
<kbd>z</kbd>: cofnij
</pre>
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
<kbd>►</kbd>: 选择下一个冲突
<kbd>▲</kbd>: 选择顶部块
<kbd>▼</kbd>: 选择底部块
+ <kbd>e</kbd>: 编辑文件
+ <kbd>o</kbd>: 打开文件
<kbd>z</kbd>: 撤销
</pre>
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
@@ -674,6 +674,20 @@ func (self *Gui) GetInitialKeybindings() ([]*types.Binding, []*gocui.ViewMouseBi
{
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)},
Key: opts.GetKey(opts.Config.Universal.Undo),
Handler: self.handleMergeConflictUndo,
Description: self.c.Tr.LcUndo,
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
+}