summaryrefslogtreecommitdiffstats
path: root/pkg/gui/keybindings.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2019-11-16 12:41:04 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-11-21 22:07:14 +1100
commit7e0a8f235ef6971a98fba9c91c7fa159ca842180 (patch)
tree888c1e23b7b49e438226d9dee2c75316532d58ae /pkg/gui/keybindings.go
parent44bbc106a9668b8886f22812651635ec00a156fa (diff)
add contexts to views
Diffstat (limited to 'pkg/gui/keybindings.go')
-rw-r--r--pkg/gui/keybindings.go923
1 files changed, 491 insertions, 432 deletions
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index a31a8123b..c6f5294c4 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -9,6 +9,7 @@ import (
// is ""
type Binding struct {
ViewName string
+ Contexts []string
Handler func(*gocui.Gui, *gocui.View) error
Key interface{} // FIXME: find out how to get `gocui.Key | rune`
Modifier gocui.Modifier
@@ -73,116 +74,137 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Key: 'q',
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
- }, {
+ },
+ {
ViewName: "",
Key: 'Q',
Modifier: gocui.ModNone,
Handler: gui.handleQuitWithoutChangingDirectory,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyCtrlC,
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyEsc,
Modifier: gocui.ModNone,
Handler: gui.handleQuit,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyPgup,
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
Alternative: "fn+up",
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyPgdn,
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
Alternative: "fn+down",
- }, {
+ },
+ {
ViewName: "",
Key: 'K',
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
- }, {
+ },
+ {
ViewName: "",
Key: 'J',
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyCtrlU,
Modifier: gocui.ModNone,
Handler: gui.scrollUpMain,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyCtrlD,
Modifier: gocui.ModNone,
Handler: gui.scrollDownMain,
- }, {
+ },
+ {
ViewName: "",
Key: 'm',
Modifier: gocui.ModNone,
Handler: gui.handleCreateRebaseOptionsMenu,
Description: gui.Tr.SLocalize("ViewMergeRebaseOptions"),
- }, {
+ },
+ {
ViewName: "",
Key: 'P',
Modifier: gocui.ModNone,
Handler: gui.pushFiles,
Description: gui.Tr.SLocalize("push"),
- }, {
+ },
+ {
ViewName: "",
Key: 'p',
Modifier: gocui.ModNone,
Handler: gui.handlePullFiles,
Description: gui.Tr.SLocalize("pull"),
- }, {
+ },
+ {
ViewName: "",
Key: 'R',
Modifier: gocui.ModNone,
Handler: gui.handleRefresh,
Description: gui.Tr.SLocalize("refresh"),
- }, {
+ },
+ {
ViewName: "",
Key: 'x',
Modifier: gocui.ModNone,
Handler: gui.handleCreateOptionsMenu,
- }, {
+ },
+ {
ViewName: "",
Key: '?',
Modifier: gocui.ModNone,
Handler: gui.handleCreateOptionsMenu,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.MouseMiddle,
Modifier: gocui.ModNone,
Handler: gui.handleCreateOptionsMenu,
- }, {
+ },
+ {
ViewName: "",
Key: gocui.KeyCtrlP,
Modifier: gocui.ModNone,
Handler: gui.handleCreatePatchOptionsMenu,
- }, {
+ },
+ {
ViewName: "status",
Key: 'e',
Modifier: gocui.ModNone,
Handler: gui.handleEditConfig,
Description: gui.Tr.SLocalize("EditConfig"),
- }, {
+ },
+ {
ViewName: "status",
Key: 'o',
Modifier: gocui.ModNone,
Handler: gui.handleOpenConfig,
Description: gui.Tr.SLocalize("OpenConfig"),
- }, {
+ },
+ {
ViewName: "status",
Key: 'u',
Modifier: gocui.ModNone,
Handler: gui.handleCheckForUpdate,
Description: gui.Tr.SLocalize("checkForUpdate"),
- }, {
+ },
+ {
ViewName: "status",
Key: 's',
Modifier: gocui.ModNone,
@@ -202,330 +224,386 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Modifier: gocui.ModNone,
Handler: gui.handleWIPCommitPress,
Description: gui.Tr.SLocalize("commitChangesWithoutHook"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'A',
Modifier: gocui.ModNone,
Handler: gui.handleAmendCommitPress,
Description: gui.Tr.SLocalize("AmendLastCommit"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'C',
Modifier: gocui.ModNone,
Handler: gui.handleCommitEditorPress,
Description: gui.Tr.SLocalize("CommitChangesWithEditor"),
- }, {
+ },
+ {
ViewName: "files",
Key: gocui.KeySpace,
Modifier: gocui.ModNone,
Handler: gui.handleFilePress,
Description: gui.Tr.SLocalize("toggleStaged"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'd',
Modifier: gocui.ModNone,
Handler: gui.handleCreateDiscardMenu,
Description: gui.Tr.SLocalize("viewDiscardOptions"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'e',
Modifier: gocui.ModNone,
Handler: gui.handleFileEdit,
Description: gui.Tr.SLocalize("editFile"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'o',
Modifier: gocui.ModNone,
Handler: gui.handleFileOpen,
Description: gui.Tr.SLocalize("openFile"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'i',
Modifier: gocui.ModNone,
Handler: gui.handleIgnoreFile,
Description: gui.Tr.SLocalize("ignoreFile"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'r',
Modifier: gocui.ModNone,
Handler: gui.handleRefreshFiles,
Description: gui.Tr.SLocalize("refreshFiles"),
- }, {
+ },
+ {
ViewName: "files",
Key: 's',
Modifier: gocui.ModNone,
Handler: gui.handleStashChanges,
Description: gui.Tr.SLocalize("stashAllChanges"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'S',
Modifier: gocui.ModNone,
Handler: gui.handleCreateStashMenu,
Description: gui.Tr.SLocalize("viewStashOptions"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'a',
Modifier: gocui.ModNone,
Handler: gui.handleStageAll,
Description: gui.Tr.SLocalize("toggleStagedAll"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'D',
Modifier: gocui.ModNone,
Handler: gui.handleCreateResetMenu,
Description: gui.Tr.SLocalize("viewResetOptions"),
- }, {
+ },
+ {
ViewName: "files",
Key: gocui.KeyEnter,
Modifier: gocui.ModNone,
Handler: gui.handleEnterFile,
Description: gui.Tr.SLocalize("StageLines"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'f',
Modifier: gocui.ModNone,
Handler: gui.handleGitFetch,
Description: gui.Tr.SLocalize("fetch"),
- }, {
+ },
+ {
ViewName: "files",
Key: 'X',
Modifier: gocui.ModNone,
Handler: gui.handleCustomCommand,
Description: gui.Tr.SLocalize("executeCustomCommand"),
- }, {
+ },
+ {
ViewName: "branches",
Key: gocui.KeySpace,
Modifier: gocui.ModNone,
Handler: gui.handleBranchPress,
Description: gui.Tr.SLocalize("checkout"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'o',
Modifier: gocui.ModNone,
Handler: gui.handleCreatePullRequestPress,
Description: gui.Tr.SLocalize("createPullRequest"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'c',
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutByName,
Description: gui.Tr.SLocalize("checkoutByName"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'F',
Modifier: gocui.ModNone,
Handler: gui.handleForceCheckout,
Description: gui.Tr.SLocalize("forceCheckout"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'n',
Modifier: gocui.ModNone,
Handler: gui.handleNewBranch,
Description: gui.Tr.SLocalize("newBranch"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'd',
Modifier: gocui.ModNone,
Handler: gui.handleDeleteBranch,
Description: gui.Tr.SLocalize("deleteBranch"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'r',
Modifier: gocui.ModNone,
Handler: gui.handleRebase,
Description: gui.Tr.SLocalize("rebaseBranch"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'M',
Modifier: gocui.ModNone,
Handler: gui.handleMerge,
Description: gui.Tr.SLocalize("mergeIntoCurrentBranch"),
- }, {
+ },
+ {
ViewName: "branches",
Key: 'f',
Modifier: gocui.ModNone,
Handler: gui.handleFastForward,
Description: gui.Tr.SLocalize("FastForward"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 's',
Modifier: gocui.ModNone,
Handler: gui.handleCommitSquashDown,
Description: gui.Tr.SLocalize("squashDown"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'r',
Modifier: gocui.ModNone,
Handler: gui.handleRenameCommit,
Description: gui.Tr.SLocalize("renameCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'R',
Modifier: gocui.ModNone,
Handler: gui.handleRenameCommitEditor,
Description: gui.Tr.SLocalize("renameCommitEditor"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'g',
Modifier: gocui.ModNone,
Handler: gui.handleCreateCommitResetMenu,
Description: gui.Tr.SLocalize("resetToThisCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'f',
Modifier: gocui.ModNone,
Handler: gui.handleCommitFixup,
Description: gui.Tr.SLocalize("fixupCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'F',
Modifier: gocui.ModNone,
Handler: gui.handleCreateFixupCommit,
Description: gui.Tr.SLocalize("createFixupCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'S',
Modifier: gocui.ModNone,
Handler: gui.handleSquashAllAboveFixupCommits,
Description: gui.Tr.SLocalize("squashAboveCommits"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'd',
Modifier: gocui.ModNone,
Handler: gui.handleCommitDelete,
Description: gui.Tr.SLocalize("deleteCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: gocui.KeyCtrlJ,
Modifier: gocui.ModNone,
Handler: gui.handleCommitMoveDown,
Description: gui.Tr.SLocalize("moveDownCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: gocui.KeyCtrlK,
Modifier: gocui.ModNone,
Handler: gui.handleCommitMoveUp,
Description: gui.Tr.SLocalize("moveUpCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'e',
Modifier: gocui.ModNone,
Handler: gui.handleCommitEdit,
Description: gui.Tr.SLocalize("editCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'A',
Modifier: gocui.ModNone,
Handler: gui.handleCommitAmendTo,
Description: gui.Tr.SLocalize("amendToCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'p',
Modifier: gocui.ModNone,
Handler: gui.handleCommitPick,
Description: gui.Tr.SLocalize("pickCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 't',
Modifier: gocui.ModNone,
Handler: gui.handleCommitRevert,
Description: gui.Tr.SLocalize("revertCommit"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'c',
Modifier: gocui.ModNone,
Handler: gui.handleCopyCommit,
Description: gui.Tr.SLocalize("cherryPickCopy"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'C',
Modifier: gocui.ModNone,
Handler: gui.handleCopyCommitRange,
Description: gui.Tr.SLocalize("cherryPickCopyRange"),
- }, {
+ },
+ {
ViewName: "commits",
Key: 'v',
Modifier: gocui.ModNone,
Handler: gui.HandlePasteCommits,
Description: gui.Tr.SLocalize("pasteCommits"),
- }, {
+ },
+ {
ViewName: "commits",
Key: gocui.KeyEnter,
Modifier: gocui.ModNone,
Handler: gui.handleSwitchToCommitFilesPanel,
Description: gui.Tr.SLocalize("viewCommitFiles"),
- }, {
+ },
+ {
ViewName: "commits",
Key: gocui.KeySpace,
Modifier: gocui.ModNone,
Handler: gui.handleToggleDiffCommit,
Description: gui.Tr.SLocalize("CommitsDiff"),
- }, {
+ },
+ {
ViewName: "stash",
Key: gocui.KeySpace,
Modifier: gocui.ModNone,
Handler: gui.handleStashApply,
Description: gui.Tr.SLocalize("apply"),
- }, {
+ },
+ {
ViewName: "stash",
Key: 'g',
Modifier: gocui.ModNone,
Handler: gui.handleStashPop,
Description: gui.Tr.SLocalize("pop"),
- }, {
+ },
+ {
ViewName: "stash",
Key: 'd',
Modifier: gocui.ModNone,
Handler: gui.handleStashDrop,
Description: gui.Tr.SLocalize("drop"),
- }, {
+ },
+ {
ViewName: "commitMessage",
Key: gocui.KeyEnter,
Modifier: gocui.ModNone,
Handler: gui.handleCommitConfirm,
- }, {
+ },
+ {
ViewName: "commitMessage",
Key: gocui.KeyEsc,
Modifier: gocui.ModNone,
Handler: gui.handleCommitClose,
- }, {
+ },
+ {
ViewName: "credentials",
Key: gocui.KeyEnter,
Modifier: gocui.ModNone,
Handler: gui.handleSubmitCredential,
- }, {
+ },
+ {
ViewName: "credentials",
Key: gocui.KeyEsc,
Modifier: gocui.ModNone,
Handler: gui.handleCloseCredentialsView,
- }, {
+ },
+ {
ViewName: "menu",
Key: gocui.KeyEsc,
Modifier: gocui.ModNone,
Handler: gui.handleMenuClose,
- }, {
+ },
+ {
ViewName: "menu",
Key: 'q',
Modifier: gocui.ModNone,
Handler: gui.handleMenuClose,
- }, {
+ },
+ {
ViewName: "information",
Key: gocui.MouseLeft,
Modifier: gocui.ModNone,
Handler: gui.handleDonate,
- }, {
+ },
+ {
ViewName: "commitFiles",
Key: gocui.KeyEsc,
Modifier: gocui.ModNone,
Handler: gui.handleSwitchToCommitsPanel,
Description: gui.Tr.SLocalize("goBack"),
- }, {
+ },
+ {
ViewName: "commitFiles",
Key: 'c',
Modifier: gocui.ModNone,
Handler: gui.handleCheckoutCommitFile,
Description: gui.Tr.SLocalize("checkoutCommitFile"),
- }, {
+ },
+ {
ViewName: "commitFiles",
Key: 'd',
Modifier: gocui.ModNone,
@@ -565,6 +643,341 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
Modifier: gocui.ModNone,
Handler: gui.scrollDownSecondary,
},
+ {
+ ViewName: "secondary",
+ Contexts: []string{"normal"},
+ Key: gocui.MouseLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleMouseDownSecondary,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"normal"},
+ Key: gocui.MouseWheelDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.scrollDownMain,
+ Description: gui.Tr.SLocalize("ScrollDown"),
+ Alternative: "fn+up",
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"normal"},
+ Key: gocui.MouseWheelUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.scrollUpMain,
+ Description: gui.Tr.SLocalize("ScrollUp"),
+ Alternative: "fn+down",
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"normal"},
+ Key: gocui.MouseLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleMouseDownMain,
+ },
+ {
+ ViewName: "secondary",
+ Contexts: []string{"staging"},
+ Key: gocui.MouseLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleTogglePanelClick,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: gocui.KeyEsc,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleStagingEscape,
+ Description: gui.Tr.SLocalize("ReturnToFilesPanel"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: gocui.KeySpace,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleStageSelection,
+ Description: gui.Tr.SLocalize("StageSelection"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: 'd',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleResetSelection,
+ Description: gui.Tr.SLocalize("ResetSelection"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: gocui.KeyTab,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleTogglePanel,
+ Description: gui.Tr.SLocalize("TogglePanel"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building"},
+ Key: gocui.KeyEsc,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleEscapePatchBuildingPanel,
+ Description: gui.Tr.SLocalize("ExitLineByLineMode"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.KeyArrowUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevLine,
+ Description: gui.Tr.SLocalize("PrevLine"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.KeyArrowDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextLine,
+ Description: gui.Tr.SLocalize("NextLine"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'k',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevLine,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'j',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextLine,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseWheelUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevLine,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseWheelDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextLine,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.KeyArrowLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevHunk,
+ Description: gui.Tr.SLocalize("PrevHunk"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.KeyArrowRight,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextHunk,
+ Description: gui.Tr.SLocalize("NextHunk"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'h',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevHunk,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'l',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextHunk,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: 'e',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleFileEdit,
+ Description: gui.Tr.SLocalize("editFile"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"staging"},
+ Key: 'o',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleFileOpen,
+ Description: gui.Tr.SLocalize("openFile"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building"},
+ Key: gocui.KeySpace,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleAddSelectionToPatch,
+ Description: gui.Tr.SLocalize("StageSelection"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building"},
+ Key: 'd',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleRemoveSelectionFromPatch,
+ Description: gui.Tr.SLocalize("ResetSelection"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'v',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleToggleSelectRange,
+ Description: gui.Tr.SLocalize("ToggleDragSelect"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: 'a',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleToggleSelectHunk,
+ Description: gui.Tr.SLocalize("ToggleSelectHunk"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleMouseDown,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseLeft,
+ Modifier: gocui.ModMotion,
+ Handler: gui.handleMouseDrag,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseWheelUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleMouseScrollUp,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"patch-building", "staging"},
+ Key: gocui.MouseWheelDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleMouseScrollDown,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeyEsc,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleEscapeMerge,
+ Description: gui.Tr.SLocalize("ReturnToFilesPanel"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeySpace,
+ Modifier: gocui.ModNone,
+ Handler: gui.handlePickHunk,
+ Description: gui.Tr.SLocalize("PickHunk"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: 'b',
+ Modifier: gocui.ModNone,
+ Handler: gui.handlePickBothHunks,
+ Description: gui.Tr.SLocalize("PickBothHunks"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeyArrowLeft,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevConflict,
+ Description: gui.Tr.SLocalize("PrevConflict"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeyArrowRight,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextConflict,
+ Description: gui.Tr.SLocalize("NextConflict"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeyArrowUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectTop,
+ Description: gui.Tr.SLocalize("SelectTop"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: gocui.KeyArrowDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectBottom,
+ Description: gui.Tr.SLocalize("SelectBottom"),
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: gocui.MouseWheelUp,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectTop,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: gocui.MouseWheelDown,
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectBottom,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: 'h',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectPrevConflict,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: 'l',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectNextConflict,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: 'k',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectTop,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"mergin"},
+ Key: 'j',
+ Modifier: gocui.ModNone,
+ Handler: gui.handleSelectBottom,
+ },
+ {
+ ViewName: "main",
+ Contexts: []string{"merging"},
+ Key: 'z',
+ Modifier: gocui.ModNone,
+ Handler: gui.handlePopFileSnapshot,
+ Description: gui.Tr.SLocalize("Undo"),
+ },
}
for _, viewName := range []string{"status", "branches", "files", "commits", "commitFiles", "stash", "menu"} {
@@ -611,26 +1024,14 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
return bindings
}
-// GetCurrentKeybindings gets the list of keybindings given the current context
-func (gui *Gui) GetCurrentKeybindings() []*Binding {
- bindings := gui.GetInitialKeybindings()
- currentContext := gui.State.Context
- contextBindings := gui.GetContextMap()[currentContext]
-
- return append(bindings, contextBindings...)
-}
-
func (gui *Gui) keybindings(g *gocui.Gui) error {
bindings := gui.GetInitialKeybindings()
for _, binding := range bindings {
- if err := g.SetKeybinding(binding.ViewName, binding.Key, binding.Modifier, binding.Handler); err != nil {
+ if err := g.SetKeybinding(binding.ViewName, binding.Contexts, binding.Key, binding.Modifier, binding.Handler); err != nil {
return err
}
}
- if err := gui.setInitialContext(); err != nil {
- return err
- }
if err := g.SetTabClickBinding("branches", gui.onBranchesTabClick); err != nil {
return err
@@ -638,345 +1039,3 @@ func (gui *Gui) keybindings(g *gocui.Gui) error {
return nil
}
-
-func (gui *Gui) GetContextMap() map[string][]*Binding {
- return map[string][]*Binding{
- "normal": {
- {
- ViewName: "secondary",
- Key: gocui.MouseLeft,
- Modifier: gocui.ModNone,
- Handler: gui.handleMouseDownSecondary,
- },
- {
- ViewName: "main",
- Key: gocui.MouseWheelDown,
- Modifier: gocui.ModNone,
- Handler: gui.scrollDownMain,
- Description: gui.Tr.SLocalize("ScrollDown"),
- Alternative: "fn+up",
- }, {
- ViewName: "main",
- Key: gocui.MouseWheelUp,
- Modifier: gocui.ModNone,
- Handler: gui.scrollUpMain,
- Description: gui.Tr.SLocalize("ScrollUp"),
- Alternative: "fn+down",
- }, {
- ViewName: "main",
- Key: gocui.MouseLeft,
- Modifier: gocui.ModNone,
- Handler: gui.handleMouseDownMain,
- },
- },
- "staging": {
- {
- ViewName: "secondary",
- Key: gocui.MouseLeft,
- Modifier: gocui.ModNone,
- Handler: gui.handleTogglePanelClick,
- },
- {
- ViewName: "main",
- Key: gocui.KeyEsc,
- Modifier: gocui.ModNone,
- Handler: gui.handleStagingEscape,
- Description: gui.Tr.SLocalize("ReturnToFilesPanel"),
- }, {
- ViewName: "main",
- Key: gocui.KeyArrowUp,
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectPrevLine,
- Description: gui.Tr.SLocalize("PrevLine"),
- }, {
- ViewName: "main",
- Key: gocui.KeyArrowDown,
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectNextLine,
- Description: gui.Tr.SLocalize("NextLine"),
- }, {
- ViewName: "main",
- Key: 'k',
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectPrevLine,
- }, {
- ViewName: "main",
- Key: 'j',
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectNextLine,
- }, {
- ViewName: "main",
- Key: gocui.KeyArrowLeft,
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectPrevHunk,
- Description: gui.Tr.SLocalize("PrevHunk"),
- }, {
- ViewName: "main",
- Key: gocui.KeyArrowRight,
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectNextHunk,
- Description: gui.Tr.SLocalize("NextHunk"),
- }, {
- ViewName: "main",
- Key: 'h',
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectPrevHunk,
- }, {
- ViewName: "main",
- Key: 'l',
- Modifier: gocui.ModNone,
- Handler: gui.handleSelectNextHunk,
- }, {
- ViewName: "main",
- Key: gocui.KeySpace,
- Modifier: gocui.ModNone,
- Handler: gui.handleStageSelection,
- Description: gui.Tr.SLocalize("StageSelection"),
- }, {
- ViewName: "main",
- Key: 'd',
- Modifier: gocui.ModNone,
- Handler: gui.handleResetSelection,
- Description: gui.Tr.SLocalize("ResetSelection"),
- }, {
- ViewName: "main",
- Key: 'v',
- Modifier: gocui.ModNone,
- Handler: gui.handleToggleSelectRange,
- Description: gui.Tr.SLocalize("ToggleDragSelect"),
- }, {
- ViewName: "main",
- Key: 'a',
- Modifier: gocui.ModNone,
- Handler: gui.handleToggleSelectHunk,
- Description: gui.Tr.SLocalize("ToggleSelectHunk"),
- }, {
- ViewName: "main",
- Key: gocui.KeyTab,
- Modifier: gocui.ModNone,
- Handler: gui.handleTogglePanel,
- Description: gui.Tr.SLocalize("TogglePanel"),
- }, {
- ViewName: "main",
- Key: gocui.MouseLeft,
- Modifier: gocui.ModNone,
- Handler: gui.handleMouseDown,
- }, {