mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
css: report colors through provider
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
import * as path from 'path';
|
||||
|
||||
import { languages, window, commands, workspace, ExtensionContext, DocumentColorProvider, CancellationToken, TextDocument, ProviderResult, ColorInfo } from 'vscode';
|
||||
import { languages, window, commands, workspace, ExtensionContext, DocumentColorProvider, Color, CancellationToken, TextDocument, ProviderResult, ColorInfo } from 'vscode';
|
||||
import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind, RequestType, Range, TextEdit } from 'vscode-languageclient';
|
||||
import { activateColorDecorations } from './colorDecorators';
|
||||
|
||||
@@ -17,6 +17,24 @@ namespace ColorSymbolRequest {
|
||||
export const type: RequestType<string, Range[], any, any> = new RequestType('css/colorSymbols');
|
||||
}
|
||||
|
||||
class ColorProvider implements DocumentColorProvider {
|
||||
|
||||
constructor(private client: LanguageClient) { }
|
||||
|
||||
async provideDocumentColors(document: TextDocument, token: CancellationToken): Promise<ColorInfo[]> {
|
||||
const ranges = await this.client.sendRequest(ColorSymbolRequest.type, document.uri.toString());
|
||||
|
||||
return ranges.map(r => {
|
||||
const range = this.client.protocol2CodeConverter.asRange(r);
|
||||
const color = Color.fromHex('#000000');
|
||||
const format = '#{red:X}{green:X}{blue:X}';
|
||||
const availableFormats = [format];
|
||||
|
||||
return new ColorInfo(range, color, format, availableFormats);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// this method is called when vs code is activated
|
||||
export function activate(context: ExtensionContext) {
|
||||
|
||||
@@ -58,6 +76,10 @@ export function activate(context: ExtensionContext) {
|
||||
let isDecoratorEnabled = (languageId: string) => {
|
||||
return workspace.getConfiguration().get<boolean>(languageId + '.colorDecorators.enable');
|
||||
};
|
||||
|
||||
const colorProvider = new ColorProvider(client);
|
||||
context.subscriptions.push(languages.registerColorProvider('css', colorProvider));
|
||||
|
||||
disposable = activateColorDecorations(colorRequestor, { css: true, scss: true, less: true }, isDecoratorEnabled);
|
||||
context.subscriptions.push(disposable);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user