(
server: LspServerDefinition,
context: RootUriContext,
initContext: InitContext,
)
| 577 | } |
| 578 | |
| 579 | async #initializeClient( |
| 580 | server: LspServerDefinition, |
| 581 | context: RootUriContext, |
| 582 | initContext: InitContext, |
| 583 | ): Promise<ClientState> { |
| 584 | const { |
| 585 | key, |
| 586 | normalizedRootUri, |
| 587 | originalRootUri, |
| 588 | originalDocumentUri, |
| 589 | documentUri, |
| 590 | runtimeProvider, |
| 591 | scope, |
| 592 | } = initContext; |
| 593 | |
| 594 | const workspaceOptions = { |
| 595 | displayFile: this.options.displayFile, |
| 596 | openFile: this.options.openFile, |
| 597 | resolveLanguageId: this.options.resolveLanguageId, |
| 598 | }; |
| 599 | |
| 600 | const clientConfig = { ...(server.clientConfig ?? {}) }; |
| 601 | const initializationOptions = resolveInitializationOptions( |
| 602 | server, |
| 603 | clientConfig as Record<string, unknown>, |
| 604 | ); |
| 605 | const builtinConfig = clientConfig.builtinExtensions ?? {}; |
| 606 | const useDefaultExtensions = clientConfig.useDefaultExtensions !== false; |
| 607 | const { extensions: defaultExtensions, diagnosticsExtension } = |
| 608 | useDefaultExtensions |
| 609 | ? buildBuiltinExtensions({ |
| 610 | hover: builtinConfig.hover !== false, |
| 611 | completion: builtinConfig.completion !== false, |
| 612 | signature: builtinConfig.signature !== false, |
| 613 | keymaps: builtinConfig.keymaps !== false, |
| 614 | diagnostics: builtinConfig.diagnostics !== false, |
| 615 | inlayHints: builtinConfig.inlayHints === true, |
| 616 | formatting: builtinConfig.formatting !== false, |
| 617 | }) |
| 618 | : { extensions: [], diagnosticsExtension: null }; |
| 619 | |
| 620 | const extraExtensions = asArray(this.options.clientExtensions); |
| 621 | const serverExtensions = asArray(clientConfig.extensions); |
| 622 | |
| 623 | interface ExtensionWithCapabilities { |
| 624 | clientCapabilities?: { |
| 625 | textDocument?: { |
| 626 | publishDiagnostics?: unknown; |
| 627 | }; |
| 628 | }; |
| 629 | } |
| 630 | |
| 631 | const wantsCustomDiagnostics = [ |
| 632 | ...extraExtensions, |
| 633 | ...serverExtensions, |
| 634 | ].some((ext) => { |
| 635 | const extWithCaps = ext as ExtensionWithCapabilities; |
| 636 | return !!extWithCaps?.clientCapabilities?.textDocument |
no test coverage detected