summaryrefslogtreecommitdiff
path: root/src/options.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-06-16 00:39:11 +0900
committerGitHub <noreply@github.com>2025-06-16 00:39:11 +0900
commit0c00b203e61bffbadbc499cbf68af6f89a5a3e29 (patch)
treeeffd2636b35640cede4f2e8e362f18ee91836a5b /src/options.go
parent3b68dcdd81394f1ac9f743e1f74ff754f95eef9e (diff)
downloadfzf-0c00b203e61bffbadbc499cbf68af6f89a5a3e29.tar.gz
Implement asynchronous transform actions (#4419)
Close #4418 Example: fzf --bind 'focus:bg-transform-header(sleep 2; date; echo {})'
Diffstat (limited to 'src/options.go')
-rw-r--r--src/options.go40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/options.go b/src/options.go
index 2fd6f821..a5abe571 100644
--- a/src/options.go
+++ b/src/options.go
@@ -1435,7 +1435,7 @@ const (
func init() {
executeRegexp = regexp.MustCompile(
- `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|transform)-(?:query|prompt|(?:border|list|preview|input|header|footer)-label|header|footer|search|nth|pointer|ghost)|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search)`)
+ `(?si)[:+](become|execute(?:-multi|-silent)?|reload(?:-sync)?|preview|(?:change|bg-transform|transform)-(?:query|prompt|(?:border|list|preview|input|header|footer)-label|header|footer|search|nth|pointer|ghost)|bg-transform|transform|change-(?:preview-window|preview|multi)|(?:re|un|toggle-)bind|pos|put|print|search)`)
splitRegexp = regexp.MustCompile("[,:]+")
actionNameRegexp = regexp.MustCompile("(?i)^[a-z-]+")
}
@@ -1892,6 +1892,36 @@ func isExecuteAction(str string) actionType {
return actTransformQuery
case "transform-search":
return actTransformSearch
+ case "bg-transform":
+ return actBgTransform
+ case "bg-transform-list-label":
+ return actBgTransformListLabel
+ case "bg-transform-border-label":
+ return actBgTransformBorderLabel
+ case "bg-transform-preview-label":
+ return actBgTransformPreviewLabel
+ case "bg-transform-input-label":
+ return actBgTransformInputLabel
+ case "bg-transform-header-label":
+ return actBgTransformHeaderLabel
+ case "bg-transform-footer-label":
+ return actBgTransformFooterLabel
+ case "bg-transform-footer":
+ return actBgTransformFooter
+ case "bg-transform-header":
+ return actBgTransformHeader
+ case "bg-transform-ghost":
+ return actBgTransformGhost
+ case "bg-transform-nth":
+ return actBgTransformNth
+ case "bg-transform-pointer":
+ return actBgTransformPointer
+ case "bg-transform-prompt":
+ return actBgTransformPrompt
+ case "bg-transform-query":
+ return actBgTransformQuery
+ case "bg-transform-search":
+ return actBgTransformSearch
case "search":
return actSearch
}
@@ -2857,7 +2887,13 @@ func parseOptions(index *int, opts *Options, allArgs []string) error {
return err
}
if opts.ListBorderShape == tui.BorderLine {
- return errors.New("list border cannot be 'line'")
+ if hasArg {
+ // '--list-border line' is not allowed
+ return errors.New("list border cannot be 'line'")
+ }
+ // This is when '--style full:line' is previously specified and
+ // '--list-border' is specified without an argument.
+ opts.ListBorderShape = tui.BorderRounded
}
case "--no-list-border":
opts.ListBorderShape = tui.BorderNone