@@ -215,8 +215,15 @@ export function register(
215
215
if ( languageServicePlugins . some ( ( { capabilities } ) => capabilities . workspaceSymbolProvider ) ) {
216
216
serverCapabilities . workspaceSymbolProvider = { } ;
217
217
server . connection . onWorkspaceSymbol ( async ( params , token ) => {
218
+ let languageServices = await project . getExistingLanguageServices ( ) ;
219
+ if ( ! languageServices . length ) {
220
+ for ( const document of documents . all ( ) ) {
221
+ await project . getLanguageService ( URI . parse ( document . uri ) ) ;
222
+ }
223
+ languageServices = await project . getExistingLanguageServices ( ) ;
224
+ }
218
225
const symbols : vscode . WorkspaceSymbol [ ] = [ ] ;
219
- for ( const languageService of await project . getExistingLanguageServices ( ) ) {
226
+ for ( const languageService of languageServices ) {
220
227
if ( token . isCancellationRequested ) {
221
228
return ;
222
229
}
@@ -473,7 +480,14 @@ export function register(
473
480
commands : [ ...new Set ( languageServicePlugins . map ( ( { capabilities } ) => capabilities . executeCommandProvider ?. commands ?? [ ] ) . flat ( ) ) ] ,
474
481
} ;
475
482
server . connection . onExecuteCommand ( async ( params , token ) => {
476
- for ( const languageService of await project . getExistingLanguageServices ( ) ) {
483
+ let languageServices = await project . getExistingLanguageServices ( ) ;
484
+ if ( ! languageServices . length ) {
485
+ for ( const document of documents . all ( ) ) {
486
+ await project . getLanguageService ( URI . parse ( document . uri ) ) ;
487
+ }
488
+ languageServices = await project . getExistingLanguageServices ( ) ;
489
+ }
490
+ for ( const languageService of languageServices ) {
477
491
if ( languageService . executeCommand && languageService . commands . includes ( params . command ) ) {
478
492
try {
479
493
return await languageService . executeCommand ( params . command , params . arguments ?? [ ] , token ) ;
@@ -706,8 +720,15 @@ export function register(
706
720
707
721
if ( workspaceDiagnostics ) {
708
722
server . connection . languages . diagnostics . onWorkspace ( async ( _params , token ) => {
723
+ let languageServices = await project . getExistingLanguageServices ( ) ;
724
+ if ( ! languageServices . length ) {
725
+ for ( const document of documents . all ( ) ) {
726
+ await project . getLanguageService ( URI . parse ( document . uri ) ) ;
727
+ }
728
+ languageServices = await project . getExistingLanguageServices ( ) ;
729
+ }
709
730
const items : vscode . WorkspaceDocumentDiagnosticReport [ ] = [ ] ;
710
- for ( const languageService of await project . getExistingLanguageServices ( ) ) {
731
+ for ( const languageService of languageServices ) {
711
732
if ( token . isCancellationRequested ) {
712
733
break ;
713
734
}
0 commit comments