summaryrefslogtreecommitdiff
path: root/src/terminal_test.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2025-03-30 19:28:21 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2025-03-30 19:49:05 +0900
commit31fd207ba232cf419f55cbfede8a90490bd25c5d (patch)
treea6b21d989c2444a89beef0b9bcc47c66c514f509 /src/terminal_test.go
parentba6d1b8772ce5e75ff999dcca21c0fadb689d7bf (diff)
downloadfzf-31fd207ba232cf419f55cbfede8a90490bd25c5d.tar.gz
Add 'r' flag (raw) for unquoted output
By default, placeholder expressions are automatically quoted to ensure they are safely passed as arguments to external programs. The r flag ({r}, {r1}, etc.) disables this behavior, outputting the evaluated value without quotes. For example, echo 'foo bar' | fzf --preview 'echo {} {r}' The preview command becomes: echo 'foo bar' foo bar Since `{r}` expands to unquoted "foo bar", 'foo' and 'bar' are passed as separate arguments. **Use with caution** Unquoted output can lead to broken commands. echo "let's go" | fzf --preview 'echo {r}' Close #4330
Diffstat (limited to 'src/terminal_test.go')
-rw-r--r--src/terminal_test.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/terminal_test.go b/src/terminal_test.go
index 1d50767b..380e40d1 100644
--- a/src/terminal_test.go
+++ b/src/terminal_test.go
@@ -75,6 +75,14 @@ func TestReplacePlaceholder(t *testing.T) {
result = replacePlaceholderTest("echo {}", true, Delimiter{}, printsep, false, "query", items1)
checkFormat("echo {{.O}} foo{{.I}}bar baz{{.O}}")
+ // {r}, strip ansi
+ result = replacePlaceholderTest("echo {r}", true, Delimiter{}, printsep, false, "query", items1)
+ checkFormat("echo foo'bar baz")
+
+ // {r..}, strip ansi
+ result = replacePlaceholderTest("echo {r..}", true, Delimiter{}, printsep, false, "query", items1)
+ checkFormat("echo foo'bar baz")
+
// {}, with multiple items
result = replacePlaceholderTest("echo {}", true, Delimiter{}, printsep, false, "query", items2)
checkFormat("echo {{.O}}foo{{.I}}bar baz{{.O}}")