@@ -196,6 +196,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
196196 const completionItems = new WeakMap < monaco . languages . CompletionItem , vscode . CompletionItem > ( ) ;
197197 const codeLens = new WeakMap < monaco . languages . CodeLens , vscode . CodeLens > ( ) ;
198198 const codeActions = new WeakMap < monaco . languages . CodeAction , vscode . CodeAction > ( ) ;
199+ const colorInformations = new WeakMap < monaco . languages . IColorInformation , vscode . ColorInformation > ( ) ;
199200 const documents = new WeakMap < monaco . editor . ITextModel , vscode . TextDocument > ( ) ;
200201
201202 disposables . value . push (
@@ -254,7 +255,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
254255 } ) ,
255256 monaco . languages . registerDocumentSymbolProvider ( lang , {
256257 provideDocumentSymbols : async ( model ) => {
257- const document = documents . get ( model ) ;
258+ const document = getTextDocument ( model ) ;
258259 if ( document ) {
259260 const codeResult = await ds . findDocumentSymbols ( document ) ;
260261 if ( codeResult ) {
@@ -276,7 +277,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
276277 } ) ,
277278 monaco . languages . registerLinkedEditingRangeProvider ( lang , {
278279 provideLinkedEditingRanges : async ( model , position ) => {
279- const document = documents . get ( model ) ;
280+ const document = getTextDocument ( model ) ;
280281 if ( document ) {
281282 const codeResult = await ds . findLinkedEditingRanges (
282283 document ,
@@ -395,7 +396,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
395396 } ) ,
396397 monaco . languages . registerDocumentFormattingEditProvider ( lang , {
397398 provideDocumentFormattingEdits : async ( model , options ) => {
398- const document = documents . get ( model ) ;
399+ const document = getTextDocument ( model ) ;
399400 if ( document ) {
400401 const codeResult = await ds . format (
401402 document ,
@@ -409,7 +410,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
409410 } ) ,
410411 monaco . languages . registerDocumentRangeFormattingEditProvider ( lang , {
411412 provideDocumentRangeFormattingEdits : async ( model , range , options ) => {
412- const document = documents . get ( model ) ;
413+ const document = getTextDocument ( model ) ;
413414 if ( document ) {
414415 const codeResult = await ds . format (
415416 document ,
@@ -425,7 +426,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
425426 monaco . languages . registerOnTypeFormattingEditProvider ( lang , {
426427 autoFormatTriggerCharacters : [ '}' , ';' , '\n' ] ,
427428 provideOnTypeFormattingEdits : async ( model , position , ch , options ) => {
428- const document = documents . get ( model ) ;
429+ const document = getTextDocument ( model ) ;
429430 if ( document ) {
430431 const codeResult = await ds . format (
431432 document ,
@@ -480,6 +481,34 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
480481 return monacoItem ;
481482 } ,
482483 } ) ,
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+ } ) ,
483512 ) ;
484513
485514 return ls ;
0 commit comments