Fix escaping of meta characters after ' or ! prefix

https://github.com/junegunn/fzf/issues/444#issuecomment-321432803
This commit is contained in:
Junegunn Choi 2017-08-10 12:40:53 +09:00
parent 6d53089cc1
commit 6b18b144cf
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
2 changed files with 13 additions and 5 deletions

View File

@ -182,7 +182,9 @@ func parseTerms(fuzzy bool, caseMode Case, normalize bool, str string) []termSet
}
}
if strings.HasPrefix(text, "'") {
if _escapedPrefixRegex.MatchString(text) {
text = text[1:]
} else if strings.HasPrefix(text, "'") {
// Flip exactness
if fuzzy && !inv {
typ = termExact
@ -200,10 +202,6 @@ func parseTerms(fuzzy bool, caseMode Case, normalize bool, str string) []termSet
text = text[1:]
}
if _escapedPrefixRegex.MatchString(text) {
text = text[1:]
}
if len(text) > 0 {
if switchSet {
sets = append(sets, set)

View File

@ -1400,6 +1400,16 @@ class TestGoFZF < TestBase
assert_equal [], `#{FZF} -f"'br" < #{tempname}`.lines.map(&:chomp)
assert_equal ["foo'bar"], `#{FZF} -f"\\'br" < #{tempname}`.lines.map(&:chomp)
end
def test_escaped_meta_characters_only_on_relevant_positions
input = <<~EOF
\\^
^
EOF
writelines tempname, input.lines.map(&:chomp)
assert_equal %w[^ \\^], `#{FZF} -f"\\^" < #{tempname}`.lines.map(&:chomp)
assert_equal %w[\\^], `#{FZF} -f"'\\^" < #{tempname}`.lines.map(&:chomp)
end
end
module TestShell