@@ -194,6 +194,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
194194 disposables . value . push ( ls ) ;
195195
196196 const completionItems = new WeakMap < monaco . languages . CompletionItem , vscode . CompletionItem > ( ) ;
197+ const codeLens = new WeakMap < monaco . languages . CodeLens , vscode . CodeLens > ( ) ;
197198 const documents = new WeakMap < monaco . editor . ITextModel , vscode . TextDocument > ( ) ;
198199
199200 disposables . value . push (
@@ -323,6 +324,34 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
323324 }
324325 } ,
325326 } ) ,
327+ monaco . languages . registerCodeLensProvider ( lang , {
328+ provideCodeLenses : async ( model ) => {
329+ const codeResult = await ls . doCodeLens (
330+ model . uri . toString ( ) ,
331+ ) ;
332+ if ( codeResult ) {
333+ const monacoResult = codeResult . map ( code2monaco . asCodeLens ) ;
334+ for ( let i = 0 ; i < monacoResult . length ; i ++ ) {
335+ codeLens . set ( monacoResult [ i ] , codeResult [ i ] ) ;
336+ }
337+ return {
338+ lenses : monacoResult ,
339+ dispose : ( ) => { } ,
340+ } ;
341+ }
342+ } ,
343+ resolveCodeLens : async ( model , moncaoResult ) => {
344+ let codeResult = codeLens . get ( moncaoResult ) ;
345+ if ( codeResult ) {
346+ codeResult = await ls . doCodeLensResolve ( codeResult ) ;
347+ if ( codeResult ) {
348+ moncaoResult = code2monaco . asCodeLens ( codeResult ) ;
349+ codeLens . set ( moncaoResult , codeResult ) ;
350+ }
351+ }
352+ return moncaoResult ;
353+ } ,
354+ } ) ,
326355 monaco . languages . registerCompletionItemProvider ( lang , {
327356 // https://github.com/johnsoncodehk/volar/blob/2f786182250d27e99cc3714fbfc7d209616e2289/packages/vue-language-server/src/registers/registerlanguageFeatures.ts#L57
328357 triggerCharacters : '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ ' . split ( '' ) ,
@@ -334,9 +363,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
334363 ) ;
335364 const monacoResult = code2monaco . asCompletionList ( codeResult ) ;
336365 for ( let i = 0 ; i < codeResult . items . length ; i ++ ) {
337- const codeItem = codeResult . items [ i ] ;
338- const monacoItem = monacoResult . suggestions [ i ] ;
339- completionItems . set ( monacoItem , codeItem ) ;
366+ completionItems . set ( monacoResult . suggestions [ i ] , codeResult . items [ i ] ) ;
340367 }
341368 return monacoResult ;
342369 } ,
0 commit comments