@@ -194,6 +194,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
194
194
disposables . value . push ( ls ) ;
195
195
196
196
const completionItems = new WeakMap < monaco . languages . CompletionItem , vscode . CompletionItem > ( ) ;
197
+ const codeLens = new WeakMap < monaco . languages . CodeLens , vscode . CodeLens > ( ) ;
197
198
const documents = new WeakMap < monaco . editor . ITextModel , vscode . TextDocument > ( ) ;
198
199
199
200
disposables . value . push (
@@ -323,6 +324,34 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
323
324
}
324
325
} ,
325
326
} ) ,
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
+ } ) ,
326
355
monaco . languages . registerCompletionItemProvider ( lang , {
327
356
// https://github.com/johnsoncodehk/volar/blob/2f786182250d27e99cc3714fbfc7d209616e2289/packages/vue-language-server/src/registers/registerlanguageFeatures.ts#L57
328
357
triggerCharacters : '!@#$%^&*()_+-=`~{}|[]\:";\'<>?,./ ' . split ( '' ) ,
@@ -334,9 +363,7 @@ export async function setupLs(modelsMap: Ref<Map<string, monaco.editor.ITextMode
334
363
) ;
335
364
const monacoResult = code2monaco . asCompletionList ( codeResult ) ;
336
365
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 ] ) ;
340
367
}
341
368
return monacoResult ;
342
369
} ,
0 commit comments