@@ -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