(connection: IConnection)
| 2581 | } |
| 2582 | |
| 2583 | private initialize(connection: IConnection): Thenable<InitializeResult> { |
| 2584 | this.refreshTrace(connection, false); |
| 2585 | let initOption = this._clientOptions.initializationOptions; |
| 2586 | let rootPath = this._clientOptions.workspaceFolder |
| 2587 | ? this._clientOptions.workspaceFolder.uri.fsPath |
| 2588 | : this._clientGetRootPath(); |
| 2589 | let initParams: InitializeParams = { |
| 2590 | processId: process.pid, |
| 2591 | rootPath: rootPath ? rootPath : null, |
| 2592 | rootUri: rootPath ? this._c2p.asUri(Uri.file(rootPath)) : null, |
| 2593 | capabilities: this.computeClientCapabilities(), |
| 2594 | initializationOptions: Is.func(initOption) ? initOption() : initOption, |
| 2595 | trace: Trace.toString(this._trace), |
| 2596 | workspaceFolders: null |
| 2597 | }; |
| 2598 | this.fillInitializeParams(initParams); |
| 2599 | return connection.initialize(initParams).then((result) => { |
| 2600 | this._resolvedConnection = connection; |
| 2601 | this._initializeResult = result; |
| 2602 | this.state = ClientState.Running; |
| 2603 | |
| 2604 | let textDocumentSyncOptions: TextDocumentSyncOptions | undefined = undefined; |
| 2605 | if (Is.number(result.capabilities.textDocumentSync) && result.capabilities.textDocumentSync !== TextDocumentSyncKind.None) { |
| 2606 | textDocumentSyncOptions = { |
| 2607 | openClose: true, |
| 2608 | change: result.capabilities.textDocumentSync, |
| 2609 | save: { |
| 2610 | includeText: false |
| 2611 | } |
| 2612 | }; |
| 2613 | } else if (result.capabilities.textDocumentSync !== void 0 && result.capabilities.textDocumentSync !== null) { |
| 2614 | textDocumentSyncOptions = result.capabilities.textDocumentSync as TextDocumentSyncOptions; |
| 2615 | } |
| 2616 | this._capabilities = Object.assign({}, result.capabilities, { resolvedTextDocumentSync: textDocumentSyncOptions }); |
| 2617 | |
| 2618 | connection.onDiagnostics(params => this.handleDiagnostics(params)); |
| 2619 | connection.onRequest(RegistrationRequest.type, params => this.handleRegistrationRequest(params)); |
| 2620 | // See https://github.com/Microsoft/vscode-languageserver-node/issues/199 |
| 2621 | connection.onRequest('client/registerFeature', params => this.handleRegistrationRequest(params)); |
| 2622 | connection.onRequest(UnregistrationRequest.type, params => this.handleUnregistrationRequest(params)); |
| 2623 | // See https://github.com/Microsoft/vscode-languageserver-node/issues/199 |
| 2624 | connection.onRequest('client/unregisterFeature', params => this.handleUnregistrationRequest(params)); |
| 2625 | connection.onRequest(ApplyWorkspaceEditRequest.type, params => this.handleApplyWorkspaceEdit(params)); |
| 2626 | |
| 2627 | connection.sendNotification(InitializedNotification.type, {}); |
| 2628 | |
| 2629 | this.hookFileEvents(connection); |
| 2630 | this.hookConfigurationChanged(connection); |
| 2631 | this.initializeFeatures(connection); |
| 2632 | this._onReadyCallbacks.resolve(); |
| 2633 | return result; |
| 2634 | }, (error: any) => { |
| 2635 | if (this._clientOptions.initializationFailedHandler) { |
| 2636 | if (this._clientOptions.initializationFailedHandler(error)) { |
| 2637 | this.initialize(connection); |
| 2638 | } else { |
| 2639 | this.stop(); |
| 2640 | this._onReadyCallbacks.reject(error); |
nothing calls this directly
no test coverage detected