const promises = LinkProviderRegistry.ordered(model).reverse().map(support => { return asWinJsPromise(token => support.provideLinks(model, token)).then(result => { if (Array.isArray(result)) { links = union(links, result); } }, onUnexpectedError); });
return TPromise.join(supports.map(support => asWinJsPromise(token => support.provideCompletionItems(model, position, token)).then(values => { if (!isFalsyOrEmpty(values)) { for (let suggestResult of values) { hasResult = fillInSuggestResult(result, suggestResult, support, suggestFilter) || hasResult; } } }, onUnexpectedError)));
const promises = ColorProviderRegistry.ordered(model).reverse().map(provider => { return asWinJsPromise(token => provider.provideColorRanges(model, token)).then(result => { if (Array.isArray(result)) { colorInfo = colorInfo.concat(result); } }, onUnexpectedExternalError); });
const promises = provider.map(provider => asWinJsPromise(token => provider.provideCodeLenses(model, token)).then(result => { if (Array.isArray(result)) { for (let symbol of result) { symbols.push({ symbol, provider }); } } }, onUnexpectedExternalError));
return TPromise.join(supports.map(support => asWinJsPromise(token => support.provideCompletionItems(model, position, token)).then(container => { const len = result.length; if (container && !isFalsyOrEmpty(container.suggestions)) { for (let suggestion of container.suggestions) { if (acceptSuggestion(suggestion)) { fixOverwriteBeforeAfter(suggestion, container); result.push({ container, suggestion, support, resolve: createSuggestionResolver(support, suggestion, model, position) }); } } } if (len !== result.length && support !== snippetSuggestSupport) { hasResult = true; } }, onUnexpectedError)));
const promises = providers.map(provider => asWinJsPromise(token => provider.provideDocumentColors(model, token)).then(result => { if (Array.isArray(result)) { for (let ci of result) { rawCIs.push({ range: ci.range, color: [ci.color.red, ci.color.green, ci.color.blue, ci.color.alpha] }); } } }));
return () => { if (typeof provider.resolveCompletionItem === 'function') { return asWinJsPromise(token => provider.resolveCompletionItem(model, position, suggestion, token)) .then(value => { assign(suggestion, value); }); } return TPromise.as(void 0); };
return TPromise.join(supports.map(support => { if (!isFalsyOrEmpty(onlyFrom) && onlyFrom.indexOf(support) < 0) { return undefined; } return asWinJsPromise(token => support.provideCompletionItems(model, position, suggestConext, token)).then(container => { const len = allSuggestions.length; if (container && !isFalsyOrEmpty(container.suggestions)) { for (let suggestion of container.suggestions) { if (acceptSuggestion(suggestion)) { fixOverwriteBeforeAfter(suggestion, container); allSuggestions.push({ position, container, suggestion, support, resolve: createSuggestionResolver(support, suggestion, model, position) }); } } } if (len !== allSuggestions.length && support !== _snippetSuggestSupport) { hasResult = true; } }, onUnexpectedExternalError); }));
return TPromise.join(supports.map(support => { return asWinJsPromise((token) => { return support.provideCompletionItems(model, position, token); }).then(values => { if (!values) { return; } for (let suggestResult of values) { if (!suggestResult || isFalsyOrEmpty(suggestResult.suggestions)) { continue; } result.push({ support, currentWord: suggestResult.currentWord, incomplete: suggestResult.incomplete, suggestions: suggestResult.suggestions }); } }, onUnexpectedError); }));
return () => { return asWinJsPromise(token => provider.provideDocumentFormattingEdits(model, options, token)).then(value => { result = value; }, err => { // ignore }); };