summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-12-04 20:34:41 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-12-04 20:34:41 +0900
commit6d647e13ff1d953e6f8284046a86f0babe78150b (patch)
tree828aa4d5c086beedb1d472187ef459510762d24c /src
parentd2af3ff98d427d797be809505661aeb84e65e4c7 (diff)
Add change-prompt action
Close #2270
Diffstat (limited to 'src')
-rw-r--r--src/options.go8
-rw-r--r--src/terminal.go4
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)