From 79b459ecb0da7759de617d164cb1cafc4a6be1c8 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Thu, 21 Mar 2019 16:35:35 -0400 Subject: [PATCH] Add additional context to key binding set --- config/bindings.go | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/config/bindings.go b/config/bindings.go index 39b50ce..1882f74 100644 --- a/config/bindings.go +++ b/config/bindings.go @@ -20,7 +20,14 @@ type Binding struct { Input []KeyStroke } -type KeyBindings []*Binding +type KeyBindings struct { + bindings []*Binding + + // If false, disable global keybindings in this context + Globals bool + // Which key opens the ex line (default is :) + ExKey KeyStroke +} const ( BINDING_FOUND = iota @@ -31,12 +38,15 @@ const ( type BindingSearchResult int func NewKeyBindings() *KeyBindings { - return &KeyBindings{} + return &KeyBindings{ + ExKey: KeyStroke{tcell.KeyRune, ':'}, + Globals: true, + } } func (bindings *KeyBindings) Add(binding *Binding) { // TODO: Search for conflicts? - *bindings = append(*bindings, binding) + bindings.bindings = append(bindings.bindings, binding) } func (bindings *KeyBindings) GetBinding( @@ -45,7 +55,7 @@ func (bindings *KeyBindings) GetBinding( incomplete := false // TODO: This could probably be a sorted list to speed things up // TODO: Deal with bindings that share a prefix - for _, binding := range *bindings { + for _, binding := range bindings.bindings { if len(binding.Input) < len(input) { continue }