Support multiactions

This commit is contained in:
Zachary Yedidia
2019-08-17 11:49:42 -07:00
parent 5b18edf865
commit d2f8adb8ff

View File

@@ -47,23 +47,34 @@ func LuaAction(fn string) func(*BufPane) bool {
// BufMapKey maps a key event to an action // BufMapKey maps a key event to an action
func BufMapKey(k Event, action string) { func BufMapKey(k Event, action string) {
if strings.HasPrefix(action, "command:") { actions := strings.SplitN(action, ",", -1)
action = strings.SplitN(action, ":", 2)[1] BufKeyStrings[k] = action
BufKeyStrings[k] = action actionfns := make([]func(*BufPane) bool, len(actions))
BufKeyBindings[k] = CommandAction(action) for i, a := range actions {
} else if strings.HasPrefix(action, "command-edit:") { a = strings.TrimSpace(a)
action = strings.SplitN(action, ":", 2)[1] var afn func(*BufPane) bool
BufKeyStrings[k] = action if strings.HasPrefix(action, "command:") {
BufKeyBindings[k] = CommandEditAction(action) a = strings.SplitN(a, ":", 2)[1]
} else if strings.HasPrefix(action, "lua:") { afn = CommandAction(a)
action = strings.SplitN(action, ":", 2)[1] } else if strings.HasPrefix(a, "command-edit:") {
BufKeyStrings[k] = action a = strings.SplitN(a, ":", 2)[1]
BufKeyBindings[k] = LuaAction(action) afn = CommandEditAction(a)
} else if f, ok := BufKeyActions[action]; ok { } else if strings.HasPrefix(a, "lua:") {
BufKeyStrings[k] = action a = strings.SplitN(a, ":", 2)[1]
BufKeyBindings[k] = f afn = LuaAction(a)
} else { } else if f, ok := BufKeyActions[a]; ok {
screen.TermMessage("Error:", action, "does not exist") afn = f
} else {
screen.TermMessage("Error:", action, "does not exist")
}
actionfns[i] = afn
}
BufKeyBindings[k] = func(h *BufPane) bool {
b := false
for _, a := range actionfns {
b = a(h) || b
}
return b
} }
} }