summaryrefslogtreecommitdiffstats
path: root/pkg/gui
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui')
-rw-r--r--pkg/gui/keybindings.go472
-rw-r--r--pkg/gui/merge_panel.go8
-rw-r--r--pkg/gui/options_menu_panel.go2
3 files changed, 306 insertions, 176 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index 1deb6f7e3..dade5aa51 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -2,6 +2,8 @@ package gui
import (
"github.com/jesseduffield/gocui"
+ "log"
+ "strings"
)
// Binding - a keybinding mapping a key and modifier to a handler. The keypress
@@ -19,54 +21,174 @@ type Binding struct {
// GetDisplayStrings returns the display string of a file
func (b *Binding) GetDisplayStrings(isFocused bool) []string {
- return []string{b.GetKey(), b.Description}
+ return []string{GetKeyDisplay(b.Key), b.Description}
}
-// GetKey is a function.
-func (b *Binding) GetKey() string {
- key := 0
+var keyMapReversed = map[gocui.Key]string{
+ gocui.KeyF1: "f1",
+ gocui.KeyF2: "f2",
+ gocui.KeyF3: "f3",
+ gocui.KeyF4: "f4",
+ gocui.KeyF5: "f5",
+ gocui.KeyF6: "f6",
+ gocui.KeyF7: "f7",
+ gocui.KeyF8: "f8",
+ gocui.KeyF9: "f9",
+ gocui.KeyF10: "f10",
+ gocui.KeyF11: "f11",
+ gocui.KeyF12: "f12",
+ gocui.KeyInsert: "insert",
+ gocui.KeyDelete: "delete",
+ gocui.KeyHome: "home",
+ gocui.KeyEnd: "end",
+ gocui.KeyPgup: "pgup",
+ gocui.KeyPgdn: "pgdown",
+ gocui.KeyArrowUp: "▲",
+ gocui.KeyArrowDown: "▼",
+ gocui.KeyArrowLeft: "◄",
+ gocui.KeyArrowRight: "►",
+ gocui.KeyTab: "tab", // ctrl+i
+ gocui.KeyEnter: "enter", // ctrl+m
+ gocui.KeyEsc: "esc", // ctrl+[, ctrl+3
+ gocui.KeyBackspace: "backspace", // ctrl+h
+ gocui.KeyCtrlSpace: "ctrl+space", // ctrl+~, ctrl+2
+ gocui.KeyCtrlSlash: "ctrl+/", // ctrl+_
+ gocui.KeySpace: "space",
+ gocui.KeyCtrlA: "ctrl+a",
+ gocui.KeyCtrlB: "ctrl+b",
+ gocui.KeyCtrlC: "ctrl+c",
+ gocui.KeyCtrlD: "ctrl+d",
+ gocui.KeyCtrlE: "ctrl+e",
+ gocui.KeyCtrlF: "ctrl+f",
+ gocui.KeyCtrlG: "ctrl+g",
+ gocui.KeyCtrlJ: "ctrl+j",
+ gocui.KeyCtrlK: "ctrl+k",
+ gocui.KeyCtrlL: "ctrl+l",
+ gocui.KeyCtrlN: "ctrl+n",
+ gocui.KeyCtrlO: "ctrl+o",
+ gocui.KeyCtrlP: "ctrl+p",
+ gocui.KeyCtrlQ: "ctrl+q",
+ gocui.KeyCtrlR: "ctrl+r",
+ gocui.KeyCtrlS: "ctrl+s",
+ gocui.KeyCtrlT: "ctrl+t",
+ gocui.KeyCtrlU: "ctrl+u",
+ gocui.KeyCtrlV: "ctrl+v",
+ gocui.KeyCtrlW: "ctrl+w",
+ gocui.KeyCtrlX: "ctrl+x",
+ gocui.KeyCtrlY: "ctrl+y",
+ gocui.KeyCtrlZ: "ctrl+z",
+ gocui.KeyCtrl4: "ctrl+4", // ctrl+\
+ gocui.KeyCtrl5: "ctrl+5", // ctrl+]
+ gocui.KeyCtrl6: "ctrl+6",
+ gocui.KeyCtrl8: "ctrl+8",
+}
+
+var keymap = map[string]interface{}{
+ "<c-a>": gocui.KeyCtrlA,
+ "<c-b>": gocui.KeyCtrlB,
+ "<c-c>": gocui.KeyCtrlC,
+ "<c-d>": gocui.KeyCtrlD,
+ "<c-e>": gocui.KeyCtrlE,
+ "<c-f>": gocui.KeyCtrlF,
+ "<c-g>": gocui.KeyCtrlG,
+ "<c-h>": gocui.KeyCtrlH,
+ "<c-i>": gocui.KeyCtrlI,
+ "<c-j>": gocui.KeyCtrlJ,
+ "<c-k>": gocui.KeyCtrlK,
+ "<c-l>": gocui.KeyCtrlL,
+ "<c-m>": gocui.KeyCtrlM,
+ "<c-n>": gocui.KeyCtrlN,
+ "<c-o>": gocui.KeyCtrlO,
+ "<c-p>": gocui.KeyCtrlP,
+ "<c-q>": gocui.KeyCtrlQ,
+ "<c-r>": gocui.KeyCtrlR,
+ "<c-s>": gocui.KeyCtrlS,
+ "<c-t>": gocui.KeyCtrlT,
+ "<c-u>": gocui.KeyCtrlU,
+ "<c-v>": gocui.KeyCtrlV,
+ "<c-w>": gocui.KeyCtrlW,
+ "<c-x>": gocui.KeyCtrlX,
+ "<c-y>": gocui.KeyCtrlY,
+ "<c-z>": gocui.KeyCtrlZ,
+ "<c-~>": gocui.KeyCtrlTilde,
+ "<c-2>": gocui.KeyCtrl2,
+ "<c-3>": gocui.KeyCtrl3,
+ "<c-4>": gocui.KeyCtrl4,
+ "<c-5>": gocui.KeyCtrl5,
+ "<c-6>": gocui.KeyCtrl6,
+ "<c-7>": gocui.KeyCtrl7,
+ "<c-8>": gocui.KeyCtrl8,
+ "<c-space>": gocui.KeyCtrlSpace,
+ "<c-\\>": gocui.KeyCtrlBackslash,
+ "<c-[>": gocui.KeyCtrlLsqBracket,
+ "<c-]>": gocui.KeyCtrlRsqBracket,
+ "<c-/>": gocui.KeyCtrlSlash,
+ "<c-_>": gocui.KeyCtrlUnderscore,
+ "<backspace>": gocui.KeyBackspace,
+ "<tab>": gocui.KeyTab,
+ "<enter>": gocui.KeyEnter,
+ "<esc>": gocui.KeyEsc,
+ "<space>": gocui.KeySpace,
+ "<f1>": gocui.KeyF1,
+ "<f2>": gocui.KeyF2,
+ "<f3>": gocui.KeyF3,
+ "<f4>": gocui.KeyF4,
+ "<f5>": gocui.KeyF5,
+ "<f6>": gocui.KeyF6,
+ "<f7>": gocui.KeyF7,
+ "<f8>": gocui.KeyF8,
+ "<f9>": gocui.KeyF9,
+ "<f10>": gocui.KeyF10,
+ "<f11>": gocui.KeyF11,
+ "<f12>": gocui.KeyF12,
+ "<insert>": gocui.KeyInsert,
+ "<delete>": gocui.KeyDelete,
+ "<home>": gocui.KeyHome,
+ "<end>": gocui.KeyEnd,
+ "<pgup>": gocui.KeyPgup,
+ "<pgdown>": gocui.KeyPgdn,
+ "<up>": gocui.KeyArrowUp,
+ "<down>": gocui.KeyArrowDown,
+ "<left>": gocui.KeyArrowLeft,
+ "<right>": gocui.KeyArrowRight,
+}
+
+func (gui *Gui) getKeyDisplay(name string) string {
+ key := gui.getKey(name)
+ return GetKeyDisplay(key)
+}
+
+func GetKeyDisplay(key interface{}) string {
+ keyInt := 0
- switch b.Key.(type) {
+ switch key.(type) {
case rune:
- key = int(b.Key.(rune))
+ keyInt = int(key.(rune))
case gocui.Key:
- if b.Key.(gocui.Key) == gocui.KeyCtrlJ {
- return "ctrl+j"
- }
- if b.Key.(gocui.Key) == gocui.KeyCtrlK {
- return "ctrl+k"
- }
- if b.Key.(gocui.Key) == gocui.KeyCtrlP {
- return "ctrl+p"
+ value, ok := keyMapReversed[key.(gocui.Key)]
+ if ok {
+ return value
}
- key = int(b.Key.(gocui.Key))
+ keyInt = int(key.(gocui.Key))
}
- // special keys
- switch key {
- case 27:
- return "esc"
- case 13:
- return "enter"
- case 32:
- return "space"
- case 65514:
- return "►"
- case 65515:
- return "◄"
- case 65517:
- return "▲"
- case 65516:
- return "▼"
- case 65508:
- return "PgUp"
- case 65507:
- return "PgDn"
- case 9:
- return "tab"
- }
+ return string(keyInt)
+}
- return string(key)
+func (gui *Gui) getKey(name string) interface{} {
+ key := gui.Config.GetUserConfig().GetString("keybinding." + name)
+ if len(key) > 1 {
+ binding := keymap[strings.ToLower(key)]
+ if binding == nil {
+ log.Fatalf("Unrecognized key %s for keybinding %s", strings.ToLower(key), name)
+ } else {
+ return binding
+ }
+ } else if len(key) == 1 {
+ return []rune(key)[0]
+ }
+ log.Fatal("Key empty for keybinding: " + strings.ToLower(name))
+ return nil
}
// GetInitialKeybindings is a function.
@@ -74,110 +196,110 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
bindings := []*Binding{
{
ViewName: "",
- Key: 'q',
+ Key: gui.getKey("universal.quit"),
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
},
{
ViewName: "",
- Key: 'Q',
+ Key: gui.getKey("universal.quitWithoutChangingDirectory"),
Modifier: gocui.ModNone,
Handler: gui.handleQuitWithoutChangingDirectory,
},
{
ViewName: "",
- Key: gocui.KeyCtrlC,
+ Key: gui.getKey("universal.quit-alt1"),
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
},
{
ViewName: "",
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
},
{
ViewName: "",
- Key: gocui.KeyPgup,
+ Key: gui.getKey("universal.scrollUpMain"),
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
Alternative: "fn+up",
},
{
ViewName: "",
- Key: gocui.KeyPgdn,
+ Key: gui.getKey("universal.scrollDownMain"),
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
Alternative: "fn+down",
},
{
ViewName: "",
- Key: 'K',
+ Key: gui.getKey("universal.scrollUpMain-alt1"),
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
},
{
ViewName: "",
- Key: 'J',
+ Key: gui.getKey("universal.scrollDownMain-alt1"),
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
},
{
ViewName: "",
- Key: gocui.KeyCtrlU,
+ Key: gui.getKey("universal.scrollUpMain-alt2"),
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
},
{
ViewName: "",
- Key: gocui.KeyCtrlD,
+ Key: gui.getKey("universal.scrollDownMain-alt2"),
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
},
{
ViewName: "",
- Key: 'm',
+ Key: gui.getKey("universal.createRebaseOptionsMenu"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateRebaseOptionsMenu,
Description: gui.Tr.SLocalize("ViewMergeRebaseOptions"),
},
{
ViewName: "",
- Key: gocui.KeyCtrlP,
+ Key: gui.getKey("universal.createPatchOptionsMenu"),
Modifier: gocui.ModNone,
Handler: gui.handleCreatePatchOptionsMenu,
Description: gui.Tr.SLocalize("ViewPatchOptions"),
},
{
ViewName: "",
- Key: 'P',
+ Key: gui.getKey("universal.pushFiles"),
Modifier: gocui.ModNone,
Handler: gui.pushFiles,
Description: gui.Tr.SLocalize("push"),
},
{
ViewName: "",
- Key: 'p',
+ Key: gui.getKey("universal.pullFiles"),
Modifier: gocui.ModNone,
Handler: gui.handlePullFiles,
Description: gui.Tr.SLocalize("pull"),
},
{
ViewName: "",
- Key: 'R',
+ Key: gui.getKey("universal.refresh"),
Modifier: gocui.ModNone,
Handler: gui.handleRefresh,
Description: gui.Tr.SLocalize("refresh"),
},
{
ViewName: "",
- Key: 'x',
+ Key: gui.getKey("universal.optionMenu"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateOptionsMenu,
},
{
ViewName: "",
- Key: '?',
+ Key: gui.getKey("universal.optionMenu-alt1"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateOptionsMenu,
},
@@ -189,147 +311,147 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
},
{
ViewName: "status",
- Key: 'e',
+ Key: gui.getKey("universal.edit"),
Modifier: gocui.ModNone,
Handler: gui.handleEditConfig,
Description: gui.Tr.SLocalize("EditConfig"),
},
{
ViewName: "status",
- Key: 'o',
+ Key: gui.getKey("universal.openFile"),
Modifier: gocui.ModNone,
Handler: gui.handleOpenConfig,
Description: gui.Tr.SLocalize("OpenConfig"),
},
{
ViewName: "status",
- Key: 'u',
+ Key: gui.getKey("status.checkForUpdate"),
Modifier: gocui.ModNone,
Handler: gui.handleCheckForUpdate,
Description: gui.Tr.SLocalize("checkForUpdate"),
},
{
ViewName: "status",
- Key: 's',
+ Key: gui.getKey("status.recentRepos"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateRecentReposMenu,
Description: gui.Tr.SLocalize("SwitchRepo"),
},
{
ViewName: "files",
- Key: 'c',
+ Key: gui.getKey("files.commitChanges"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitPress,
Description: gui.Tr.SLocalize("CommitChanges"),
},
{
ViewName: "files",
- Key: 'w',
+ Key: gui.getKey("files.commitChangesWithoutHook"),
Modifier: gocui.ModNone,
Handler: gui.handleWIPCommitPress,
Description: gui.Tr.SLocalize("commitChangesWithoutHook"),
},
{
ViewName: "files",
- Key: 'A',
+ Key: gui.getKey("files.amendLastCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleAmendCommitPress,
Description: gui.Tr.SLocalize("AmendLastCommit"),
},
{
ViewName: "files",
- Key: 'C',
+ Key: gui.getKey("files.commitChangesWithEditor"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitEditorPress,
Description: gui.Tr.SLocalize("CommitChangesWithEditor"),
},
{
ViewName: "files",
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleFilePress,
Description: gui.Tr.SLocalize("toggleStaged"),
},
{
ViewName: "files",
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateDiscardMenu,
Description: gui.Tr.SLocalize("viewDiscardOptions"),
},
{
ViewName: "files",
- Key: 'e',
+ Key: gui.getKey("universal.edit"),
Modifier: gocui.ModNone,
Handler: gui.handleFileEdit,
Description: gui.Tr.SLocalize("editFile"),
},
{
ViewName: "files",
- Key: 'o',
+ Key: gui.getKey("universal.openFile"),
Modifier: gocui.ModNone,
Handler: gui.handleFileOpen,
Description: gui.Tr.SLocalize("openFile"),
},
{
ViewName: "files",
- Key: 'i',
+ Key: gui.getKey("files.ignoreFile"),
Modifier: gocui.ModNone,
Handler: gui.handleIgnoreFile,
Description: gui.Tr.SLocalize("ignoreFile"),
},
{
ViewName: "files",
- Key: 'r',
+ Key: gui.getKey("files.refreshFiles"),
Modifier: gocui.ModNone,
Handler: gui.handleRefreshFiles,
Description: gui.Tr.SLocalize("refreshFiles"),
},
{
ViewName: "files",
- Key: 's',
+ Key: gui.getKey("files.stashAllChanges"),
Modifier: gocui.ModNone,
Handler: gui.handleStashChanges,
Description: gui.Tr.SLocalize("stashAllChanges"),
},
{
ViewName: "files",
- Key: 'S',
+ Key: gui.getKey("files.viewStashOptions"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateStashMenu,
Description: gui.Tr.SLocalize("viewStashOptions"),
},
{
ViewName: "files",
- Key: 'a',
+ Key: gui.getKey("files.toggleStagedAll"),
Modifier: gocui.ModNone,
Handler: gui.handleStageAll,
Description: gui.Tr.SLocalize("toggleStagedAll"),
},
{
ViewName: "files",
- Key: 'D',
+ Key: gui.getKey("files.viewResetOptions"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateResetMenu,
Description: gui.Tr.SLocalize("viewResetOptions"),
},
{
ViewName: "files",
- Key: gocui.KeyEnter,
+ Key: gui.getKey("universal.goInto"),
Modifier: gocui.ModNone,
Handler: gui.handleEnterFile,
Description: gui.Tr.SLocalize("StageLines"),
},
{
ViewName: "files",
- Key: 'f',
+ Key: gui.getKey("files.fetch"),
Modifier: gocui.ModNone,
Handler: gui.handleGitFetch,
Description: gui.Tr.SLocalize("fetch"),
},
{
ViewName: "files",
- Key: 'X',
+ Key: gui.getKey("universal.executeCustomCommand"),
Modifier: gocui.ModNone,
Handler: gui.handleCustomCommand,
Description: gui.Tr.SLocalize("executeCustomCommand"),
@@ -337,7 +459,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleBranchPress,
Description: gui.Tr.SLocalize("checkout"),
@@ -345,7 +467,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'o',
+ Key: gui.getKey("branches.createPullRequest"),
Modifier: gocui.ModNone,
Handler: gui.handleCreatePullRequestPress,
Description: gui.Tr.SLocalize("createPullRequest"),
@@ -353,7 +475,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'c',
+ Key: gui.getKey("branches.checkoutBranchByName"),
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutByName,
Description: gui.Tr.SLocalize("checkoutByName"),
@@ -361,7 +483,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'F',
+ Key: gui.getKey("branches.forceCheckoutBranch"),
Modifier: gocui.ModNone,
Handler: gui.handleForceCheckout,
Description: gui.Tr.SLocalize("forceCheckout"),
@@ -369,7 +491,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'n',
+ Key: gui.getKey("universal.new"),
Modifier: gocui.ModNone,
Handler: gui.handleNewBranch,
Description: gui.Tr.SLocalize("newBranch"),
@@ -377,7 +499,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleDeleteBranch,
Description: gui.Tr.SLocalize("deleteBranch"),
@@ -385,7 +507,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'r',
+ Key: gui.getKey("branches.rebaseBranch"),
Modifier: gocui.ModNone,
Handler: gui.handleRebaseOntoLocalBranch,
Description: gui.Tr.SLocalize("rebaseBranch"),
@@ -393,7 +515,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'M',
+ Key: gui.getKey("branches.mergeIntoCurrentBranch"),
Modifier: gocui.ModNone,
Handler: gui.handleMerge,
Description: gui.Tr.SLocalize("mergeIntoCurrentBranch"),
@@ -401,7 +523,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"local-branches"},
- Key: 'f',
+ Key: gui.getKey("branches.FastForward"),
Modifier: gocui.ModNone,
Handler: gui.handleFastForward,
Description: gui.Tr.SLocalize("FastForward"),
@@ -409,7 +531,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"tags"},
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutTag,
Description: gui.Tr.SLocalize("checkout"),
@@ -417,7 +539,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"tags"},
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleDeleteTag,
Description: gui.Tr.SLocalize("deleteTag"),
@@ -425,7 +547,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"tags"},
- Key: 'P',
+ Key: gui.getKey("branches.pushTag"),
Modifier: gocui.ModNone,
Handler: gui.handlePushTag,
Description: gui.Tr.SLocalize("pushTag"),
@@ -433,27 +555,27 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"tags"},
- Key: 'n',
+ Key: gui.getKey("universal.new"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateTag,
Description: gui.Tr.SLocalize("createTag"),
},
{
ViewName: "branches",
- Key: ']',
+ Key: gui.getKey("universal.nextBranchTab"),
Modifier: gocui.ModNone,
Handler: gui.handleNextBranchesTab,
},
{
ViewName: "branches",
- Key: '[',
+ Key: gui.getKey("universal.prevBranchTab"),
Modifier: gocui.ModNone,
Handler: gui.handlePrevBranchesTab,
},
{
ViewName: "branches",
Contexts: []string{"remote-branches"},
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleRemoteBranchesEscape,
Description: gui.Tr.SLocalize("ReturnToRemotesList"),
@@ -461,140 +583,140 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "branches",
Contexts: []string{"remotes"},
- Key: 'f',
+ Key: gui.getKey("branches.fetchRemote"),
Modifier: gocui.ModNone,
Handler: gui.handleFetchRemote,
Description: gui.Tr.SLocalize("fetchRemote"),
},
{
ViewName: "commits",
- Key: 's',
+ Key: gui.getKey("commits.squashDown"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitSquashDown,
Description: gui.Tr.SLocalize("squashDown"),
},
{
ViewName: "commits",
- Key: 'r',
+ Key: gui.getKey("commits.renameCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleRenameCommit,
Description: gui.Tr.SLocalize("renameCommit"),
},
{
ViewName: "commits",
- Key: 'R',
+ Key: gui.getKey("commits.renameCommitWithEditor"),
Modifier: gocui.ModNone,
Handler: gui.handleRenameCommitEditor,
Description: gui.Tr.SLocalize("renameCommitEditor"),
},
{
ViewName: "commits",
- Key: 'g',
+ Key: gui.getKey("commits.viewResetOptions"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateCommitResetMenu,
Description: gui.Tr.SLocalize("resetToThisCommit"),
},
{
ViewName: "commits",
- Key: 'f',
+ Key: gui.getKey("commits.markCommitAsFixup"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitFixup,
Description: gui.Tr.SLocalize("fixupCommit"),
},
{
ViewName: "commits",
- Key: 'F',
+ Key: gui.getKey("commits.createFixupCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCreateFixupCommit,
Description: gui.Tr.SLocalize("createFixupCommit"),
},
{
ViewName: "commits",
- Key: 'S',
+ Key: gui.getKey("commits.squashAboveCommits"),
Modifier: gocui.ModNone,
Handler: gui.handleSquashAllAboveFixupCommits,
Description: gui.Tr.SLocalize("squashAboveCommits"),
},
{
ViewName: "commits",
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitDelete,
Description: gui.Tr.SLocalize("deleteCommit"),
},
{
ViewName: "commits",
- Key: gocui.KeyCtrlJ,
+ Key: gui.getKey("commits.moveDownCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitMoveDown,
Description: gui.Tr.SLocalize("moveDownCommit"),
},
{
ViewName: "commits",
- Key: gocui.KeyCtrlK,
+ Key: gui.getKey("commits.moveUpCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitMoveUp,
Description: gui.Tr.SLocalize("moveUpCommit"),
},
{
ViewName: "commits",
- Key: 'e',
+ Key: gui.getKey("universal.edit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitEdit,
Description: gui.Tr.SLocalize("editCommit"),
},
{
ViewName: "commits",
- Key: 'A',
+ Key: gui.getKey("commits.amendToCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitAmendTo,
Description: gui.Tr.SLocalize("amendToCommit"),
},
{
ViewName: "commits",
- Key: 'p',
+ Key: gui.getKey("commits.pickCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitPick,
Description: gui.Tr.SLocalize("pickCommit"),
},
{
ViewName: "commits",
- Key: 't',
+ Key: gui.getKey("commits.revertCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleCommitRevert,
Description: gui.Tr.SLocalize("revertCommit"),
},
{
ViewName: "commits",
- Key: 'c',
+ Key: gui.getKey("commits.cherryPickCopy"),
Modifier: gocui.ModNone,
Handler: gui.handleCopyCommit,
Description: gui.Tr.SLocalize("cherryPickCopy"),
},
{
ViewName: "commits",
- Key: 'C',
+ Key: gui.getKey("commits.cherryPickCopyRange"),
Modifier: gocui.ModNone,
Handler: gui.handleCopyCommitRange,
Description: gui.Tr.SLocalize("cherryPickCopyRange"),
},
{
ViewName: "commits",
- Key: 'v',
+ Key: gui.getKey("commits.pasteCommits"),
Modifier: gocui.ModNone,
Handler: gui.HandlePasteCommits,
Description: gui.Tr.SLocalize("pasteCommits"),
},
{
ViewName: "commits",
- Key: gocui.KeyEnter,
+ Key: gui.getKey("universal.goInto"),
Modifier: gocui.ModNone,
Handler: gui.handleSwitchToCommitFilesPanel,
Description: gui.Tr.SLocalize("viewCommitFiles"),
},
{
ViewName: "commits",
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutCommit,
Description: gui.Tr.SLocalize("checkoutCommit"),
@@ -608,28 +730,28 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
},
{
ViewName: "commits",
- Key: 'T',
+ Key: gui.getKey("commits.tagCommit"),
Modifier: gocui.ModNone,
Handler: gui.handleTagCommit,
Description: gui.Tr.SLocalize("tagCommit"),
},
{
ViewName: "stash",
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleStashApply,
Description: gui.Tr.SLocalize("apply"),
},
{
ViewName: "stash",
- Key: 'g',
+ Key: gui.getKey("stash.popStash"),
Modifier: gocui.ModNone,
Handler: gui.handleStashPop,
Description: gui.Tr.SLocalize("pop"),
},
{
ViewName: "stash",
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleStashDrop,
Description: gui.Tr.SLocalize("drop"),
@@ -660,13 +782,13 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
},
{
ViewName: "menu",
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleMenuClose,
},
{
ViewName: "menu",
- Key: 'q',
+ Key: gui.getKey("universal.quit"),
Modifier: gocui.ModNone,
Handler: gui.handleMenuClose,
},
@@ -678,42 +800,42 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
},
{
ViewName: "commitFiles",
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleSwitchToCommitsPanel,
Description: gui.Tr.SLocalize("goBack"),
},
{
ViewName: "commitFiles",
- Key: 'c',
+ Key: gui.getKey("commitFiles.checkoutCommitFile"),
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutCommitFile,
Description: gui.Tr.SLocalize("checkoutCommitFile"),
},
{
ViewName: "commitFiles",
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleDiscardOldFileChange,
Description: gui.Tr.SLocalize("discardOldFileChange"),
},
{
ViewName: "commitFiles",
- Key: 'o',
+ Key: gui.getKey("universal.openFile"),
Modifier: gocui.ModNone,
Handler: gui.handleOpenOldCommitFile,
Description: gui.Tr.SLocalize("openFile"),
},
{
ViewName: "commitFiles",
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleToggleFileForPatch,
Description: gui.Tr.SLocalize("toggleAddToPatch"),
},
{
ViewName: "commitFiles",
- Key: gocui.KeyEnter,
+ Key: gui.getKey("universal.goInto"),
Modifier: gocui.ModNone,
Handler: gui.handleEnterCommitFile,
Description: gui.Tr.SLocalize("enterFile"),
@@ -772,7 +894,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"staging"},
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleStagingEscape,
Description: gui.Tr.SLocalize("ReturnToFilesPanel"),
@@ -780,7 +902,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"staging"},
- Key: gocui.KeySpace,
+ Key: gui.getKey("universal.select"),
Modifier: gocui.ModNone,
Handler: gui.handleStageSelection,
Description: gui.Tr.SLocalize("StageSelection"),
@@ -788,7 +910,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"staging"},
- Key: 'd',
+ Key: gui.getKey("universal.remove"),
Modifier: gocui.ModNone,
Handler: gui.handleResetSelection,
Description: gui.Tr.SLocalize("ResetSelection"),
@@ -796,7 +918,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"staging"},
- Key: gocui.KeyTab,
+ Key: gui.getKey("universal.togglePanel"),
Modifier: gocui.ModNone,
Handler: gui.handleTogglePanel,
Description: gui.Tr.SLocalize("TogglePanel"),
@@ -804,7 +926,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"patch-building"},
- Key: gocui.KeyEsc,
+ Key: gui.getKey("universal.return"),
Modifier: gocui.ModNone,
Handler: gui.handleEscapePatchBuildingPanel,
Description: gui.Tr.SLocalize("ExitLineByLineMode"),
@@ -812,7 +934,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"patch-building", "staging"},
- Key: gocui.KeyArrowUp,
+ Key: gui.getKey("universal.prevItem"),
Modifier: gocui.ModNone,
Handler: gui.handleSelectPrevLine,
Description: gui.Tr.SLocalize("PrevLine"),
@@ -820,7 +942,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"patch-building", "staging"},
- Key: gocui.KeyArrowDown,
+ Key: gui.getKey("universal.nextItem"),
Modifier: gocui.ModNone,
Handler: gui.handleSelectNextLine,
Description: gui.Tr.SLocalize("NextLine"),
@@ -828,14 +950,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"patch-building", "staging"},
- Key: 'k',
+ Key: gui.getKey("universal.prevItem-alt"),
Modifier: gocui.ModNone,
Handler: gui.handleSelectPrevLine,
},
{
ViewName: "main",
Contexts: []string{"patch-building", "staging"},
- Key: 'j',
+ Key: gui.getKey("universal.nextItem-alt"),
Modifier: gocui.ModNone,
Handler: gui.handleSelectNextLine,
},
@@ -856,7 +978,7 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
{
ViewName: "main",
Contexts: []string{"patch-building", "staging"},
- Key: gocui.KeyArrowLeft,
+ Key: gui.getKey("universal.prevBlock"),
Modifier: gocui.ModNone,