// ApplyKeybinding applies all of the custom key bindings on top of // the default key bindings func (km *Keymap) ApplyKeybinding() error { k := km.seq k.Clear() // Copy the map kb := map[string]Action{} for s, a := range defaultKeyBinding { kb[s] = a } // munge the map using config for s, as := range km.Config { if as == "-" { delete(kb, s) continue } v, err := km.resolveActionName(as, 0) if err != nil { return errors.Wrapf(err, "failed to resolve action name %s", as) } kb[s] = v } // now compile using kb // there's no need to do this, but we sort keys here just to make // debugging easier keys := make([]string, 0, len(kb)) for s := range kb { keys = append(keys, s) } sort.Strings(keys) for _, s := range keys { a := kb[s] list, err := keyseq.ToKeyList(s) if err != nil { return errors.Wrapf(err, "urnknown key %s: %s", s, err) } k.Add(list, a) } return errors.Wrap(k.Compile(), "failed to compile key binding patterns") }
// ApplyKeybinding applies all of the custom key bindings on top of // the default key bindings func (km Keymap) ApplyKeybinding() { k := km.seq k.Clear() // Copy the map kb := map[string]Action{} for s, a := range defaultKeyBinding { kb[s] = a } // munge the map using config for s, as := range km.Config { if as == "-" { delete(kb, s) continue } v, err := km.resolveActionName(as, 0) if err != nil { fmt.Fprintln(os.Stderr, err) continue } kb[s] = v } // now compile using kb for s, a := range kb { list, err := keyseq.ToKeyList(s) if err != nil { fmt.Fprintf(os.Stderr, "Unknown key %s: %s", s, err) continue } k.Add(list, a) } k.Compile() }