mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-04-21 12:16:54 +02:00
52 lines
1.0 KiB
Go
52 lines
1.0 KiB
Go
package keybindings
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"strings"
|
|
"unicode/utf8"
|
|
|
|
"github.com/jesseduffield/gocui"
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
"github.com/jesseduffield/lazygit/pkg/constants"
|
|
"github.com/jesseduffield/lazygit/pkg/gui/types"
|
|
)
|
|
|
|
func Label(name string) string {
|
|
return LabelFromKey(GetKey(name))
|
|
}
|
|
|
|
func LabelFromKey(key types.Key) string {
|
|
keyInt := 0
|
|
|
|
switch key := key.(type) {
|
|
case rune:
|
|
keyInt = int(key)
|
|
case gocui.Key:
|
|
value, ok := config.LabelByKey[key]
|
|
if ok {
|
|
return value
|
|
}
|
|
keyInt = int(key)
|
|
}
|
|
|
|
return fmt.Sprintf("%c", keyInt)
|
|
}
|
|
|
|
func GetKey(key string) types.Key {
|
|
runeCount := utf8.RuneCountInString(key)
|
|
if key == "<disabled>" {
|
|
return nil
|
|
} else if runeCount > 1 {
|
|
binding, ok := config.KeyByLabel[strings.ToLower(key)]
|
|
if !ok {
|
|
log.Fatalf("Unrecognized key %s for keybinding. For permitted values see %s", strings.ToLower(key), constants.Links.Docs.CustomKeybindings)
|
|
} else {
|
|
return binding
|
|
}
|
|
} else if runeCount == 1 {
|
|
return []rune(key)[0]
|
|
}
|
|
return nil
|
|
}
|