Skip to main content
Module

x/denops_std/function/mod.ts>matchfuzzy

📚 Standard module for denops.vim
Go to Latest
function matchfuzzy
import { matchfuzzy } from "https://deno.land/x/denops_std@v6.4.0/function/mod.ts";

If {list} is a list of strings, then returns a List with all 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 return only matches that contain the characters in {str} in the given sequence. limit Maximum number of matches in {list} to be returned. Zero means no limit.

If {list} is a list of dictionaries, then the optional {dict} 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. text_cb Funcref that will be called for every item in {list} to get the text for fuzzy matching. This should accept a dictionary item as the argument and return the text for that item to use for fuzzy matching.

{str} is treated as a literal string and regular expression 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.

When {limit} is given, matchfuzzy() will find up to this number of matches in {list} and return them in sorted order.

Refer to fuzzy-matching for more information about fuzzy matching strings.

Example:

:echo matchfuzzy(["clay", "crow"], "cay")

results in ["clay"].

:echo getbufinfo()->map({_, v -> v.name})->matchfuzzy("ndl")

results in a list of buffer names fuzzy matching "ndl".

:echo getbufinfo()->matchfuzzy("ndl", {'key' : 'name'})

results in a list of buffer information dicts with buffer names fuzzy matching "ndl".

:echo getbufinfo()->matchfuzzy("spl",
                             \ {'text_cb' : {v -> v.name}})

results in a list of buffer information dicts with buffer names fuzzy matching "spl".

: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".

: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'].

Parameters

denops: Denops
list: unknown
str: unknown
optional
dict: unknown

Returns

Promise<unknown[]>