@@ -349,130 +349,136 @@ export function addCompletionHandler(connection: Connection, services: LangiumSh
349
349
return services . lsp ?. CompletionProvider ?. getCompletion ( document , params , cancelToken ) ;
350
350
} ,
351
351
services ,
352
- DocumentState . IndexedReferences
352
+ services . lsp . serviceRequirements . CompletionProvider
353
353
) ) ;
354
354
}
355
355
356
356
export function addFindReferencesHandler ( connection : Connection , services : LangiumSharedServices ) : void {
357
357
connection . onReferences ( createRequestHandler (
358
358
( services , document , params , cancelToken ) => services . lsp ?. ReferencesProvider ?. findReferences ( document , params , cancelToken ) ,
359
359
services ,
360
- DocumentState . IndexedReferences
360
+ services . lsp . serviceRequirements . ReferencesProvider
361
361
) ) ;
362
362
}
363
363
364
364
export function addCodeActionHandler ( connection : Connection , services : LangiumSharedServices ) : void {
365
365
connection . onCodeAction ( createRequestHandler (
366
366
( services , document , params , cancelToken ) => services . lsp ?. CodeActionProvider ?. getCodeActions ( document , params , cancelToken ) ,
367
367
services ,
368
- DocumentState . Validated
368
+ services . lsp . serviceRequirements . CodeActionProvider
369
369
) ) ;
370
370
}
371
371
372
372
export function addDocumentSymbolHandler ( connection : Connection , services : LangiumSharedServices ) : void {
373
373
connection . onDocumentSymbol ( createRequestHandler (
374
374
( services , document , params , cancelToken ) => services . lsp ?. DocumentSymbolProvider ?. getSymbols ( document , params , cancelToken ) ,
375
375
services ,
376
- DocumentState . Parsed
376
+ services . lsp . serviceRequirements . DocumentSymbolProvider
377
377
) ) ;
378
378
}
379
379
380
380
export function addGotoDefinitionHandler ( connection : Connection , services : LangiumSharedServices ) : void {
381
381
connection . onDefinition ( createRequestHandler (
382
382
( services , document , params , cancelToken ) => services . lsp ?. DefinitionProvider ?. getDefinition ( document , params , cancelToken ) ,
383
383
services ,
384
- DocumentState . IndexedReferences
384
+ services . lsp . serviceRequirements . DefinitionProvider
385
385
) ) ;
386
386
}
387
387
388
388
export function addGoToTypeDefinitionHandler ( connection : Connection , services : LangiumSharedServices ) : void {
389
389
connection . onTypeDefinition ( createRequestHandler (
390
390
( services , document , params , cancelToken ) => services . lsp ?. TypeProvider ?. getTypeDefinition ( document , params , cancelToken ) ,
391
391
services ,
392
- DocumentState . IndexedReferences
392
+ services . lsp . serviceRequirements . TypeProvider
393
393
) ) ;
394
394
}
395
395
396
396
export function addGoToImplementationHandler ( connection : Connection , services : LangiumSharedServices ) {
397
397
connection . onImplementation ( createRequestHandler (
398
398
( services , document , params , cancelToken ) => services . lsp ?. ImplementationProvider ?. getImplementation ( document , params , cancelToken ) ,
399
399
services ,
400
- DocumentState . IndexedReferences
400
+ services . lsp . serviceRequirements . ImplementationProvider
401
401
) ) ;
402
402
}
403
403
404
404
export function addGoToDeclarationHandler ( connection : Connection , services : LangiumSharedServices ) {
405
405
connection . onDeclaration ( createRequestHandler (
406
406
( services , document , params , cancelToken ) => services . lsp ?. DeclarationProvider ?. getDeclaration ( document , params , cancelToken ) ,
407
407
services ,
408
- DocumentState . IndexedReferences
408
+ services . lsp . serviceRequirements . DeclarationProvider
409
409
) ) ;
410
410
}
411
411
412
412
export function addDocumentHighlightsHandler ( connection : Connection , services : LangiumSharedServices ) : void {
413
413
connection . onDocumentHighlight ( createRequestHandler (
414
414
( services , document , params , cancelToken ) => services . lsp ?. DocumentHighlightProvider ?. getDocumentHighlight ( document , params , cancelToken ) ,
415
415
services ,
416
- DocumentState . IndexedReferences
416
+ services . lsp . serviceRequirements . DocumentHighlightProvider
417
417
) ) ;
418
418
}
419
419
420
420
export function addHoverHandler ( connection : Connection , services : LangiumSharedServices ) : void {
421
421
connection . onHover ( createRequestHandler (
422
422
( services , document , params , cancelToken ) => services . lsp ?. HoverProvider ?. getHoverContent ( document , params , cancelToken ) ,
423
423
services ,
424
- DocumentState . IndexedReferences
424
+ services . lsp . serviceRequirements . HoverProvider
425
425
) ) ;
426
426
}
427
427
428
428
export function addFoldingRangeHandler ( connection : Connection , services : LangiumSharedServices ) : void {
429
429
connection . onFoldingRanges ( createRequestHandler (
430
430
( services , document , params , cancelToken ) => services . lsp ?. FoldingRangeProvider ?. getFoldingRanges ( document , params , cancelToken ) ,
431
431
services ,
432
- DocumentState . Parsed
432
+ services . lsp . serviceRequirements . FoldingRangeProvider
433
433
) ) ;
434
434
}
435
435
436
436
export function addFormattingHandler ( connection : Connection , services : LangiumSharedServices ) : void {
437
+ const targetState = services . lsp . serviceRequirements . Formatter ;
438
+
437
439
connection . onDocumentFormatting ( createRequestHandler (
438
440
( services , document , params , cancelToken ) => services . lsp ?. Formatter ?. formatDocument ( document , params , cancelToken ) ,
439
441
services ,
440
- DocumentState . Parsed
442
+ targetState
441
443
) ) ;
442
444
connection . onDocumentRangeFormatting ( createRequestHandler (
443
445
( services , document , params , cancelToken ) => services . lsp ?. Formatter ?. formatDocumentRange ( document , params , cancelToken ) ,
444
446
services ,
445
- DocumentState . Parsed
447
+ targetState
446
448
) ) ;
447
449
connection . onDocumentOnTypeFormatting ( createRequestHandler (
448
450
( services , document , params , cancelToken ) => services . lsp ?. Formatter ?. formatDocumentOnType ( document , params , cancelToken ) ,
449
451
services ,
450
- DocumentState . Parsed
452
+ targetState
451
453
) ) ;
452
454
}
453
455
454
456
export function addRenameHandler ( connection : Connection , services : LangiumSharedServices ) : void {
457
+ const targetState = services . lsp . serviceRequirements . RenameProvider ;
458
+
455
459
connection . onRenameRequest ( createRequestHandler (
456
460
( services , document , params , cancelToken ) => services . lsp ?. RenameProvider ?. rename ( document , params , cancelToken ) ,
457
461
services ,
458
- DocumentState . IndexedReferences
462
+ targetState
459
463
) ) ;
460
464
connection . onPrepareRename ( createRequestHandler (
461
465
( services , document , params , cancelToken ) => services . lsp ?. RenameProvider ?. prepareRename ( document , params , cancelToken ) ,
462
466
services ,
463
- DocumentState . IndexedReferences
467
+ targetState
464
468
) ) ;
465
469
}
466
470
467
471
export function addInlayHintHandler ( connection : Connection , services : LangiumSharedServices ) : void {
468
472
connection . languages . inlayHint . on ( createServerRequestHandler (
469
473
( services , document , params , cancelToken ) => services . lsp ?. InlayHintProvider ?. getInlayHints ( document , params , cancelToken ) ,
470
474
services ,
471
- DocumentState . IndexedReferences
475
+ services . lsp . serviceRequirements . InlayHintProvider
472
476
) ) ;
473
477
}
474
478
475
479
export function addSemanticTokenHandler ( connection : Connection , services : LangiumSharedServices ) : void {
480
+ const targetState = services . lsp . serviceRequirements . SemanticTokenProvider ;
481
+
476
482
// If no semantic token provider is registered that's fine. Just return an empty result
477
483
const emptyResult : SemanticTokens = { data : [ ] } ;
478
484
connection . languages . semanticTokens . on ( createServerRequestHandler < SemanticTokensParams , SemanticTokens , SemanticTokensPartialResult , void > (
@@ -483,7 +489,7 @@ export function addSemanticTokenHandler(connection: Connection, services: Langiu
483
489
return emptyResult ;
484
490
} ,
485
491
services ,
486
- DocumentState . IndexedReferences
492
+ targetState
487
493
) ) ;
488
494
connection . languages . semanticTokens . onDelta ( createServerRequestHandler < SemanticTokensDeltaParams , SemanticTokens | SemanticTokensDelta , SemanticTokensDeltaPartialResult , void > (
489
495
( services , document , params , cancelToken ) => {
@@ -493,7 +499,7 @@ export function addSemanticTokenHandler(connection: Connection, services: Langiu
493
499
return emptyResult ;
494
500
} ,
495
501
services ,
496
- DocumentState . IndexedReferences
502
+ targetState
497
503
) ) ;
498
504
connection . languages . semanticTokens . onRange ( createServerRequestHandler < SemanticTokensRangeParams , SemanticTokens , SemanticTokensPartialResult , void > (
499
505
( services , document , params , cancelToken ) => {
@@ -503,7 +509,7 @@ export function addSemanticTokenHandler(connection: Connection, services: Langiu
503
509
return emptyResult ;
504
510
} ,
505
511
services ,
506
- DocumentState . IndexedReferences
512
+ targetState
507
513
) ) ;
508
514
}
509
515
export function addConfigurationChangeHandler ( connection : Connection , services : LangiumSharedServices ) : void {
@@ -529,33 +535,35 @@ export function addDocumentLinkHandler(connection: Connection, services: Langium
529
535
connection . onDocumentLinks ( createServerRequestHandler (
530
536
( services , document , params , cancelToken ) => services . lsp ?. DocumentLinkProvider ?. getDocumentLinks ( document , params , cancelToken ) ,
531
537
services ,
532
- DocumentState . Parsed
538
+ services . lsp . serviceRequirements . DocumentLinkProvider
533
539
) ) ;
534
540
}
535
541
536
542
export function addSignatureHelpHandler ( connection : Connection , services : LangiumSharedServices ) : void {
537
543
connection . onSignatureHelp ( createServerRequestHandler (
538
544
( services , document , params , cancelToken ) => services . lsp ?. SignatureHelp ?. provideSignatureHelp ( document , params , cancelToken ) ,
539
545
services ,
540
- DocumentState . IndexedReferences
546
+ services . lsp . serviceRequirements . SignatureHelp
541
547
) ) ;
542
548
}
543
549
544
550
export function addCodeLensHandler ( connection : Connection , services : LangiumSharedServices ) : void {
545
551
connection . onCodeLens ( createServerRequestHandler (
546
552
( services , document , params , cancelToken ) => services . lsp ?. CodeLensProvider ?. provideCodeLens ( document , params , cancelToken ) ,
547
553
services ,
548
- DocumentState . IndexedReferences
554
+ services . lsp . serviceRequirements . CodeLensProvider
549
555
) ) ;
550
556
}
551
557
552
558
export function addWorkspaceSymbolHandler ( connection : Connection , services : LangiumSharedServices ) : void {
553
559
const workspaceSymbolProvider = services . lsp . WorkspaceSymbolProvider ;
554
560
if ( workspaceSymbolProvider ) {
561
+ const targetState = services . lsp . serviceRequirements . WorkspaceSymbolProvider ;
562
+
555
563
const documentBuilder = services . workspace . DocumentBuilder ;
556
564
connection . onWorkspaceSymbol ( async ( params , token ) => {
557
565
try {
558
- await documentBuilder . waitUntil ( DocumentState . IndexedContent , token ) ;
566
+ await documentBuilder . waitUntil ( targetState , token ) ;
559
567
return await workspaceSymbolProvider . getSymbols ( params , token ) ;
560
568
} catch ( err ) {
561
569
return responseError ( err ) ;
@@ -565,7 +573,7 @@ export function addWorkspaceSymbolHandler(connection: Connection, services: Lang
565
573
if ( resolveWorkspaceSymbol ) {
566
574
connection . onWorkspaceSymbolResolve ( async ( workspaceSymbol , token ) => {
567
575
try {
568
- await documentBuilder . waitUntil ( DocumentState . IndexedContent , token ) ;
576
+ await documentBuilder . waitUntil ( targetState , token ) ;
569
577
return await resolveWorkspaceSymbol ( workspaceSymbol , token ) ;
570
578
} catch ( err ) {
571
579
return responseError ( err ) ;
@@ -576,6 +584,8 @@ export function addWorkspaceSymbolHandler(connection: Connection, services: Lang
576
584
}
577
585
578
586
export function addCallHierarchyHandler ( connection : Connection , services : LangiumSharedServices ) : void {
587
+ const targetState = services . lsp . serviceRequirements . CallHierarchyProvider ;
588
+
579
589
connection . languages . callHierarchy . onPrepare ( createServerRequestHandler (
580
590
async ( services , document , params , cancelToken ) => {
581
591
if ( services . lsp ?. CallHierarchyProvider ) {
@@ -585,7 +595,7 @@ export function addCallHierarchyHandler(connection: Connection, services: Langiu
585
595
return null ;
586
596
} ,
587
597
services ,
588
- DocumentState . IndexedReferences
598
+ targetState
589
599
) ) ;
590
600
591
601
connection . languages . callHierarchy . onIncomingCalls ( createHierarchyRequestHandler (
@@ -596,7 +606,8 @@ export function addCallHierarchyHandler(connection: Connection, services: Langiu
596
606
}
597
607
return null ;
598
608
} ,
599
- services
609
+ services ,
610
+ targetState
600
611
) ) ;
601
612
602
613
connection . languages . callHierarchy . onOutgoingCalls ( createHierarchyRequestHandler (
@@ -607,7 +618,8 @@ export function addCallHierarchyHandler(connection: Connection, services: Langiu
607
618
}
608
619
return null ;
609
620
} ,
610
- services
621
+ services ,
622
+ targetState
611
623
) ) ;
612
624
}
613
625
@@ -617,14 +629,16 @@ export function addTypeHierarchyHandler(connection: Connection, sharedServices:
617
629
return ;
618
630
}
619
631
632
+ const targetState = sharedServices . lsp . serviceRequirements . TypeHierarchyProvider ;
633
+
620
634
connection . languages . typeHierarchy . onPrepare (
621
635
createServerRequestHandler (
622
636
async ( services , document , params , cancelToken ) => {
623
637
const result = await services . lsp ?. TypeHierarchyProvider ?. prepareTypeHierarchy ( document , params , cancelToken ) ;
624
638
return result ?? null ;
625
639
} ,
626
640
sharedServices ,
627
- DocumentState . IndexedReferences
641
+ targetState
628
642
) ,
629
643
) ;
630
644
@@ -634,7 +648,8 @@ export function addTypeHierarchyHandler(connection: Connection, sharedServices:
634
648
const result = await services . lsp ?. TypeHierarchyProvider ?. supertypes ( params , cancelToken ) ;
635
649
return result ?? null ;
636
650
} ,
637
- sharedServices
651
+ sharedServices ,
652
+ targetState
638
653
) ,
639
654
) ;
640
655
@@ -644,19 +659,21 @@ export function addTypeHierarchyHandler(connection: Connection, sharedServices:
644
659
const result = await services . lsp ?. TypeHierarchyProvider ?. subtypes ( params , cancelToken ) ;
645
660
return result ?? null ;
646
661
} ,
647
- sharedServices
662
+ sharedServices ,
663
+ targetState
648
664
) ,
649
665
) ;
650
666
}
651
667
652
668
export function createHierarchyRequestHandler < P extends TypeHierarchySupertypesParams | TypeHierarchySubtypesParams | CallHierarchyIncomingCallsParams | CallHierarchyOutgoingCallsParams , R , PR , E = void > (
653
669
serviceCall : ( services : LangiumCoreAndPartialLSPServices , params : P , cancelToken : CancellationToken ) => HandlerResult < R , E > ,
654
670
sharedServices : LangiumSharedServices ,
671
+ targetState : DocumentState
655
672
) : ServerRequestHandler < P , R , PR , E > {
656
673
const serviceRegistry = sharedServices . ServiceRegistry ;
657
674
return async ( params : P , cancelToken : CancellationToken ) => {
658
675
const uri = URI . parse ( params . item . uri ) ;
659
- const cancellationError = await waitUntilPhase < E > ( sharedServices , cancelToken , uri , DocumentState . IndexedReferences ) ;
676
+ const cancellationError = await waitUntilPhase < E > ( sharedServices , cancelToken , uri , targetState ) ;
660
677
if ( cancellationError ) {
661
678
return cancellationError ;
662
679
}
0 commit comments