summaryrefslogtreecommitdiffstats
path: root/src/options.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/options.go')
-rw-r--r--src/options.go18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/options.go b/src/options.go
index dc40fdc7..7070bdf4 100644
--- a/src/options.go
+++ b/src/options.go
@@ -748,7 +748,7 @@ func init() {
// Backreferences are not supported.
// "~!@#$%^&*;/|".each_char.map { |c| Regexp.escape(c) }.map { |c| "#{c}[^#{c}]*#{c}" }.join('|')
executeRegexp = regexp.MustCompile(
- `(?si)[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt):.+|[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt)(\([^)]*\)|\[[^\]]*\]|~[^~]*~|![^!]*!|@[^@]*@|\#[^\#]*\#|\$[^\$]*\$|%[^%]*%|\^[^\^]*\^|&[^&]*&|\*[^\*]*\*|;[^;]*;|/[^/]*/|\|[^\|]*\|)`)
+ `(?si)[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt|unbind):.+|[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt|unbind)(\([^)]*\)|\[[^\]]*\]|~[^~]*~|![^!]*!|@[^@]*@|\#[^\#]*\#|\$[^\$]*\$|%[^%]*%|\^[^\^]*\^|&[^&]*&|\*[^\*]*\*|;[^;]*;|/[^/]*/|\|[^\|]*\|)`)
}
func parseKeymap(keymap map[tui.Event][]action, str string) {
@@ -762,6 +762,8 @@ func parseKeymap(keymap map[tui.Event][]action, str string) {
prefix = symbol + "reload"
} else if strings.HasPrefix(src[1:], "preview") {
prefix = symbol + "preview"
+ } else if strings.HasPrefix(src[1:], "unbind") {
+ prefix = symbol + "unbind"
} else if strings.HasPrefix(src[1:], "change-prompt") {
prefix = symbol + "change-prompt"
} else if src[len(prefix)] == '-' {
@@ -957,6 +959,8 @@ func parseKeymap(keymap map[tui.Event][]action, str string) {
offset = len("preview")
case actChangePrompt:
offset = len("change-prompt")
+ case actUnbind:
+ offset = len("unbind")
case actExecuteSilent:
offset = len("execute-silent")
case actExecuteMulti:
@@ -964,15 +968,21 @@ func parseKeymap(keymap map[tui.Event][]action, str string) {
default:
offset = len("execute")
}
+ var actionArg string
if spec[offset] == ':' {
if specIndex == len(specs)-1 {
- actions = append(actions, action{t: t, a: spec[offset+1:]})
+ actionArg = spec[offset+1:]
+ actions = append(actions, action{t: t, a: actionArg})
} else {
prevSpec = spec + "+"
continue
}
} else {
- actions = append(actions, action{t: t, a: spec[offset+1 : len(spec)-1]})
+ actionArg = spec[offset+1 : len(spec)-1]
+ actions = append(actions, action{t: t, a: actionArg})
+ }
+ if t == actUnbind {
+ parseKeyChords(actionArg, "unbind target required")
}
}
}
@@ -994,6 +1004,8 @@ func isExecuteAction(str string) actionType {
switch prefix {
case "reload":
return actReload
+ case "unbind":
+ return actUnbind
case "preview":
return actPreview
case "change-prompt":