mirror of
https://github.com/zyedidia/micro.git
synced 2026-03-30 14:47:16 +09:00
Support multiactions
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user