diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2020-12-04 20:34:41 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2020-12-04 20:34:41 +0900 |
commit | 6d647e13ff1d953e6f8284046a86f0babe78150b (patch) | |
tree | 828aa4d5c086beedb1d472187ef459510762d24c /src | |
parent | d2af3ff98d427d797be809505661aeb84e65e4c7 (diff) |
Add change-prompt action
Close #2270
Diffstat (limited to 'src')
-rw-r--r-- | src/options.go | 8 | ||||
-rw-r--r-- | src/terminal.go | 4 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/options.go b/src/options.go index 0a6dcf99..b3fb78cf 100644 --- a/src/options.go +++ b/src/options.go @@ -735,7 +735,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):.+|[:+](execute(?:-multi|-silent)?|reload|preview)(\([^)]*\)|\[[^\]]*\]|~[^~]*~|![^!]*!|@[^@]*@|\#[^\#]*\#|\$[^\$]*\$|%[^%]*%|\^[^\^]*\^|&[^&]*&|\*[^\*]*\*|;[^;]*;|/[^/]*/|\|[^\|]*\|)`) + `(?si)[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt):.+|[:+](execute(?:-multi|-silent)?|reload|preview|change-prompt)(\([^)]*\)|\[[^\]]*\]|~[^~]*~|![^!]*!|@[^@]*@|\#[^\#]*\#|\$[^\$]*\$|%[^%]*%|\^[^\^]*\^|&[^&]*&|\*[^\*]*\*|;[^;]*;|/[^/]*/|\|[^\|]*\|)`) } func parseKeymap(keymap map[int][]action, str string) { @@ -749,6 +749,8 @@ func parseKeymap(keymap map[int][]action, str string) { prefix = symbol + "reload" } else if strings.HasPrefix(src[1:], "preview") { prefix = symbol + "preview" + } else if strings.HasPrefix(src[1:], "change-prompt") { + prefix = symbol + "change-prompt" } else if src[len(prefix)] == '-' { c := src[len(prefix)+1] if c == 's' || c == 'S' { @@ -922,6 +924,8 @@ func parseKeymap(keymap map[int][]action, str string) { offset = len("reload") case actPreview: offset = len("preview") + case actChangePrompt: + offset = len("change-prompt") case actExecuteSilent: offset = len("execute-silent") case actExecuteMulti: @@ -961,6 +965,8 @@ func isExecuteAction(str string) actionType { return actReload case "preview": return actPreview + case "change-prompt": + return actChangePrompt case "execute": return actExecute case "execute-silent": diff --git a/src/terminal.go b/src/terminal.go index 14a90d51..08535484 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -214,6 +214,7 @@ const ( actBackwardDeleteCharEOF actBackwardWord actCancel + actChangePrompt actClearScreen actClearQuery actClearSelection @@ -2223,6 +2224,9 @@ func (t *Terminal) Loop() { } case actPrintQuery: req(reqPrintQuery) + case actChangePrompt: + t.prompt, t.promptLen = t.parsePrompt(a.a) + req(reqPrompt) case actPreview: togglePreview(true) refreshPreview(a.a) |