mirror of
https://github.com/mrusme/neonmodem.git
synced 2024-09-01 04:14:15 -04:00
52 lines
928 B
Go
52 lines
928 B
Go
package toolkit
|
|
|
|
import (
|
|
"sort"
|
|
"strings"
|
|
|
|
"github.com/charmbracelet/bubbles/key"
|
|
)
|
|
|
|
func (tk *ToolKit) KeymapAdd(id string, help string, keys ...string) {
|
|
keysview := ""
|
|
for i, k := range keys {
|
|
if i > 0 {
|
|
keysview += "/"
|
|
}
|
|
keysview += k
|
|
}
|
|
|
|
binding := key.NewBinding(
|
|
key.WithKeys(keys...),
|
|
key.WithHelp(keysview, help),
|
|
)
|
|
|
|
tk.keybindings[id] = binding
|
|
|
|
return
|
|
}
|
|
|
|
func (tk *ToolKit) KeymapGet(id string) key.Binding {
|
|
if k, ok := tk.keybindings[id]; ok {
|
|
return k
|
|
}
|
|
|
|
return key.NewBinding()
|
|
}
|
|
|
|
func (tk *ToolKit) KeymapHelpStrings() []string {
|
|
var bindings []string
|
|
for _, binding := range tk.keybindings {
|
|
var tmp string = ""
|
|
tmp = binding.Help().Key + " " + binding.Help().Desc
|
|
bindings = append(bindings, tmp)
|
|
}
|
|
sort.SliceStable(bindings, func(i, j int) bool {
|
|
return strings.Compare(bindings[i], bindings[j]) == -1
|
|
})
|
|
|
|
bindings = append(bindings, "esc close")
|
|
|
|
return bindings
|
|
}
|