@@ -155,7 +155,15 @@ export async function register({
155155        } 
156156    } 
157157
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 >  { 
159167        const  subscriptions  =  new  Subscription ( ) 
160168        const  decorationType  =  sourcegraph . app . createDecorationType ( ) 
161169        const  connection  =  await  createConnection ( ) 
@@ -258,41 +266,56 @@ export async function register({
258266                    } 
259267                } ) 
260268        ) 
261-         await  initializeConnection ( connection ,  clientRootUri ,  initParams ) 
269+         await  initializeConnection ( {   connection,  clientRootUri,  initParams,  registerProviders  } ) 
262270        return  connection 
263271    } 
264272
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 
268281        initParams : InitializeParams 
269-     ) : Promise < void >  { 
282+         registerProviders : boolean 
283+     } ) : Promise < void >  { 
270284        const  initializeResult  =  await  connection . sendRequest ( InitializeRequest . type ,  initParams ) 
271285        // Tell language server about all currently open text documents under this root 
272286        syncTextDocuments ( connection ) 
273287
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+             ) 
276294
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+         } 
283302
284303        await  afterInitialize ( initializeResult ) 
285304    } 
286305
287306    let  withConnection : < R > ( workspaceFolder : URL ,  fn : ( connection : LSPConnection )  =>  Promise < R > )  =>  Promise < R > 
288307
289308    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 , 
296319        } ) 
297320        subscriptions . add ( connection ) 
298321        withConnection  =  async  ( workspaceFolder ,  fn )  =>  { 
@@ -356,12 +379,16 @@ export async function register({
356379                return  await  fn ( connection ) 
357380            } 
358381            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 , 
365392            } ) 
366393            subscriptions . add ( connection ) 
367394            try  { 
@@ -376,12 +403,16 @@ export async function register({
376403                const  connectionPromise  =  ( async  ( )  =>  { 
377404                    try  { 
378405                        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 , 
385416                        } ) 
386417                        subscriptions . add ( connection ) 
387418                        return  connection 
0 commit comments