From 9abf2c8c9ca625f30ff0775316f51ad798a922f3 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Wed, 12 Feb 2025 20:50:01 +0900 Subject: Allow suffix match on --nth with custom --delimiter When --nth is used with a custom --delimiter, the last delimiter was included in the search scope, forcing you to write the delimiter in a suffix-match query. This commit removes the last delimiter from the search scope. # No need to write 'bar,$' echo foo,bar,baz | fzf --delimiter , --nth 2 --filter 'bar$' This can be seen as a breaking change, but I'm gonna say it's a bug fix. Fix #3983 --- src/pattern.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/pattern.go') diff --git a/src/pattern.go b/src/pattern.go index 93640cb6..8e6966c3 100644 --- a/src/pattern.go +++ b/src/pattern.go @@ -432,8 +432,13 @@ func (p *Pattern) transformInput(item *Item) []Token { tokens := Tokenize(item.text.ToString(), p.delimiter) ret := Transform(tokens, p.nth) - // TODO: We could apply StripLastDelimiter to exclude the last delimiter from - // the search allowing suffix match with a string or a regex delimiter. + // Strip the last delimiter to allow suffix match + if len(ret) > 0 && !p.delimiter.IsAwk() { + chars := ret[len(ret)-1].text + stripped := StripLastDelimiter(chars.ToString(), p.delimiter) + newChars := util.ToChars(stringBytes(stripped)) + ret[len(ret)-1].text = &newChars + } item.transformed = &transformed{p.revision, ret} return ret } -- cgit v1.2.3