diff options
author | Ryooooooga <eial5q265e5@gmail.com> | 2022-04-04 21:12:33 +0900 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2022-04-06 08:27:03 +1000 |
commit | 3b5a019e1a33bbb9b331d44956f98b2b8c4cd5a9 (patch) | |
tree | 8b4c129d57124441edee6a1d7d6734796498d1b6 | |
parent | 53257db99d10bd533c134714b76965041c56cd19 (diff) |
feat(merge_panel): Add open/edit files in merge conflict panel
-rw-r--r-- | docs/keybindings/Keybindings_en.md | 2 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_nl.md | 2 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_pl.md | 2 | ||||
-rw-r--r-- | docs/keybindings/Keybindings_zh.md | 2 | ||||
-rw-r--r-- | pkg/gui/keybindings.go | 14 | ||||
-rw-r--r-- | pkg/gui/merge_panel.go | 20 | ||||
-rw-r--r-- | pkg/gui/mergeconflicts/state.go | 10 |
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 +} |