2018-08-12 11:31:27 +02:00
|
|
|
package gui
|
2018-08-08 11:18:41 +02:00
|
|
|
|
2018-09-17 13:02:30 +02:00
|
|
|
import (
|
|
|
|
"github.com/jesseduffield/gocui"
|
|
|
|
)
|
2018-08-08 11:18:41 +02:00
|
|
|
|
|
|
|
// Binding - a keybinding mapping a key and modifier to a handler. The keypress
|
|
|
|
// is only handled if the given view has focus, or handled globally if the view
|
|
|
|
// is ""
|
|
|
|
type Binding struct {
|
2018-08-29 11:56:28 +02:00
|
|
|
ViewName string
|
2019-11-16 03:41:04 +02:00
|
|
|
Contexts []string
|
2018-08-29 11:56:28 +02:00
|
|
|
Handler func(*gocui.Gui, *gocui.View) error
|
|
|
|
Key interface{} // FIXME: find out how to get `gocui.Key | rune`
|
|
|
|
Modifier gocui.Modifier
|
2018-08-28 20:13:01 +02:00
|
|
|
Description string
|
2019-05-03 07:03:25 +02:00
|
|
|
Alternative string
|
2018-08-08 11:18:41 +02:00
|
|
|
}
|
|
|
|
|
2018-09-17 13:02:30 +02:00
|
|
|
// GetDisplayStrings returns the display string of a file
|
2019-02-16 06:17:44 +02:00
|
|
|
func (b *Binding) GetDisplayStrings(isFocused bool) []string {
|
2018-09-17 13:02:30 +02:00
|
|
|
return []string{b.GetKey(), b.Description}
|
|
|
|
}
|
|
|
|
|
2018-11-30 02:47:14 +02:00
|
|
|
// GetKey is a function.
|
2018-09-17 13:02:30 +02:00
|
|
|
func (b *Binding) GetKey() string {
|
2019-01-16 19:42:54 +02:00
|
|
|
key := 0
|
2018-09-17 13:02:30 +02:00
|
|
|
|
2019-01-16 19:42:54 +02:00
|
|
|
switch b.Key.(type) {
|
|
|
|
case rune:
|
|
|
|
key = int(b.Key.(rune))
|
|
|
|
case gocui.Key:
|
2019-05-25 08:37:47 +02:00
|
|
|
if b.Key.(gocui.Key) == gocui.KeyCtrlJ {
|
|
|
|
return "ctrl+j"
|
|
|
|
}
|
|
|
|
if b.Key.(gocui.Key) == gocui.KeyCtrlK {
|
|
|
|
return "ctrl+k"
|
|
|
|
}
|
2019-01-16 19:42:54 +02:00
|
|
|
key = int(b.Key.(gocui.Key))
|
2018-09-17 13:02:30 +02:00
|
|
|
}
|
|
|
|
|
2019-01-16 19:42:54 +02:00
|
|
|
// special keys
|
|
|
|
switch key {
|
|
|
|
case 27:
|
|
|
|
return "esc"
|
|
|
|
case 13:
|
|
|
|
return "enter"
|
|
|
|
case 32:
|
|
|
|
return "space"
|
2019-03-02 06:11:53 +02:00
|
|
|
case 65514:
|
|
|
|
return "►"
|
|
|
|
case 65515:
|
|
|
|
return "◄"
|
|
|
|
case 65517:
|
|
|
|
return "▲"
|
|
|
|
case 65516:
|
|
|
|
return "▼"
|
|
|
|
case 65508:
|
|
|
|
return "PgUp"
|
|
|
|
case 65507:
|
|
|
|
return "PgDn"
|
2019-11-05 05:21:19 +02:00
|
|
|
case 9:
|
|
|
|
return "tab"
|
2019-01-16 19:42:54 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return string(key)
|
2018-09-17 13:02:30 +02:00
|
|
|
}
|
|
|
|
|
2019-02-16 03:07:27 +02:00
|
|
|
// GetInitialKeybindings is a function.
|
|
|
|
func (gui *Gui) GetInitialKeybindings() []*Binding {
|
2018-09-17 13:02:30 +02:00
|
|
|
bindings := []*Binding{
|
2018-09-01 12:10:03 +02:00
|
|
|
{
|
|
|
|
ViewName: "",
|
|
|
|
Key: 'q',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-10-07 03:34:12 +02:00
|
|
|
Handler: gui.handleQuit,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-10-07 03:34:12 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'Q',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleQuitWithoutChangingDirectory,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyCtrlC,
|
|
|
|
Modifier: gocui.ModNone,
|
2019-10-07 03:34:12 +02:00
|
|
|
Handler: gui.handleQuit,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
2019-10-07 03:34:12 +02:00
|
|
|
Handler: gui.handleQuit,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-05-03 07:03:25 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyPgup,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollUpMain,
|
|
|
|
Alternative: "fn+up",
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-05-03 07:03:25 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyPgdn,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollDownMain,
|
|
|
|
Alternative: "fn+down",
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-05-25 08:37:47 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'K',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollUpMain,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-05-25 08:37:47 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'J',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollDownMain,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyCtrlU,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollUpMain,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyCtrlD,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollDownMain,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-19 14:36:29 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'm',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreateRebaseOptionsMenu,
|
|
|
|
Description: gui.Tr.SLocalize("ViewMergeRebaseOptions"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-05 13:23:06 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'P',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.pushFiles,
|
2018-09-05 13:01:21 +02:00
|
|
|
Description: gui.Tr.SLocalize("push"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-05 13:23:06 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'p',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-11-13 12:16:24 +02:00
|
|
|
Handler: gui.handlePullFiles,
|
2018-09-05 13:01:21 +02:00
|
|
|
Description: gui.Tr.SLocalize("pull"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-05 13:23:06 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: 'R',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRefresh,
|
2018-09-05 13:01:21 +02:00
|
|
|
Description: gui.Tr.SLocalize("refresh"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "",
|
2018-09-05 15:55:24 +02:00
|
|
|
Key: 'x',
|
2018-09-01 12:10:03 +02:00
|
|
|
Modifier: gocui.ModNone,
|
2018-09-18 13:07:25 +02:00
|
|
|
Handler: gui.handleCreateOptionsMenu,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-11-10 07:54:05 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: '?',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreateOptionsMenu,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-11-10 07:20:35 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.MouseMiddle,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreateOptionsMenu,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-11-04 10:47:25 +02:00
|
|
|
ViewName: "",
|
|
|
|
Key: gocui.KeyCtrlP,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreatePatchOptionsMenu,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "status",
|
|
|
|
Key: 'e',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleEditConfig,
|
|
|
|
Description: gui.Tr.SLocalize("EditConfig"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "status",
|
|
|
|
Key: 'o',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleOpenConfig,
|
|
|
|
Description: gui.Tr.SLocalize("OpenConfig"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "status",
|
|
|
|
Key: 'u',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCheckForUpdate,
|
2018-09-03 18:16:54 +02:00
|
|
|
Description: gui.Tr.SLocalize("checkForUpdate"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-19 10:40:41 +02:00
|
|
|
ViewName: "status",
|
|
|
|
Key: 's',
|
|
|
|
Modifier: gocui.ModNone,
|
2018-09-19 11:15:29 +02:00
|
|
|
Handler: gui.handleCreateRecentReposMenu,
|
2018-09-19 10:40:41 +02:00
|
|
|
Description: gui.Tr.SLocalize("SwitchRepo"),
|
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'c',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitPress,
|
|
|
|
Description: gui.Tr.SLocalize("CommitChanges"),
|
2019-04-13 05:56:31 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "files",
|
|
|
|
Key: 'w',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleWIPCommitPress,
|
|
|
|
Description: gui.Tr.SLocalize("commitChangesWithoutHook"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-12 15:20:35 +02:00
|
|
|
ViewName: "files",
|
2018-10-08 21:19:45 +02:00
|
|
|
Key: 'A',
|
2018-09-12 15:20:35 +02:00
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleAmendCommitPress,
|
2018-09-25 22:11:51 +02:00
|
|
|
Description: gui.Tr.SLocalize("AmendLastCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'C',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitEditorPress,
|
|
|
|
Description: gui.Tr.SLocalize("CommitChangesWithEditor"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-03 18:44:56 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleFilePress,
|
|
|
|
Description: gui.Tr.SLocalize("toggleStaged"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:03:43 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-03-18 11:44:33 +02:00
|
|
|
Handler: gui.handleCreateDiscardMenu,
|
|
|
|
Description: gui.Tr.SLocalize("viewDiscardOptions"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'e',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleFileEdit,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("editFile"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'o',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleFileOpen,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("openFile"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'i',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleIgnoreFile,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("ignoreFile"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'r',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRefreshFiles,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("refreshFiles"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-05-30 14:45:56 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 's',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStashChanges,
|
|
|
|
Description: gui.Tr.SLocalize("stashAllChanges"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
2019-03-02 06:12:52 +02:00
|
|
|
Key: 'S',
|
2018-09-01 14:20:45 +02:00
|
|
|
Modifier: gocui.ModNone,
|
2019-05-30 14:45:56 +02:00
|
|
|
Handler: gui.handleCreateStashMenu,
|
|
|
|
Description: gui.Tr.SLocalize("viewStashOptions"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'a',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStageAll,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("toggleStagedAll"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'D',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-03-18 12:40:32 +02:00
|
|
|
Handler: gui.handleCreateResetMenu,
|
|
|
|
Description: gui.Tr.SLocalize("viewResetOptions"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-12-02 10:57:01 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
2018-12-05 13:30:10 +02:00
|
|
|
Handler: gui.handleEnterFile,
|
2018-12-02 10:57:01 +02:00
|
|
|
Description: gui.Tr.SLocalize("StageLines"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-12-12 13:33:42 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'f',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleGitFetch,
|
|
|
|
Description: gui.Tr.SLocalize("fetch"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-12 12:43:56 +02:00
|
|
|
ViewName: "files",
|
|
|
|
Key: 'X',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCustomCommand,
|
|
|
|
Description: gui.Tr.SLocalize("executeCustomCommand"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-03 18:44:56 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-09-03 18:44:56 +02:00
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleBranchPress,
|
|
|
|
Description: gui.Tr.SLocalize("checkout"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-10-12 14:06:03 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-10-12 14:06:03 +02:00
|
|
|
Key: 'o',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreatePullRequestPress,
|
|
|
|
Description: gui.Tr.SLocalize("createPullRequest"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-09-01 14:20:45 +02:00
|
|
|
Key: 'c',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCheckoutByName,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("checkoutByName"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-09-01 14:20:45 +02:00
|
|
|
Key: 'F',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleForceCheckout,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("forceCheckout"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-09-01 14:20:45 +02:00
|
|
|
Key: 'n',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleNewBranch,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("newBranch"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-09-01 14:20:45 +02:00
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleDeleteBranch,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("deleteBranch"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-11-29 18:57:51 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-11-29 18:57:51 +02:00
|
|
|
Key: 'r',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-11-17 05:04:57 +02:00
|
|
|
Handler: gui.handleRebaseOntoLocalBranch,
|
2018-11-29 18:57:51 +02:00
|
|
|
Description: gui.Tr.SLocalize("rebaseBranch"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2019-02-19 14:36:29 +02:00
|
|
|
Key: 'M',
|
2018-09-01 14:20:45 +02:00
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleMerge,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("mergeIntoCurrentBranch"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-12-07 09:52:31 +02:00
|
|
|
ViewName: "branches",
|
2019-11-16 05:00:27 +02:00
|
|
|
Contexts: []string{"local-branches"},
|
2018-12-07 09:52:31 +02:00
|
|
|
Key: 'f',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleFastForward,
|
|
|
|
Description: gui.Tr.SLocalize("FastForward"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
2019-11-16 07:20:05 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Key: ']',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleNextBranchesTab,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Key: '[',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handlePrevBranchesTab,
|
|
|
|
},
|
2019-11-16 08:35:59 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRemoteBranchesEscape,
|
|
|
|
Description: gui.Tr.SLocalize("ReturnToRemotesList"),
|
|
|
|
},
|
2019-11-16 03:41:04 +02:00
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 's',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitSquashDown,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("squashDown"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'r',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRenameCommit,
|
2018-09-03 18:16:54 +02:00
|
|
|
Description: gui.Tr.SLocalize("renameCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-03 18:01:07 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'R',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRenameCommitEditor,
|
2018-09-03 18:16:54 +02:00
|
|
|
Description: gui.Tr.SLocalize("renameCommitEditor"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'g',
|
|
|
|
Modifier: gocui.ModNone,
|
2019-04-02 10:53:16 +02:00
|
|
|
Handler: gui.handleCreateCommitResetMenu,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("resetToThisCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'f',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitFixup,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("fixupCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-04-07 03:35:34 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'F',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCreateFixupCommit,
|
|
|
|
Description: gui.Tr.SLocalize("createFixupCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-04-07 03:35:34 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'S',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleSquashAllAboveFixupCommits,
|
|
|
|
Description: gui.Tr.SLocalize("squashAboveCommits"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-18 14:27:54 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitDelete,
|
|
|
|
Description: gui.Tr.SLocalize("deleteCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-18 14:27:54 +02:00
|
|
|
ViewName: "commits",
|
2019-05-25 08:37:47 +02:00
|
|
|
Key: gocui.KeyCtrlJ,
|
2019-02-18 14:27:54 +02:00
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitMoveDown,
|
|
|
|
Description: gui.Tr.SLocalize("moveDownCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-18 14:27:54 +02:00
|
|
|
ViewName: "commits",
|
2019-05-25 08:37:47 +02:00
|
|
|
Key: gocui.KeyCtrlK,
|
2019-02-18 14:27:54 +02:00
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitMoveUp,
|
|
|
|
Description: gui.Tr.SLocalize("moveUpCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-18 14:27:54 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'e',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitEdit,
|
|
|
|
Description: gui.Tr.SLocalize("editCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-19 14:36:29 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'A',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitAmendTo,
|
|
|
|
Description: gui.Tr.SLocalize("amendToCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-19 14:36:29 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'p',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitPick,
|
|
|
|
Description: gui.Tr.SLocalize("pickCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-19 14:36:29 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 't',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitRevert,
|
|
|
|
Description: gui.Tr.SLocalize("revertCommit"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-24 04:51:52 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'c',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCopyCommit,
|
|
|
|
Description: gui.Tr.SLocalize("cherryPickCopy"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-24 04:51:52 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'C',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCopyCommitRange,
|
|
|
|
Description: gui.Tr.SLocalize("cherryPickCopyRange"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-02-24 04:51:52 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: 'v',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.HandlePasteCommits,
|
|
|
|
Description: gui.Tr.SLocalize("pasteCommits"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-09 16:42:10 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleSwitchToCommitFilesPanel,
|
2019-03-11 00:28:47 +02:00
|
|
|
Description: gui.Tr.SLocalize("viewCommitFiles"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-23 15:46:08 +02:00
|
|
|
ViewName: "commits",
|
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleToggleDiffCommit,
|
|
|
|
Description: gui.Tr.SLocalize("CommitsDiff"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "stash",
|
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStashApply,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("apply"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "stash",
|
|
|
|
Key: 'g',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStashPop,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("pop"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 14:20:45 +02:00
|
|
|
ViewName: "stash",
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStashDrop,
|
2018-09-01 14:03:43 +02:00
|
|
|
Description: gui.Tr.SLocalize("drop"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "commitMessage",
|
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitConfirm,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-01 12:10:03 +02:00
|
|
|
ViewName: "commitMessage",
|
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitClose,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-12-10 08:51:06 +02:00
|
|
|
ViewName: "credentials",
|
2018-10-20 17:37:55 +02:00
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
2018-12-18 13:19:32 +02:00
|
|
|
Handler: gui.handleSubmitCredential,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-12-10 08:51:06 +02:00
|
|
|
ViewName: "credentials",
|
2018-10-20 17:37:55 +02:00
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
2018-12-18 13:19:32 +02:00
|
|
|
Handler: gui.handleCloseCredentialsView,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-05 11:12:11 +02:00
|
|
|
ViewName: "menu",
|
2018-09-01 12:10:03 +02:00
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
2018-09-05 11:12:11 +02:00
|
|
|
Handler: gui.handleMenuClose,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2018-09-05 11:12:11 +02:00
|
|
|
ViewName: "menu",
|
2018-09-01 12:10:03 +02:00
|
|
|
Key: 'q',
|
|
|
|
Modifier: gocui.ModNone,
|
2018-09-05 11:12:11 +02:00
|
|
|
Handler: gui.handleMenuClose,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-03 05:28:16 +02:00
|
|
|
ViewName: "information",
|
2019-02-25 13:11:35 +02:00
|
|
|
Key: gocui.MouseLeft,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleDonate,
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-11 00:28:47 +02:00
|
|
|
ViewName: "commitFiles",
|
2019-03-09 16:42:10 +02:00
|
|
|
Key: gocui.KeyEsc,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleSwitchToCommitsPanel,
|
2019-03-11 00:28:47 +02:00
|
|
|
Description: gui.Tr.SLocalize("goBack"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-11 00:53:46 +02:00
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: 'c',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCheckoutCommitFile,
|
|
|
|
Description: gui.Tr.SLocalize("checkoutCommitFile"),
|
2019-11-16 03:41:04 +02:00
|
|
|
},
|
|
|
|
{
|
2019-03-11 04:04:08 +02:00
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleDiscardOldFileChange,
|
|
|
|
Description: gui.Tr.SLocalize("discardOldFileChange"),
|
2018-09-01 12:10:03 +02:00
|
|
|
},
|
2019-03-15 04:29:27 +02:00
|
|
|
{
|
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: 'o',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleOpenOldCommitFile,
|
|
|
|
Description: gui.Tr.SLocalize("openFile"),
|
|
|
|
},
|
2019-11-04 10:47:25 +02:00
|
|
|
{
|
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleToggleFileForPatch,
|
|
|
|
Description: gui.Tr.SLocalize("toggleAddToPatch"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleEnterCommitFile,
|
|
|
|
Description: gui.Tr.SLocalize("enterFile"),
|
|
|
|
},
|
2019-11-10 07:50:36 +02:00
|
|
|
{
|
|
|
|
ViewName: "secondary",
|
|
|
|
Key: gocui.MouseWheelUp,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollUpSecondary,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "secondary",
|
|
|
|
Key: gocui.MouseWheelDown,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.scrollDownSecondary,
|
|
|
|
},
|
2019-11-16 03:41:04 +02:00
|
|
|
{
|
|
|
|
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"),
|
|
|
|
},
|
2019-11-16 08:35:59 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remotes"},
|
|
|
|
Key: gocui.KeyEnter,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRemoteEnter,
|
|
|
|
},
|
2019-11-17 03:02:39 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remotes"},
|
|
|
|
Key: 'n',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleAddRemote,
|
|
|
|
Description: gui.Tr.SLocalize("addNewRemote"),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remotes"},
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRemoveRemote,
|
|
|
|
Description: gui.Tr.SLocalize("removeRemote"),
|
|
|
|
},
|
2019-11-17 03:07:36 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: gocui.KeySpace,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCheckoutRemoteBranch,
|
|
|
|
Description: gui.Tr.SLocalize("checkout"),
|
|
|
|
},
|
2019-11-17 04:21:38 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: 'M',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleMergeRemoteBranch,
|
|
|
|
Description: gui.Tr.SLocalize("mergeIntoCurrentBranch"),
|
|
|
|
},
|
2019-11-17 04:47:47 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: 'd',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleDeleteRemoteBranch,
|
|
|
|
Description: gui.Tr.SLocalize("deleteBranch"),
|
|
|
|
},
|
2019-11-17 05:04:57 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: 'r',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleRebaseOntoRemoteBranch,
|
|
|
|
Description: gui.Tr.SLocalize("rebaseBranch"),
|
|
|
|
},
|
2019-11-17 05:50:12 +02:00
|
|
|
{
|
|
|
|
ViewName: "branches",
|
|
|
|
Contexts: []string{"remote-branches"},
|
|
|
|
Key: 'u',
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleSetBranchUpstream,
|
|
|
|
Description: gui.Tr.SLocalize("setUpstream"),
|
|
|
|
},
|
2019-11-16 05:00:27 +02:00
|
|
|
{
|
|
|
|
ViewName: "stash",
|
|
|
|
Key: gocui.MouseLeft,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStashEntrySelect,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "status",
|
|
|
|
Key: gocui.MouseLeft,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleStatusClick,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
ViewName: "commitFiles",
|
|
|
|
Key: gocui.MouseLeft,
|
|
|
|
Modifier: gocui.ModNone,
|
|
|
|
Handler: gui.handleCommitFilesClick,
|
|
|
|
},
|
2018-08-08 11:18:41 +02:00
|
|
|
}
|
2018-08-09 15:26:31 +02:00
|
|
|
|
2019-03-11 04:04:08 +02:00
|
|
|
for _, viewName := range []string{"status", "branches", "files", "commits", "commitFiles", "stash", "menu"} {
|
2018-09-17 13:02:30 +02:00
|
|
|
bindings = append(bindings, []*Binding{
|
2018-08-13 13:16:21 +02:00
|
|
|
{ViewName: viewName, Key: gocui.KeyTab, Modifier: gocui.ModNone, Handler: gui.nextView},
|
|
|
|
{ViewName: viewName, Key: gocui.KeyArrowLeft, Modifier: gocui.ModNone, Handler: gui.previousView},
|
|
|
|
{ViewName: viewName, Key: gocui.KeyArrowRight, Modifier: gocui.ModNone, Handler: gui.nextView},
|
|
|
|
{ViewName: viewName, Key: 'h', Modifier: gocui.ModNone, Handler: gui.previousView},
|
|
|
|
{ViewName: viewName, Key: 'l', Modifier: gocui.ModNone, Handler: gui.nextView},
|
2018-08-09 15:26:31 +02:00
|
|
|
}...)
|
|
|
|
}
|
|
|
|
|
2019-07-27 13:16:26 +02:00
|
|
|
// Appends keybindings to jump to a particular sideView using numbers
|
|
|
|
for i, viewName := range []string{"status", "files", "branches", "commits", "stash"} {
|
|
|
|
bindings = append(bindings, &Binding{ViewName: "", Key: rune(i+1) + '0', Modifier: gocui.ModNone, Handler: gui.goToSideView(viewName)})
|
|
|
|
}
|
|
|
|
|
2019-11-16 05:00:27 +02:00
|
|
|
for _, listView := range gui.getListViews() {
|
2018-12-07 09:52:31 +02:00
|
|
|
bindings = append(bindings, []*Binding{
|
2019-11-16 05:00:27 +02:00
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: 'k', Modifier: gocui.ModNone, Handler: listView.handlePrevLine},
|
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: gocui.KeyArrowUp, Modifier: gocui.ModNone, Handler: listView.handlePrevLine},
|
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: gocui.MouseWheelUp, Modifier: gocui.ModNone, Handler: listView.handlePrevLine},
|
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: 'j', Modifier: gocui.ModNone, Handler: listView.handleNextLine},
|
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: gocui.KeyArrowDown, Modifier: gocui.ModNone, Handler: listView.handleNextLine},
|
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: gocui.MouseWheelDown, Modifier: gocui.ModNone, Handler: listView.handleNextLine},
|
2019-11-17 08:23:06 +02:00
|
|
|
{ViewName: listView.viewName, Contexts: []string{listView.context}, Key: gocui.MouseLeft, Modifier: gocui.ModNone, Handler: listView.handleClick},
|
2018-12-07 09:52:31 +02:00
|
|
|
}...)
|
|
|
|
}
|
|
|
|
|
2018-08-28 20:07:13 +02:00
|
|
|
return bindings
|
|
|
|
}
|
|
|
|
|
|
|
|
func (gui *Gui) keybindings(g *gocui.Gui) error {
|
2019-02-16 03:07:27 +02:00
|
|
|
bindings := gui.GetInitialKeybindings()
|
2018-08-28 20:07:13 +02:00
|
|
|
|
2018-08-08 11:18:41 +02:00
|
|
|
for _, binding := range bindings {
|
2019-11-16 03:41:04 +02:00
|
|
|
if err := g.SetKeybinding(binding.ViewName, binding.Contexts, binding.Key, binding.Modifier, binding.Handler); err != nil {
|
2018-08-08 11:18:41 +02:00
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
2019-11-13 14:18:31 +02:00
|
|
|
|
|
|
|
if err := g.SetTabClickBinding("branches", gui.onBranchesTabClick); err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
2019-02-16 03:07:27 +02:00
|
|
|
return nil
|
|
|
|
}
|