summaryrefslogtreecommitdiff
path: root/src/options.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-12-25 23:43:46 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-12-26 00:14:05 +0900
commit1707b8cdba42492a88b3fc43c15c20d219c5ce2b (patch)
tree268e6950fecc4bec86b38389101e52901134b3a5 /src/options.go
parent41d4d70b985f665c8ecc66b83aa10209c8dfbbfd (diff)
downloadfzf-1707b8cdba42492a88b3fc43c15c20d219c5ce2b.tar.gz
Add 'transform' action to conditionally perform a series of actions
'transform' action runs an external command that prints a series of actions to perform. # Disallow selecting an empty line echo -e "1. Hello\n2. Goodbye\n\n3. Exit" | fzf --reverse --header 'Select one' \ --bind 'enter:transform:[[ -n {} ]] && echo accept || echo "change-header:Invalid selection"' # Move cursor past the empty line echo -e "1. Hello\n2. Goodbye\n\n3. Exit" | fzf --reverse --header 'Select one' \ --bind 'enter:transform:[[ -n {} ]] && echo accept || echo "change-header:Invalid selection"' \ --bind 'focus:transform:[[ -n {} ]] && exit; [[ {fzf:action} =~ up$ ]] && echo up || echo down' Close #3368 Close #2980
Diffstat (limited to 'src/options.go')
-rw-r--r--src/options.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/options.go b/src/options.go
index ca8b2476..0822817a 100644
--- a/src/options.go
+++ b/src/options.go
@@ -979,7 +979,7 @@ const (
func init() {
executeRegexp = regexp.MustCompile(
- `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|transform)-(?:header|query|prompt|border-label|preview-label)|change-preview-window|change-preview|(?:re|un)bind|pos|put)`)
+ `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|transform)-(?:header|query|prompt|border-label|preview-label)|transform|change-preview-window|change-preview|(?:re|un)bind|pos|put)`)
splitRegexp = regexp.MustCompile("[,:]+")
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
}
@@ -1086,7 +1086,7 @@ func parseActionList(masked string, original string, prevActions []*action, putA
case "backward-delete-char":
appendAction(actBackwardDeleteChar)
case "backward-delete-char/eof":
- appendAction(actBackwardDeleteCharEOF)
+ appendAction(actBackwardDeleteCharEof)
case "backward-word":
appendAction(actBackwardWord)
case "clear-screen":
@@ -1094,7 +1094,7 @@ func parseActionList(masked string, original string, prevActions []*action, putA
case "delete-char":
appendAction(actDeleteChar)
case "delete-char/eof":
- appendAction(actDeleteCharEOF)
+ appendAction(actDeleteCharEof)
case "deselect":
appendAction(actDeselect)
case "end-of-line":
@@ -1213,7 +1213,7 @@ func parseActionList(masked string, original string, prevActions []*action, putA
appendAction(actDisableSearch)
case "put":
if putAllowed {
- appendAction(actRune)
+ appendAction(actChar)
} else {
exit("unable to put non-printable character")
}
@@ -1333,6 +1333,8 @@ func isExecuteAction(str string) actionType {
return actExecuteMulti
case "put":
return actPut
+ case "transform":
+ return actTransform
case "transform-border-label":
return actTransformBorderLabel
case "transform-preview-label":