summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2020-10-23 16:50:30 +0200
committerBram Moolenaar <Bram@vim.org>2020-10-23 16:50:30 +0200
commit8ded5b647aa4b3338da721b343e0bce0f86655f6 (patch)
treeb45ef3d0d5e9122ed6132b3a1ffcfee22caed81e /runtime
parent9c24cd11e2048e16e25271a7a7dbef4593890a18 (diff)
patch 8.2.1893: fuzzy matching does not support multiple wordsv8.2.1893
Problem: Fuzzy matching does not support multiple words. Solution: Add support for matching white space separated words. (Yegappan Lakshmanan, closes #7163)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/doc/eval.txt19
1 files changed, 17 insertions, 2 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 5a4376d1de..d58b02b467 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -7367,8 +7367,15 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
the strings in {list} that fuzzy match {str}. The strings in
the returned list are sorted based on the matching score.
+ The optional {dict} argument always supports the following
+ items:
+ matchseq When this item is present and {str} contains
+ multiple words separated by white space, then
+ returns only matches that contain the words in
+ the given sequence.
+
If {list} is a list of dictionaries, then the optional {dict}
- argument supports the following items:
+ argument supports the following additional items:
key key of the item which is fuzzy matched against
{str}. The value of this item should be a
string.
@@ -7382,6 +7389,9 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
matching is NOT supported. The maximum supported {str} length
is 256.
+ When {str} has multiple words each separated by white space,
+ then the list of strings that have all the words is returned.
+
If there are no matching strings or there is an error, then an
empty list is returned. If length of {str} is greater than
256, then returns an empty list.
@@ -7401,7 +7411,12 @@ matchfuzzy({list}, {str} [, {dict}]) *matchfuzzy()*
:echo v:oldfiles->matchfuzzy("test")
< results in a list of file names fuzzy matching "test". >
:let l = readfile("buffer.c")->matchfuzzy("str")
-< results in a list of lines in "buffer.c" fuzzy matching "str".
+< results in a list of lines in "buffer.c" fuzzy matching "str". >
+ :echo ['one two', 'two one']->matchfuzzy('two one')
+< results in ['two one', 'one two']. >
+ :echo ['one two', 'two one']->matchfuzzy('two one',
+ \ {'matchseq': 1})
+< results in ['two one'].
matchfuzzypos({list}, {str} [, {dict}]) *matchfuzzypos()*
Same as |matchfuzzy()|, but returns the list of matched