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.