1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-10 23:57:43 +02:00

Use same labels for keys that we use in the config

Previously we were displaying keys in a different format than we expected them in the config.
This was certain to cause confusion.
This commit is contained in:
Jesse Duffield 2023-05-21 10:59:16 +10:00
parent 820f7b9404
commit 2e66d87b94

View File

@ -9,142 +9,73 @@ import (
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
"github.com/jesseduffield/lazygit/pkg/constants" "github.com/jesseduffield/lazygit/pkg/constants"
"github.com/jesseduffield/lazygit/pkg/gui/types" "github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/samber/lo"
) )
var keyMapReversed = map[gocui.Key]string{ var labelByKey = map[gocui.Key]string{
gocui.KeyF1: "f1", gocui.KeyF1: "<f1>",
gocui.KeyF2: "f2", gocui.KeyF2: "<f2>",
gocui.KeyF3: "f3", gocui.KeyF3: "<f3>",
gocui.KeyF4: "f4", gocui.KeyF4: "<f4>",
gocui.KeyF5: "f5", gocui.KeyF5: "<f5>",
gocui.KeyF6: "f6", gocui.KeyF6: "<f6>",
gocui.KeyF7: "f7", gocui.KeyF7: "<f7>",
gocui.KeyF8: "f8", gocui.KeyF8: "<f8>",
gocui.KeyF9: "f9", gocui.KeyF9: "<f9>",
gocui.KeyF10: "f10", gocui.KeyF10: "<f10>",
gocui.KeyF11: "f11", gocui.KeyF11: "<f11>",
gocui.KeyF12: "f12", gocui.KeyF12: "<f12>",
gocui.KeyInsert: "insert", gocui.KeyInsert: "<insert>",
gocui.KeyDelete: "delete", gocui.KeyDelete: "<delete>",
gocui.KeyHome: "home", gocui.KeyHome: "<home>",
gocui.KeyEnd: "end", gocui.KeyEnd: "<end>",
gocui.KeyPgup: "pgup", gocui.KeyPgup: "<pgup>",
gocui.KeyPgdn: "pgdown", gocui.KeyPgdn: "<pgdown>",
gocui.KeyArrowUp: "", gocui.KeyArrowUp: "<up>",
gocui.KeyArrowDown: "", gocui.KeyArrowDown: "<down>",
gocui.KeyArrowLeft: "", gocui.KeyArrowLeft: "<left>",
gocui.KeyArrowRight: "", gocui.KeyArrowRight: "<right>",
gocui.KeyTab: "tab", // ctrl+i gocui.KeyTab: "<tab>", // <c-i>
gocui.KeyBacktab: "shift+tab", gocui.KeyBacktab: "<backtab>",
gocui.KeyEnter: "enter", // ctrl+m gocui.KeyEnter: "<enter>", // <c-m>
gocui.KeyAltEnter: "alt+enter", gocui.KeyAltEnter: "<a-enter>",
gocui.KeyEsc: "esc", // ctrl+[, ctrl+3 gocui.KeyEsc: "<esc>", // <c-[>, <c-3>
gocui.KeyBackspace: "backspace", // ctrl+h gocui.KeyBackspace: "<backspace>", // <c-h>
gocui.KeyCtrlSpace: "ctrl+space", // ctrl+~, ctrl+2 gocui.KeyCtrlSpace: "<c-space>", // <c-~>, <c-2>
gocui.KeyCtrlSlash: "ctrl+/", // ctrl+_ gocui.KeyCtrlSlash: "<c-/>", // <c-_>
gocui.KeySpace: "space", gocui.KeySpace: "<space>",
gocui.KeyCtrlA: "ctrl+a", gocui.KeyCtrlA: "<c-a>",
gocui.KeyCtrlB: "ctrl+b", gocui.KeyCtrlB: "<c-b>",
gocui.KeyCtrlC: "ctrl+c", gocui.KeyCtrlC: "<c-c>",
gocui.KeyCtrlD: "ctrl+d", gocui.KeyCtrlD: "<c-d>",
gocui.KeyCtrlE: "ctrl+e", gocui.KeyCtrlE: "<c-e>",
gocui.KeyCtrlF: "ctrl+f", gocui.KeyCtrlF: "<c-f>",
gocui.KeyCtrlG: "ctrl+g", gocui.KeyCtrlG: "<c-g>",
gocui.KeyCtrlJ: "ctrl+j", gocui.KeyCtrlJ: "<c-j>",
gocui.KeyCtrlK: "ctrl+k", gocui.KeyCtrlK: "<c-k>",
gocui.KeyCtrlL: "ctrl+l", gocui.KeyCtrlL: "<c-l>",
gocui.KeyCtrlN: "ctrl+n", gocui.KeyCtrlN: "<c-n>",
gocui.KeyCtrlO: "ctrl+o", gocui.KeyCtrlO: "<c-o>",
gocui.KeyCtrlP: "ctrl+p", gocui.KeyCtrlP: "<c-p>",
gocui.KeyCtrlQ: "ctrl+q", gocui.KeyCtrlQ: "<c-q>",
gocui.KeyCtrlR: "ctrl+r", gocui.KeyCtrlR: "<c-r>",
gocui.KeyCtrlS: "ctrl+s", gocui.KeyCtrlS: "<c-s>",
gocui.KeyCtrlT: "ctrl+t", gocui.KeyCtrlT: "<c-t>",
gocui.KeyCtrlU: "ctrl+u", gocui.KeyCtrlU: "<c-u>",
gocui.KeyCtrlV: "ctrl+v", gocui.KeyCtrlV: "<c-v>",
gocui.KeyCtrlW: "ctrl+w", gocui.KeyCtrlW: "<c-w>",
gocui.KeyCtrlX: "ctrl+x", gocui.KeyCtrlX: "<c-x>",
gocui.KeyCtrlY: "ctrl+y", gocui.KeyCtrlY: "<c-y>",
gocui.KeyCtrlZ: "ctrl+z", gocui.KeyCtrlZ: "<c-z>",
gocui.KeyCtrl4: "ctrl+4", // ctrl+\ gocui.KeyCtrl4: "<c-4>", // <c-\>
gocui.KeyCtrl5: "ctrl+5", // ctrl+] gocui.KeyCtrl5: "<c-5>", // <c-]>
gocui.KeyCtrl6: "ctrl+6", gocui.KeyCtrl6: "<c-6>",
gocui.KeyCtrl8: "ctrl+8", gocui.KeyCtrl8: "<c-8>",
gocui.MouseWheelUp: "mouse wheel ", gocui.MouseWheelUp: "mouse wheel up",
gocui.MouseWheelDown: "mouse wheel ", gocui.MouseWheelDown: "mouse wheel down",
} }
var keyMap = map[string]types.Key{ var keyByLabel = lo.Invert(labelByKey)
"<c-a>": gocui.KeyCtrlA,
"<c-b>": gocui.KeyCtrlB,
"<c-c>": gocui.KeyCtrlC,
"<c-d>": gocui.KeyCtrlD,
"<c-e>": gocui.KeyCtrlE,
"<c-f>": gocui.KeyCtrlF,
"<c-g>": gocui.KeyCtrlG,
"<c-h>": gocui.KeyCtrlH,
"<c-i>": gocui.KeyCtrlI,
"<c-j>": gocui.KeyCtrlJ,
"<c-k>": gocui.KeyCtrlK,
"<c-l>": gocui.KeyCtrlL,
"<c-m>": gocui.KeyCtrlM,
"<c-n>": gocui.KeyCtrlN,
"<c-o>": gocui.KeyCtrlO,
"<c-p>": gocui.KeyCtrlP,
"<c-q>": gocui.KeyCtrlQ,
"<c-r>": gocui.KeyCtrlR,
"<c-s>": gocui.KeyCtrlS,
"<c-t>": gocui.KeyCtrlT,
"<c-u>": gocui.KeyCtrlU,
"<c-v>": gocui.KeyCtrlV,
"<c-w>": gocui.KeyCtrlW,
"<c-x>": gocui.KeyCtrlX,
"<c-y>": gocui.KeyCtrlY,
"<c-z>": gocui.KeyCtrlZ,
"<c-~>": gocui.KeyCtrlTilde,
"<c-2>": gocui.KeyCtrl2,
"<c-3>": gocui.KeyCtrl3,
"<c-4>": gocui.KeyCtrl4,
"<c-5>": gocui.KeyCtrl5,
"<c-6>": gocui.KeyCtrl6,
"<c-7>": gocui.KeyCtrl7,
"<c-8>": gocui.KeyCtrl8,
"<c-space>": gocui.KeyCtrlSpace,
"<c-\\>": gocui.KeyCtrlBackslash,
"<c-[>": gocui.KeyCtrlLsqBracket,
"<c-]>": gocui.KeyCtrlRsqBracket,
"<c-/>": gocui.KeyCtrlSlash,
"<c-_>": gocui.KeyCtrlUnderscore,
"<backspace>": gocui.KeyBackspace,
"<tab>": gocui.KeyTab,
"<backtab>": gocui.KeyBacktab,
"<enter>": gocui.KeyEnter,
"<a-enter>": gocui.KeyAltEnter,
"<esc>": gocui.KeyEsc,
"<space>": gocui.KeySpace,
"<f1>": gocui.KeyF1,
"<f2>": gocui.KeyF2,
"<f3>": gocui.KeyF3,
"<f4>": gocui.KeyF4,
"<f5>": gocui.KeyF5,
"<f6>": gocui.KeyF6,
"<f7>": gocui.KeyF7,
"<f8>": gocui.KeyF8,
"<f9>": gocui.KeyF9,
"<f10>": gocui.KeyF10,
"<f11>": gocui.KeyF11,
"<f12>": gocui.KeyF12,
"<insert>": gocui.KeyInsert,
"<delete>": gocui.KeyDelete,
"<home>": gocui.KeyHome,
"<end>": gocui.KeyEnd,
"<pgup>": gocui.KeyPgup,
"<pgdown>": gocui.KeyPgdn,
"<up>": gocui.KeyArrowUp,
"<down>": gocui.KeyArrowDown,
"<left>": gocui.KeyArrowLeft,
"<right>": gocui.KeyArrowRight,
}
func Label(name string) string { func Label(name string) string {
return LabelFromKey(GetKey(name)) return LabelFromKey(GetKey(name))
@ -157,7 +88,7 @@ func LabelFromKey(key types.Key) string {
case rune: case rune:
keyInt = int(key) keyInt = int(key)
case gocui.Key: case gocui.Key:
value, ok := keyMapReversed[key] value, ok := labelByKey[key]
if ok { if ok {
return value return value
} }
@ -170,8 +101,8 @@ func LabelFromKey(key types.Key) string {
func GetKey(key string) types.Key { func GetKey(key string) types.Key {
runeCount := utf8.RuneCountInString(key) runeCount := utf8.RuneCountInString(key)
if runeCount > 1 { if runeCount > 1 {
binding := keyMap[strings.ToLower(key)] binding, ok := keyByLabel[strings.ToLower(key)]
if binding == nil { if !ok {
log.Fatalf("Unrecognized key %s for keybinding. For permitted values see %s", strings.ToLower(key), constants.Links.Docs.CustomKeybindings) log.Fatalf("Unrecognized key %s for keybinding. For permitted values see %s", strings.ToLower(key), constants.Links.Docs.CustomKeybindings)
} else { } else {
return binding return binding