@@ -196,6 +196,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
196
196
const completionItems = new WeakMap < monaco . languages . CompletionItem , vscode . CompletionItem > ( ) ;
197
197
const codeLens = new WeakMap < monaco . languages . CodeLens , vscode . CodeLens > ( ) ;
198
198
const codeActions = new WeakMap < monaco . languages . CodeAction , vscode . CodeAction > ( ) ;
199
+ const colorInformations = new WeakMap < monaco . languages . IColorInformation , vscode . ColorInformation > ( ) ;
199
200
const documents = new WeakMap < monaco . editor . ITextModel , vscode . TextDocument > ( ) ;
200
201
201
202
disposables . value . push (
@@ -254,7 +255,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
254
255
} ) ,
255
256
monaco . languages . registerDocumentSymbolProvider ( lang , {
256
257
provideDocumentSymbols : async ( model ) => {
257
- const document = documents . get ( model ) ;
258
+ const document = getTextDocument ( model ) ;
258
259
if ( document ) {
259
260
const codeResult = await ds . findDocumentSymbols ( document ) ;
260
261
if ( codeResult ) {
@@ -276,7 +277,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
276
277
} ) ,
277
278
monaco . languages . registerLinkedEditingRangeProvider ( lang , {
278
279
provideLinkedEditingRanges : async ( model , position ) => {
279
- const document = documents . get ( model ) ;
280
+ const document = getTextDocument ( model ) ;
280
281
if ( document ) {
281
282
const codeResult = await ds . findLinkedEditingRanges (
282
283
document ,
@@ -395,7 +396,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
395
396
} ) ,
396
397
monaco . languages . registerDocumentFormattingEditProvider ( lang , {
397
398
provideDocumentFormattingEdits : async ( model , options ) => {
398
- const document = documents . get ( model ) ;
399
+ const document = getTextDocument ( model ) ;
399
400
if ( document ) {
400
401
const codeResult = await ds . format (
401
402
document ,
@@ -409,7 +410,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
409
410
} ) ,
410
411
monaco . languages . registerDocumentRangeFormattingEditProvider ( lang , {
411
412
provideDocumentRangeFormattingEdits : async ( model , range , options ) => {
412
- const document = documents . get ( model ) ;
413
+ const document = getTextDocument ( model ) ;
413
414
if ( document ) {
414
415
const codeResult = await ds . format (
415
416
document ,
@@ -425,7 +426,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
425
426
monaco . languages . registerOnTypeFormattingEditProvider ( lang , {
426
427
autoFormatTriggerCharacters : [ '}' , ';' , '\n' ] ,
427
428
provideOnTypeFormattingEdits : async ( model , position , ch , options ) => {
428
- const document = documents . get ( model ) ;
429
+ const document = getTextDocument ( model ) ;
429
430
if ( document ) {
430
431
const codeResult = await ds . format (
431
432
document ,
@@ -480,6 +481,34 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
480
481
return monacoItem ;
481
482
} ,
482
483
} ) ,
484
+ monaco . languages . registerColorProvider ( lang , {
485
+ provideDocumentColors : async ( model ) => {
486
+ const document = getTextDocument ( model ) ;
487
+ if ( document ) {
488
+ const codeResult = await ds . findDocumentColors ( document ) ;
489
+ if ( codeResult ) {
490
+ return codeResult . map ( code2monaco . asColorInformation ) ;
491
+ }
492
+ }
493
+ } ,
494
+ provideColorPresentations : async ( model , monacoResult ) => {
495
+ const document = getTextDocument ( model ) ;
496
+ const codeResult = colorInformations . get ( monacoResult ) ;
497
+ if ( document && codeResult ) {
498
+ const codeColors = await ds . getColorPresentations (
499
+ document ,
500
+ codeResult . color ,
501
+ {
502
+ start : document . positionAt ( 0 ) ,
503
+ end : document . positionAt ( document . getText ( ) . length ) ,
504
+ } ,
505
+ ) ;
506
+ if ( codeColors ) {
507
+ return codeColors . map ( code2monaco . asColorPresentation ) ;
508
+ }
509
+ }
510
+ } ,
511
+ } ) ,
483
512
) ;
484
513
485
514
return ls ;
0 commit comments