summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Burville <Sam.Burville@GlobalProcessing.com>2021-10-17 18:22:59 +0100
committerJesse Duffield <jessedduffield@gmail.com>2021-10-22 22:38:26 +1100
commitf6e316dfe5a35696e091f760e533a7a62f946f99 (patch)
tree2a9431d543b47ff4c74e9a9d3ccf74d6b755813c
parent91e8765d9ca04aa88377f07d8abe665fb8fc66fe (diff)
Improve JumpToBlock keybinding functionality
Improve experience when yaml file has != 5 keybindings and change view helper to use the length of the array instead of hardcoded value.
-rw-r--r--docs/Config.md2
-rw-r--r--pkg/config/user_config.go122
-rw-r--r--pkg/gui/keybindings.go16
-rw-r--r--pkg/gui/view_helpers.go2
4 files changed, 73 insertions, 69 deletions
diff --git a/docs/Config.md b/docs/Config.md
index b1cf78307..7b112aedc 100644
--- a/docs/Config.md
+++ b/docs/Config.md
@@ -101,7 +101,7 @@ keybinding:
nextBlock: '<right>' # goto the next block / panel
prevBlock-alt: 'h' # goto the previous block / panel
nextBlock-alt: 'l' # goto the next block / panel
- jumpToBlock: "1", "2", "3", "4", "5" # goto the Nth block / panel
+ jumpToBlock: ["1", "2", "3", "4", "5"] # goto the Nth block / panel
nextMatch: 'n'
prevMatch: 'N'
optionMenu: 'x' # show help menu
diff --git a/pkg/config/user_config.go b/pkg/config/user_config.go
index 8e98eb592..566bcf59c 100644
--- a/pkg/config/user_config.go
+++ b/pkg/config/user_config.go
@@ -106,66 +106,66 @@ type KeybindingConfig struct {
// damn looks like we have some inconsistencies here with -alt and -alt1
type KeybindingUniversalConfig struct {
- Quit string `yaml:"quit"`
- QuitAlt1 string `yaml:"quit-alt1"`
- Return string `yaml:"return"`
- QuitWithoutChangingDirectory string `yaml:"quitWithoutChangingDirectory"`
- TogglePanel string `yaml:"togglePanel"`
- PrevItem string `yaml:"prevItem"`
- NextItem string `yaml:"nextItem"`
- PrevItemAlt string `yaml:"prevItem-alt"`
- NextItemAlt string `yaml:"nextItem-alt"`
- PrevPage string `yaml:"prevPage"`
- NextPage string `yaml:"nextPage"`
- GotoTop string `yaml:"gotoTop"`
- GotoBottom string `yaml:"gotoBottom"`
- PrevBlock string `yaml:"prevBlock"`
- NextBlock string `yaml:"nextBlock"`
- PrevBlockAlt string `yaml:"prevBlock-alt"`
- NextBlockAlt string `yaml:"nextBlock-alt"`
- NextBlockAlt2 string `yaml:"nextBlock-alt2"`
- PrevBlockAlt2 string `yaml:"prevBlock-alt2"`
- JumpToBlock [5]string `yaml:"JumpToBlock"`
- NextMatch string `yaml:"nextMatch"`
- PrevMatch string `yaml:"prevMatch"`
- StartSearch string `yaml:"startSearch"`
- OptionMenu string `yaml:"optionMenu"`
- OptionMenuAlt1 string `yaml:"optionMenu-alt1"`
- Select string `yaml:"select"`
- GoInto string `yaml:"goInto"`
- Confirm string `yaml:"confirm"`
- ConfirmAlt1 string `yaml:"confirm-alt1"`
- Remove string `yaml:"remove"`
- New string `yaml:"new"`
- Edit string `yaml:"edit"`
- OpenFile string `yaml:"openFile"`
- ScrollUpMain string `yaml:"scrollUpMain"`
- ScrollDownMain string `yaml:"scrollDownMain"`
- ScrollUpMainAlt1 string `yaml:"scrollUpMain-alt1"`
- ScrollDownMainAlt1 string `yaml:"scrollDownMain-alt1"`
- ScrollUpMainAlt2 string `yaml:"scrollUpMain-alt2"`
- ScrollDownMainAlt2 string `yaml:"scrollDownMain-alt2"`
- ExecuteCustomCommand string `yaml:"executeCustomCommand"`
- CreateRebaseOptionsMenu string `yaml:"createRebaseOptionsMenu"`
- PushFiles string `yaml:"pushFiles"`
- PullFiles string `yaml:"pullFiles"`
- Refresh string `yaml:"refresh"`
- CreatePatchOptionsMenu string `yaml:"createPatchOptionsMenu"`
- NextTab string `yaml:"nextTab"`
- PrevTab string `yaml:"prevTab"`
- NextScreenMode string `yaml:"nextScreenMode"`
- PrevScreenMode string `yaml:"prevScreenMode"`
- Undo string `yaml:"undo"`
- Redo string `yaml:"redo"`
- FilteringMenu string `yaml:"filteringMenu"`
- DiffingMenu string `yaml:"diffingMenu"`
- DiffingMenuAlt string `yaml:"diffingMenu-alt"`
- CopyToClipboard string `yaml:"copyToClipboard"`
- OpenRecentRepos string `yaml:"openRecentRepos"`
- SubmitEditorText string `yaml:"submitEditorText"`
- AppendNewline string `yaml:"appendNewline"`
- ExtrasMenu string `yaml:"extrasMenu"`
- ToggleWhitespaceInDiffView string `yaml:"toggleWhitespaceInDiffView"`
+ Quit string `yaml:"quit"`
+ QuitAlt1 string `yaml:"quit-alt1"`
+ Return string `yaml:"return"`
+ QuitWithoutChangingDirectory string `yaml:"quitWithoutChangingDirectory"`
+ TogglePanel string `yaml:"togglePanel"`
+ PrevItem string `yaml:"prevItem"`
+ NextItem string `yaml:"nextItem"`
+ PrevItemAlt string `yaml:"prevItem-alt"`
+ NextItemAlt string `yaml:"nextItem-alt"`
+ PrevPage string `yaml:"prevPage"`
+ NextPage string `yaml:"nextPage"`
+ GotoTop string `yaml:"gotoTop"`
+ GotoBottom string `yaml:"gotoBottom"`
+ PrevBlock string `yaml:"prevBlock"`
+ NextBlock string `yaml:"nextBlock"`
+ PrevBlockAlt string `yaml:"prevBlock-alt"`
+ NextBlockAlt string `yaml:"nextBlock-alt"`
+ NextBlockAlt2 string `yaml:"nextBlock-alt2"`
+ PrevBlockAlt2 string `yaml:"prevBlock-alt2"`
+ JumpToBlock []string `yaml:"jumpToBlock"`
+ NextMatch string `yaml:"nextMatch"`
+ PrevMatch string `yaml:"prevMatch"`
+ StartSearch string `yaml:"startSearch"`
+ OptionMenu string `yaml:"optionMenu"`
+ OptionMenuAlt1 string `yaml:"optionMenu-alt1"`
+ Select string `yaml:"select"`
+ GoInto string `yaml:"goInto"`
+ Confirm string `yaml:"confirm"`
+ ConfirmAlt1 string `yaml:"confirm-alt1"`
+ Remove string `yaml:"remove"`
+ New string `yaml:"new"`
+ Edit string `yaml:"edit"`
+ OpenFile string `yaml:"openFile"`
+ ScrollUpMain string `yaml:"scrollUpMain"`
+ ScrollDownMain string `yaml:"scrollDownMain"`
+ ScrollUpMainAlt1 string `yaml:"scrollUpMain-alt1"`
+ ScrollDownMainAlt1 string `yaml:"scrollDownMain-alt1"`
+ ScrollUpMainAlt2 string `yaml:"scrollUpMain-alt2"`
+ ScrollDownMainAlt2 string `yaml:"scrollDownMain-alt2"`
+ ExecuteCustomCommand string `yaml:"executeCustomCommand"`
+ CreateRebaseOptionsMenu string `yaml:"createRebaseOptionsMenu"`
+ PushFiles string `yaml:"pushFiles"`
+ PullFiles string `yaml:"pullFiles"`
+ Refresh string `yaml:"refresh"`
+ CreatePatchOptionsMenu string `yaml:"createPatchOptionsMenu"`
+ NextTab string `yaml:"nextTab"`
+ PrevTab string `yaml:"prevTab"`
+ NextScreenMode string `yaml:"nextScreenMode"`
+ PrevScreenMode string `yaml:"prevScreenMode"`
+ Undo string `yaml:"undo"`
+ Redo string `yaml:"redo"`
+ FilteringMenu string `yaml:"filteringMenu"`
+ DiffingMenu string `yaml:"diffingMenu"`
+ DiffingMenuAlt string `yaml:"diffingMenu-alt"`
+ CopyToClipboard string `yaml:"copyToClipboard"`
+ OpenRecentRepos string `yaml:"openRecentRepos"`
+ SubmitEditorText string `yaml:"submitEditorText"`
+ AppendNewline string `yaml:"appendNewline"`
+ ExtrasMenu string `yaml:"extrasMenu"`
+ ToggleWhitespaceInDiffView string `yaml:"toggleWhitespaceInDiffView"`
}
type KeybindingStatusConfig struct {
@@ -378,7 +378,7 @@ func GetDefaultConfig() *UserConfig {
NextBlockAlt: "l",
PrevBlockAlt2: "<backtab>",
NextBlockAlt2: "<tab>",
- JumpToBlock: [5]string{"1", "2", "3", "4", "5"},
+ JumpToBlock: []string{"1", "2", "3", "4", "5"},
NextMatch: "n",
PrevMatch: "N",
StartSearch: "/",
diff --git a/pkg/gui/keybindings.go b/pkg/gui/keybindings.go
index 1678ee03c..76a33a33a 100644
--- a/pkg/gui/keybindings.go
+++ b/pkg/gui/keybindings.go
@@ -1818,12 +1818,16 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
}
// Appends keybindings to jump to a particular sideView using numbers
- for i, window := range []string{"status", "files", "branches", "commits", "stash"} {
- bindings = append(bindings, &Binding{
- ViewName: "",
- Key: gui.getKey(config.Universal.JumpToBlock[i]),
- Modifier: gocui.ModNone,
- Handler: gui.goToSideWindow(window)})
+ if len(config.Universal.JumpToBlock) != 5 {
+ log.Fatal("Jump to block keybindings cannot be set. Exactly 5 keybindings must be supplied.")
+ } else {
+ for i, window := range []string{"status", "files", "branches", "commits", "stash"} {
+ bindings = append(bindings, &Binding{
+ ViewName: "",
+ Key: gui.getKey(config.Universal.JumpToBlock[i]),
+ Modifier: gocui.ModNone,
+ Handler: gui.goToSideWindow(window)})
+ }
}
for viewName := range gui.State.Contexts.initialViewTabContextMap() {
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go
index ce836c59b..930d98a0c 100644
--- a/pkg/gui/view_helpers.go
+++ b/pkg/gui/view_helpers.go
@@ -322,7 +322,7 @@ func (gui *Gui) globalOptionsMap() map[string]string {
gui.getKeyDisplay(keybindingConfig.Universal.Return): gui.Tr.LcCancel,
gui.getKeyDisplay(keybindingConfig.Universal.Quit): gui.Tr.LcQuit,
gui.getKeyDisplay(keybindingConfig.Universal.OptionMenu): gui.Tr.LcMenu,
- fmt.Sprintf("%s-%s", gui.getKeyDisplay(keybindingConfig.Universal.JumpToBlock[0]), gui.getKeyDisplay(keybindingConfig.Universal.JumpToBlock[4])): gui.Tr.LcJump,
+ fmt.Sprintf("%s-%s", gui.getKeyDisplay(keybindingConfig.Universal.JumpToBlock[0]), gui.getKeyDisplay(keybindingConfig.Universal.JumpToBlock[len(keybindingConfig.Universal.JumpToBlock)-1])): gui.Tr.LcJump,
}
}