diff options
| author | Junegunn Choi <junegunn.c@gmail.com> | 2025-01-12 10:23:43 +0900 |
|---|---|---|
| committer | Junegunn Choi <junegunn.c@gmail.com> | 2025-01-12 10:23:43 +0900 |
| commit | 5460517bd2ecf5c3437cfe77821b3cf524bc69d5 (patch) | |
| tree | 848a6096a0fd1b8d41771dea150e824ff9f1adf3 /src | |
| parent | 9a6e557e5237a6f5476cd602fc6425d3f05700b3 (diff) | |
| download | fzf-5460517bd2ecf5c3437cfe77821b3cf524bc69d5.tar.gz | |
Treat a single-character delimiter as a plain string delimiter
even if it's a regular expression meta-character
Close #4170
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.go | 11 | ||||
| -rw-r--r-- | src/options_test.go | 8 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/options.go b/src/options.go index 404958c7..ac4a1aca 100644 --- a/src/options.go +++ b/src/options.go @@ -755,18 +755,23 @@ func delimiterRegexp(str string) Delimiter { // Special handling of \t str = strings.ReplaceAll(str, "\\t", "\t") - // 1. Pattern does not contain any special character + // 1. Pattern is a single character + if len([]rune(str)) == 1 { + return Delimiter{str: &str} + } + + // 2. Pattern does not contain any special character if regexp.QuoteMeta(str) == str { return Delimiter{str: &str} } rx, e := regexp.Compile(str) - // 2. Pattern is not a valid regular expression + // 3. Pattern is not a valid regular expression if e != nil { return Delimiter{str: &str} } - // 3. Pattern as regular expression. Slow. + // 4. Pattern as regular expression. Slow. return Delimiter{regex: rx} } diff --git a/src/options_test.go b/src/options_test.go index 5def73dc..40d2920b 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -9,9 +9,13 @@ import ( ) func TestDelimiterRegex(t *testing.T) { - // Valid regex + // Valid regex, but a single character -> string delim := delimiterRegexp(".") - if delim.regex == nil || delim.str != nil { + if delim.regex != nil || *delim.str != "." { + t.Error(delim) + } + delim = delimiterRegexp("|") + if delim.regex != nil || *delim.str != "|" { t.Error(delim) } // Broken regex -> string |
