@@ -155,7 +155,15 @@ export async function register({
155
155
}
156
156
}
157
157
158
- async function connect ( clientRootUri : URL | null , initParams : InitializeParams ) : Promise < LSPConnection > {
158
+ async function connect ( {
159
+ clientRootUri,
160
+ initParams,
161
+ registerProviders,
162
+ } : {
163
+ clientRootUri : URL | null
164
+ initParams : InitializeParams
165
+ registerProviders : boolean
166
+ } ) : Promise < LSPConnection > {
159
167
const subscriptions = new Subscription ( )
160
168
const decorationType = sourcegraph . app . createDecorationType ( )
161
169
const connection = await createConnection ( )
@@ -258,41 +266,56 @@ export async function register({
258
266
}
259
267
} )
260
268
)
261
- await initializeConnection ( connection , clientRootUri , initParams )
269
+ await initializeConnection ( { connection, clientRootUri, initParams, registerProviders } )
262
270
return connection
263
271
}
264
272
265
- async function initializeConnection (
266
- connection : LSPConnection ,
267
- clientRootUri : URL | null ,
273
+ async function initializeConnection ( {
274
+ connection,
275
+ clientRootUri,
276
+ initParams,
277
+ registerProviders,
278
+ } : {
279
+ connection : LSPConnection
280
+ clientRootUri : URL | null
268
281
initParams : InitializeParams
269
- ) : Promise < void > {
282
+ registerProviders : boolean
283
+ } ) : Promise < void > {
270
284
const initializeResult = await connection . sendRequest ( InitializeRequest . type , initParams )
271
285
// Tell language server about all currently open text documents under this root
272
286
syncTextDocuments ( connection )
273
287
274
- // Convert static capabilities to dynamic registrations
275
- const staticRegistrations = staticRegistrationsFromCapabilities ( initializeResult . capabilities , documentSelector )
288
+ if ( registerProviders ) {
289
+ // Convert static capabilities to dynamic registrations
290
+ const staticRegistrations = staticRegistrationsFromCapabilities (
291
+ initializeResult . capabilities ,
292
+ documentSelector
293
+ )
276
294
277
- // Listen for dynamic capabilities
278
- connection . setRequestHandler ( RegistrationRequest . type , params => {
279
- registerCapabilities ( connection , clientRootUri , params . registrations )
280
- } )
281
- // Register static capabilities
282
- registerCapabilities ( connection , clientRootUri , staticRegistrations )
295
+ // Listen for dynamic capabilities
296
+ connection . setRequestHandler ( RegistrationRequest . type , params => {
297
+ registerCapabilities ( connection , clientRootUri , params . registrations )
298
+ } )
299
+ // Register static capabilities
300
+ registerCapabilities ( connection , clientRootUri , staticRegistrations )
301
+ }
283
302
284
303
await afterInitialize ( initializeResult )
285
304
}
286
305
287
306
let withConnection : < R > ( workspaceFolder : URL , fn : ( connection : LSPConnection ) => Promise < R > ) => Promise < R >
288
307
289
308
if ( supportsWorkspaceFolders ) {
290
- const connection = await connect ( null , {
291
- processId : null ,
292
- rootUri : null ,
293
- capabilities : clientCapabilities ,
294
- workspaceFolders : sourcegraph . workspace . roots . map ( toLSPWorkspaceFolder ( { clientToServerURI } ) ) ,
295
- initializationOptions,
309
+ const connection = await connect ( {
310
+ clientRootUri : null ,
311
+ initParams : {
312
+ processId : null ,
313
+ rootUri : null ,
314
+ capabilities : clientCapabilities ,
315
+ workspaceFolders : sourcegraph . workspace . roots . map ( toLSPWorkspaceFolder ( { clientToServerURI } ) ) ,
316
+ initializationOptions,
317
+ } ,
318
+ registerProviders : true ,
296
319
} )
297
320
subscriptions . add ( connection )
298
321
withConnection = async ( workspaceFolder , fn ) => {
@@ -356,12 +379,16 @@ export async function register({
356
379
return await fn ( connection )
357
380
}
358
381
const serverRootUri = clientToServerURI ( workspaceFolder )
359
- connection = await connect ( workspaceFolder , {
360
- processId : null ,
361
- rootUri : serverRootUri . href ,
362
- capabilities : clientCapabilities ,
363
- workspaceFolders : null ,
364
- initializationOptions,
382
+ connection = await connect ( {
383
+ clientRootUri : workspaceFolder ,
384
+ initParams : {
385
+ processId : null ,
386
+ rootUri : serverRootUri . href ,
387
+ capabilities : clientCapabilities ,
388
+ workspaceFolders : null ,
389
+ initializationOptions,
390
+ } ,
391
+ registerProviders : false ,
365
392
} )
366
393
subscriptions . add ( connection )
367
394
try {
@@ -376,12 +403,16 @@ export async function register({
376
403
const connectionPromise = ( async ( ) => {
377
404
try {
378
405
const serverRootUri = clientToServerURI ( new URL ( root . uri . toString ( ) ) )
379
- const connection = await connect ( new URL ( root . uri . toString ( ) ) , {
380
- processId : null ,
381
- rootUri : serverRootUri . href ,
382
- capabilities : clientCapabilities ,
383
- workspaceFolders : null ,
384
- initializationOptions,
406
+ const connection = await connect ( {
407
+ clientRootUri : new URL ( root . uri . toString ( ) ) ,
408
+ initParams : {
409
+ processId : null ,
410
+ rootUri : serverRootUri . href ,
411
+ capabilities : clientCapabilities ,
412
+ workspaceFolders : null ,
413
+ initializationOptions,
414
+ } ,
415
+ registerProviders : true ,
385
416
} )
386
417
subscriptions . add ( connection )
387
418
return connection
0 commit comments