199 lines
6.8 KiB
Go
199 lines
6.8 KiB
Go
package editor
|
|
|
|
import (
|
|
"b612.me/apps/b612/bed/event"
|
|
"b612.me/apps/b612/bed/key"
|
|
"b612.me/apps/b612/bed/mode"
|
|
)
|
|
|
|
func defaultKeyManagers() map[mode.Mode]*key.Manager {
|
|
kms := make(map[mode.Mode]*key.Manager)
|
|
km := defaultNormalAndVisual()
|
|
km.Register(event.Quit, "c-w", "q")
|
|
km.Register(event.Quit, "c-w", "c-q")
|
|
km.Register(event.Quit, "c-w", "c")
|
|
km.RegisterBang(event.Quit, "Z", "Q")
|
|
km.Register(event.WriteQuit, "Z", "Z")
|
|
km.Register(event.Suspend, "c-z")
|
|
|
|
km.Register(event.JumpTo, "\x1d")
|
|
km.Register(event.JumpBack, "c-t")
|
|
km.Register(event.DeleteByte, "x")
|
|
km.Register(event.DeleteByte, "delete")
|
|
km.Register(event.DeletePrevByte, "X")
|
|
km.Register(event.Increment, "c-a")
|
|
km.Register(event.Increment, "+")
|
|
km.Register(event.Decrement, "c-x")
|
|
km.Register(event.Decrement, "-")
|
|
km.Register(event.ShiftLeft, "<")
|
|
km.Register(event.ShiftRight, ">")
|
|
km.Register(event.ShowBinary, "g", "b")
|
|
km.Register(event.ShowDecimal, "g", "d")
|
|
|
|
km.Register(event.Paste, "p")
|
|
km.Register(event.PastePrev, "P")
|
|
|
|
km.Register(event.StartInsert, "i")
|
|
km.Register(event.StartInsertHead, "I")
|
|
km.Register(event.StartAppend, "a")
|
|
km.Register(event.StartAppendEnd, "A")
|
|
km.Register(event.StartReplace, "R")
|
|
|
|
km.Register(event.Undo, "u")
|
|
km.Register(event.Redo, "c-r")
|
|
|
|
km.Register(event.StartVisual, "v")
|
|
|
|
km.Register(event.New, "c-w", "n")
|
|
km.Register(event.New, "c-w", "c-n")
|
|
km.Register(event.Only, "c-w", "o")
|
|
km.Register(event.Only, "c-w", "c-o")
|
|
km.Register(event.Alternative, "\x1e")
|
|
km.Register(event.FocusWindowDown, "c-w", "down")
|
|
km.Register(event.FocusWindowDown, "c-w", "c-j")
|
|
km.Register(event.FocusWindowDown, "c-w", "j")
|
|
km.Register(event.FocusWindowUp, "c-w", "up")
|
|
km.Register(event.FocusWindowUp, "c-w", "c-k")
|
|
km.Register(event.FocusWindowUp, "c-w", "k")
|
|
km.Register(event.FocusWindowLeft, "c-w", "left")
|
|
km.Register(event.FocusWindowLeft, "c-w", "c-h")
|
|
km.Register(event.FocusWindowLeft, "c-w", "backspace")
|
|
km.Register(event.FocusWindowLeft, "c-w", "h")
|
|
km.Register(event.FocusWindowRight, "c-w", "right")
|
|
km.Register(event.FocusWindowRight, "c-w", "c-l")
|
|
km.Register(event.FocusWindowRight, "c-w", "l")
|
|
km.Register(event.FocusWindowTopLeft, "c-w", "t")
|
|
km.Register(event.FocusWindowTopLeft, "c-w", "c-t")
|
|
km.Register(event.FocusWindowBottomRight, "c-w", "b")
|
|
km.Register(event.FocusWindowBottomRight, "c-w", "c-b")
|
|
km.Register(event.FocusWindowPrevious, "c-w", "p")
|
|
km.Register(event.FocusWindowPrevious, "c-w", "c-p")
|
|
km.Register(event.MoveWindowTop, "c-w", "K")
|
|
km.Register(event.MoveWindowBottom, "c-w", "J")
|
|
km.Register(event.MoveWindowLeft, "c-w", "H")
|
|
km.Register(event.MoveWindowRight, "c-w", "L")
|
|
kms[mode.Normal] = km
|
|
|
|
km = key.NewManager(false)
|
|
km.Register(event.ExitInsert, "escape")
|
|
km.Register(event.ExitInsert, "c-c")
|
|
km.Register(event.CursorUp, "up")
|
|
km.Register(event.CursorDown, "down")
|
|
km.Register(event.CursorLeft, "left")
|
|
km.Register(event.CursorRight, "right")
|
|
km.Register(event.CursorUp, "c-p")
|
|
km.Register(event.CursorDown, "c-n")
|
|
km.Register(event.CursorPrev, "c-b")
|
|
km.Register(event.CursorNext, "c-f")
|
|
km.Register(event.PageUp, "pgup")
|
|
km.Register(event.PageDown, "pgdn")
|
|
km.Register(event.PageTop, "home")
|
|
km.Register(event.PageEnd, "end")
|
|
km.Register(event.Backspace, "backspace")
|
|
km.Register(event.Backspace, "backspace2")
|
|
km.Register(event.Delete, "delete")
|
|
km.Register(event.SwitchFocus, "tab")
|
|
km.Register(event.SwitchFocus, "backtab")
|
|
kms[mode.Insert] = km
|
|
kms[mode.Replace] = km
|
|
|
|
km = defaultNormalAndVisual()
|
|
km.Register(event.ExitVisual, "escape")
|
|
km.Register(event.ExitVisual, "c-c")
|
|
km.Register(event.ExitVisual, "v")
|
|
km.Register(event.SwitchVisualEnd, "o")
|
|
km.Register(event.SwitchVisualEnd, "O")
|
|
|
|
km.Register(event.Copy, "y")
|
|
km.Register(event.Cut, "x")
|
|
km.Register(event.Cut, "d")
|
|
km.Register(event.Cut, "delete")
|
|
kms[mode.Visual] = km
|
|
|
|
km = key.NewManager(false)
|
|
km.Register(event.CursorUp, "up")
|
|
km.Register(event.CursorDown, "down")
|
|
km.Register(event.CursorLeft, "left")
|
|
km.Register(event.CursorRight, "right")
|
|
km.Register(event.CursorUp, "c-p")
|
|
km.Register(event.CursorDown, "c-n")
|
|
km.Register(event.CursorLeft, "c-b")
|
|
km.Register(event.CursorRight, "c-f")
|
|
km.Register(event.CursorHead, "home")
|
|
km.Register(event.CursorHead, "c-a")
|
|
km.Register(event.CursorEnd, "end")
|
|
km.Register(event.CursorEnd, "c-e")
|
|
km.Register(event.BackspaceCmdline, "c-h")
|
|
km.Register(event.BackspaceCmdline, "backspace")
|
|
km.Register(event.BackspaceCmdline, "backspace2")
|
|
km.Register(event.DeleteCmdline, "delete")
|
|
km.Register(event.DeleteWordCmdline, "c-w")
|
|
km.Register(event.ClearToHeadCmdline, "c-u")
|
|
km.Register(event.ClearCmdline, "c-k")
|
|
km.Register(event.ExitCmdline, "escape")
|
|
km.Register(event.ExitCmdline, "c-c")
|
|
km.Register(event.CompleteForwardCmdline, "tab")
|
|
km.Register(event.CompleteBackCmdline, "backtab")
|
|
km.Register(event.ExecuteCmdline, "enter")
|
|
km.Register(event.ExecuteCmdline, "c-j")
|
|
km.Register(event.ExecuteCmdline, "c-m")
|
|
kms[mode.Cmdline] = km
|
|
kms[mode.Search] = km
|
|
return kms
|
|
}
|
|
|
|
func defaultNormalAndVisual() *key.Manager {
|
|
km := key.NewManager(true)
|
|
km.Register(event.CursorUp, "up")
|
|
km.Register(event.CursorDown, "down")
|
|
km.Register(event.CursorLeft, "left")
|
|
km.Register(event.CursorRight, "right")
|
|
km.Register(event.PageUp, "pgup")
|
|
km.Register(event.PageDown, "pgdn")
|
|
km.Register(event.PageTop, "home")
|
|
km.Register(event.PageEnd, "end")
|
|
km.Register(event.CursorUp, "k")
|
|
km.Register(event.CursorDown, "j")
|
|
km.Register(event.CursorLeft, "h")
|
|
km.Register(event.CursorRight, "l")
|
|
km.Register(event.CursorPrev, "b")
|
|
km.Register(event.CursorPrev, "backspace")
|
|
km.Register(event.CursorPrev, "backspace2")
|
|
km.Register(event.CursorNext, "w")
|
|
km.Register(event.CursorNext, " ")
|
|
km.Register(event.CursorHead, "0")
|
|
km.Register(event.CursorHead, "^")
|
|
km.Register(event.CursorEnd, "$")
|
|
km.Register(event.ScrollUp, "c-y")
|
|
km.Register(event.ScrollDown, "c-e")
|
|
km.Register(event.ScrollTop, "z", "t")
|
|
km.Register(event.ScrollTopHead, "z", "enter")
|
|
km.Register(event.ScrollMiddle, "z", "z")
|
|
km.Register(event.ScrollMiddleHead, "z", ".")
|
|
km.Register(event.ScrollBottom, "z", "b")
|
|
km.Register(event.ScrollBottomHead, "z", "-")
|
|
km.Register(event.WindowTop, "H")
|
|
km.Register(event.WindowMiddle, "M")
|
|
km.Register(event.WindowBottom, "L")
|
|
|
|
km.Register(event.PageUp, "c-b")
|
|
km.Register(event.PageDown, "c-f")
|
|
km.Register(event.PageUpHalf, "c-u")
|
|
km.Register(event.PageDownHalf, "c-d")
|
|
km.Register(event.PageTop, "g", "g")
|
|
km.Register(event.PageEnd, "G")
|
|
|
|
km.Register(event.SwitchFocus, "tab")
|
|
km.Register(event.SwitchFocus, "backtab")
|
|
|
|
km.Register(event.StartCmdlineSearchForward, "/")
|
|
km.Register(event.StartCmdlineSearchBackward, "?")
|
|
km.Register(event.NextSearch, "n")
|
|
km.Register(event.PreviousSearch, "N")
|
|
km.Register(event.AbortSearch, "c-c")
|
|
|
|
km.Register(event.StartCmdlineCommand, ":")
|
|
km.Register(event.StartReplaceByte, "r")
|
|
return km
|
|
}
|