diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-17 22:04:20 +1000 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-08-23 14:29:18 +1000 |
commit | 4f4df8f9cc91118853fc40e38b54d61d3aeb5688 (patch) | |
tree | 25ef154e60f992046eae8b72ffeb083f5241cf0c /pkg/gui/context.go | |
parent | c730271e0961d15e8f90381af35fc0d6230a586e (diff) |
move context specific keybindings into context file
Diffstat (limited to 'pkg/gui/context.go')
-rw-r--r-- | pkg/gui/context.go | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/pkg/gui/context.go b/pkg/gui/context.go index 5ab4bfe1b..7faa16782 100644 --- a/pkg/gui/context.go +++ b/pkg/gui/context.go @@ -411,3 +411,49 @@ func (gui *Gui) changeMainViewsContext(context string) { gui.State.MainContext = context } + +func (gui *Gui) getListContextKeyBindings() []*Binding { + bindings := make([]*Binding, 0) + + for _, listContext := range gui.getListContexts() { + bindings = append(bindings, []*Binding{ + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.prevItem-alt"), Modifier: gocui.ModNone, Handler: listContext.handlePrevLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.prevItem"), Modifier: gocui.ModNone, Handler: listContext.handlePrevLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gocui.MouseWheelUp, Modifier: gocui.ModNone, Handler: listContext.handlePrevLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.nextItem-alt"), Modifier: gocui.ModNone, Handler: listContext.handleNextLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.nextItem"), Modifier: gocui.ModNone, Handler: listContext.handleNextLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.prevPage"), Modifier: gocui.ModNone, Handler: listContext.handlePrevPage, Description: gui.Tr.SLocalize("prevPage")}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.nextPage"), Modifier: gocui.ModNone, Handler: listContext.handleNextPage, Description: gui.Tr.SLocalize("nextPage")}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gui.getKey("universal.gotoTop"), Modifier: gocui.ModNone, Handler: listContext.handleGotoTop, Description: gui.Tr.SLocalize("gotoTop")}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gocui.MouseWheelDown, Modifier: gocui.ModNone, Handler: listContext.handleNextLine}, + {ViewName: listContext.ViewName, Contexts: []string{listContext.ContextKey}, Key: gocui.MouseLeft, Modifier: gocui.ModNone, Handler: listContext.handleClick}, + }...) + + // the commits panel needs to lazyload things so it has a couple of its own handlers + openSearchHandler := gui.handleOpenSearch + gotoBottomHandler := listContext.handleGotoBottom + if listContext.ViewName == "commits" { + openSearchHandler = gui.handleOpenSearchForCommitsPanel + gotoBottomHandler = gui.handleGotoBottomForCommitsPanel + } + + bindings = append(bindings, []*Binding{ + { + ViewName: listContext.ViewName, + Contexts: []string{listContext.ContextKey}, + Key: gui.getKey("universal.startSearch"), + Handler: openSearchHandler, + Description: gui.Tr.SLocalize("startSearch"), + }, + { + ViewName: listContext.ViewName, + Contexts: []string{listContext.ContextKey}, + Key: gui.getKey("universal.gotoBottom"), + Handler: gotoBottomHandler, + Description: gui.Tr.SLocalize("gotoBottom"), + }, + }...) + } + + return bindings +} |