src/search/QuickOpen.js
function addQuickOpenPlugin(pluginDef) {
        var quickOpenProvider = new QuickOpenPlugin(
                pluginDef.name,
                pluginDef.languageIds,
                pluginDef.done,
                pluginDef.search,
                pluginDef.match,
                pluginDef.itemFocus,
                pluginDef.itemSelect,
                pluginDef.resultsFormatter,
                pluginDef.matcherOptions,
                pluginDef.label
            ),
            providerLanguageIds = pluginDef.languageIds.length ? pluginDef.languageIds : ["all"],
            providerPriority = pluginDef.priority || 0;

        _registerQuickOpenProvider(quickOpenProvider, providerLanguageIds, providerPriority);
    }
function addQuickOpenPlugin(pluginDef) {
        var quickOpenProvider = new QuickOpenPlugin(
                pluginDef.name,
                pluginDef.languageIds,
                pluginDef.done,
                pluginDef.search,
                pluginDef.match,
                pluginDef.itemFocus,
                pluginDef.itemSelect,
                pluginDef.resultsFormatter,
                pluginDef.matcherOptions,
                pluginDef.label
            ),
            providerLanguageIds = pluginDef.languageIds.length ? pluginDef.languageIds : ["all"],
            providerPriority = pluginDef.priority || 0;

        _registerQuickOpenProvider(quickOpenProvider, providerLanguageIds, providerPriority);
    }
function addQuickOpenPlugin ( pluginDef ) { var quickOpenProvider = new QuickOpenPlugin ( pluginDef . name , pluginDef . languageIds , pluginDef . done , pluginDef . search , pluginDef . match , pluginDef . itemFocus , pluginDef . itemSelect , pluginDef . resultsFormatter , pluginDef . matcherOptions , pluginDef . label ) , providerLanguageIds = pluginDef . languageIds . length ? pluginDef . languageIds : [ "all" ] , providerPriority = pluginDef . priority || 0 ; _registerQuickOpenProvider ( quickOpenProvider , providerLanguageIds , providerPriority ) ; }
Creates and registers a new QuickOpenPlugin

@param { name: string,
languageIds: !Array.<string>,
done: ?function(),
search: function(string, !StringMatch.StringMatcher):(!Array.<SearchResult|string>|$.Promise),
match: function(string):boolean,
itemFocus: ?function(?SearchResult|string, string, boolean),
itemSelect: function(?SearchResult|string, string),
resultsFormatter: ?function(SearchResult|string, string):string,
matcherOptions: ?Object,
label: ?string
} pluginDef

Parameter Documentation:

name - plug-in name, **must be unique**
languageIds - language Ids array. Example: ["javascript", "css", "html"]. To allow any language, pass []. Required.
done - called when quick open is complete. Plug-in should clear its internal state. Optional.
search - takes a query string and a StringMatcher (the use of which is optional but can speed up your searches) and returns
an array of strings or result objects that match the query; or a Promise that resolves to such an array. Required.
match - takes a query string and returns true if this plug-in wants to provide
results for this query. Required.
itemFocus - performs an action when a result has been highlighted (via arrow keys, or by becoming top of the list).
Passed the highlighted search result item (as returned by search()), the current query string, and a flag that is true
if the item was highlighted explicitly (arrow keys), not implicitly (at top of list after last search()). Optional.
itemSelect - performs an action when a result is chosen.
Passed the highlighted search result item (as returned by search()), and the current query string. Required.
resultsFormatter - takes a query string and an item string and returns
a <LI> item to insert into the displayed search results. Optional.
matcherOptions - options to pass along to the StringMatcher (see StringMatch.StringMatcher
for available options). Optional.
label - if provided, the label to show before the query field. Optional.

If itemFocus() makes changes to the current document or cursor/scroll position and then the user
cancels Quick Open (via Esc), those changes are automatically reverted.
Creates and registers a new QuickOpenPlugin