From 280a011f02cf10033f164fe039c07fbf9e25e606 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sat, 7 Mar 2026 13:39:55 +0900 Subject: [PATCH] With a non-default --delimiter, --{accept,with}-nth should not remove trailing whitespaces --- src/tokenizer.go | 8 +++++--- test/test_core.rb | 8 ++++---- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/tokenizer.go b/src/tokenizer.go index e1502672..9ece5cc5 100644 --- a/src/tokenizer.go +++ b/src/tokenizer.go @@ -218,11 +218,12 @@ func Tokenize(text string, delimiter Delimiter) []Token { return withPrefixLengths(tokens, 0) } -// StripLastDelimiter removes the trailing delimiter and whitespaces +// StripLastDelimiter removes the trailing delimiter func StripLastDelimiter(str string, delimiter Delimiter) string { if delimiter.str != nil { - str = strings.TrimSuffix(str, *delimiter.str) - } else if delimiter.regex != nil { + return strings.TrimSuffix(str, *delimiter.str) + } + if delimiter.regex != nil { locs := delimiter.regex.FindAllStringIndex(str, -1) if len(locs) > 0 { lastLoc := locs[len(locs)-1] @@ -230,6 +231,7 @@ func StripLastDelimiter(str string, delimiter Delimiter) string { str = str[:lastLoc[0]] } } + return str } return strings.TrimRightFunc(str, unicode.IsSpace) } diff --git a/test/test_core.rb b/test/test_core.rb index 3bcad037..466137d2 100644 --- a/test/test_core.rb +++ b/test/test_core.rb @@ -2095,13 +2095,13 @@ class TestCore < TestInteractive tmux.send_keys %(echo "foo ,bar,baz" | #{FZF} -d, --accept-nth 2,2,1,3,1 --sync --bind start:accept > #{tempname}), :Enter wait do assert_path_exists tempname - # Last delimiter and the whitespaces are removed - assert_equal ['bar,bar,foo ,bazfoo'], File.readlines(tempname, chomp: true) + # Last delimiter is removed + assert_equal ['bar,bar,foo ,bazfoo '], File.readlines(tempname, chomp: true) end end def test_accept_nth_regex_delimiter - tmux.send_keys %(echo "foo :,:bar,baz" | #{FZF} --delimiter='[:,]+' --accept-nth 2,2,1,3,1 --sync --bind start:accept > #{tempname}), :Enter + tmux.send_keys %(echo "foo :,:bar,baz" | #{FZF} --delimiter=' *[:,]+ *' --accept-nth 2,2,1,3,1 --sync --bind start:accept > #{tempname}), :Enter wait do assert_path_exists tempname # Last delimiter and the whitespaces are removed @@ -2119,7 +2119,7 @@ class TestCore < TestInteractive end def test_accept_nth_template - tmux.send_keys %(echo "foo ,bar,baz" | #{FZF} -d, --accept-nth '[{n}] 1st: {1}, 3rd: {3}, 2nd: {2}' --sync --bind start:accept > #{tempname}), :Enter + tmux.send_keys %(echo "foo ,bar,baz" | #{FZF} -d " *, *" --accept-nth '[{n}] 1st: {1}, 3rd: {3}, 2nd: {2}' --sync --bind start:accept > #{tempname}), :Enter wait do assert_path_exists tempname # Last delimiter and the whitespaces are removed