From c4e9eec0ac5bc627ee8353bd85bb48f76f3aa249 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Wed, 9 Aug 2017 11:27:53 +0200 Subject: [PATCH] :lipstick: color picker --- .../contrib/colorPicker/common/colorPicker.ts | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/vs/editor/contrib/colorPicker/common/colorPicker.ts b/src/vs/editor/contrib/colorPicker/common/colorPicker.ts index 64a8bfd9ee6..6ced6872484 100644 --- a/src/vs/editor/contrib/colorPicker/common/colorPicker.ts +++ b/src/vs/editor/contrib/colorPicker/common/colorPicker.ts @@ -3,25 +3,16 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { TPromise } from "vs/base/common/winjs.base"; -import { ColorProviderRegistry, IColorRange } from "vs/editor/common/modes"; -import { asWinJsPromise } from "vs/base/common/async"; -import { onUnexpectedExternalError } from "vs/base/common/errors"; -import { IReadOnlyModel } from "vs/editor/common/editorCommon"; +import { TPromise } from 'vs/base/common/winjs.base'; +import { ColorProviderRegistry, IColorRange } from 'vs/editor/common/modes'; +import { asWinJsPromise } from 'vs/base/common/async'; +import { IReadOnlyModel } from 'vs/editor/common/editorCommon'; +import { flatten } from 'vs/base/common/arrays'; export function getColors(model: IReadOnlyModel): TPromise { - let colorInfo: IColorRange[] = []; + const providers = ColorProviderRegistry.ordered(model).reverse(); + const promises = providers.map(p => asWinJsPromise(token => p.provideColorRanges(model, token))); - // ask all providers for colors in parallel - 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); - }); - - return TPromise.join(promises).then(() => { - return colorInfo; - }); + return TPromise.join(promises) + .then(ranges => flatten(ranges.filter(r => Array.isArray(r)))); } \ No newline at end of file -- GitLab