Skip to content

Commit cd443a0

Browse files
committed
feat: Load the extension configuration before starting the language client if required
1 parent 3ae0d13 commit cd443a0

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/languageClient.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import createLanguageClient from './createLanguageClient'
1010
import { getFile } from './customRequests'
1111
import staticOptions, { LanguageClientId, StaticLanguageClientOptions } from './staticOptions'
1212
import { WillDisposeFeature, WillShutdownParams } from './extensions'
13+
import { loadExtensionConfigurations } from './extensionConfiguration'
1314

1415
type Status = {
1516
type: string
@@ -39,7 +40,8 @@ export class LanguageClientManager implements LanguageClient {
3940
private languageServerAddress: string,
4041
private getSecurityToken: () => Promise<string>,
4142
private languageServerOptions: StaticLanguageClientOptions,
42-
private libraryUrls: string[]
43+
private libraryUrls: string[],
44+
private mutualized: boolean
4345
) {
4446
}
4547

@@ -226,7 +228,13 @@ export class LanguageClientManager implements LanguageClient {
226228

227229
this.languageClient.registerFeature(new WillDisposeFeature(this.languageClient, this.onWillShutdownEmitter))
228230

229-
this.languageClient.start()
231+
loadExtensionConfigurations([this.id], this.mutualized).catch(error => {
232+
console.error('Unable to load extension configuration', error)
233+
}).finally(() => {
234+
if (!this.isDisposed()) {
235+
this.languageClient!.start()
236+
}
237+
})
230238
}
231239

232240
sendNotification (method: string, params: unknown): void {
@@ -245,7 +253,8 @@ function createLanguageClientManager (
245253
sessionId: string | undefined,
246254
languageServerAddress: string,
247255
getSecurityToken: () => Promise<string>,
248-
libraryUrls: string[]
256+
libraryUrls: string[],
257+
mutualized: boolean = languageServerAddress.includes('mutualized')
249258
): LanguageClientManager {
250259
if (languageClientManagerByLanguageId[id] != null) {
251260
throw new Error(`Language client for language ${id} already started`)
@@ -257,7 +266,7 @@ function createLanguageClientManager (
257266
}
258267
installServices()
259268

260-
const languageClientManager = new LanguageClientManager(id, sessionId, languageServerAddress, getSecurityToken, languageServerOptions, libraryUrls)
269+
const languageClientManager = new LanguageClientManager(id, sessionId, languageServerAddress, getSecurityToken, languageServerOptions, libraryUrls, mutualized)
261270
languageClientManagerByLanguageId[id] = languageClientManager
262271

263272
const textModelContentProviderDisposable = registerTextModelContentProvider('file', {

0 commit comments

Comments
 (0)