aboutsummaryrefslogtreecommitdiff
path: root/editors/code/src/ctx.ts
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2020-02-17 13:11:01 +0000
committerAleksey Kladov <[email protected]>2020-02-17 13:11:01 +0000
commit89afb1a841c83d41ca3da72217c377932cdf5e93 (patch)
tree21b54de0bec23693bb39e84a7dcf8be85312f291 /editors/code/src/ctx.ts
parent978bea2b3110cf84defae37a56157b8b7016bd3d (diff)
Remove two stage constuction
Diffstat (limited to 'editors/code/src/ctx.ts')
-rw-r--r--editors/code/src/ctx.ts25
1 files changed, 11 insertions, 14 deletions
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index 935a6f2b5..21f1025cf 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -1,6 +1,5 @@
1import * as vscode from 'vscode'; 1import * as vscode from 'vscode';
2import * as lc from 'vscode-languageclient'; 2import * as lc from 'vscode-languageclient';
3import { strict as assert } from "assert";
4 3
5import { Config } from './config'; 4import { Config } from './config';
6import { createClient } from './client'; 5import { createClient } from './client';
@@ -15,23 +14,21 @@ export class Ctx {
15 // FIXME: this actually needs syncronization of some kind (check how 14 // FIXME: this actually needs syncronization of some kind (check how
16 // vscode deals with `deactivate()` call when extension has some work scheduled 15 // vscode deals with `deactivate()` call when extension has some work scheduled
17 // on the event loop to get a better picture of what we can do here) 16 // on the event loop to get a better picture of what we can do here)
18 client: lc.LanguageClient | null = null; 17 client: lc.LanguageClient;
19 private extCtx: vscode.ExtensionContext; 18 private extCtx: vscode.ExtensionContext;
20 19
21 constructor(extCtx: vscode.ExtensionContext) { 20 static async create(config: Config, extCtx: vscode.ExtensionContext, serverPath: string): Promise<Ctx> {
22 this.config = new Config(extCtx); 21 const client = await createClient(config, serverPath);
23 this.extCtx = extCtx; 22 const res = new Ctx(config, extCtx, client);
24 } 23 res.pushCleanup(client.start());
25
26 async startServer(serverPath: string) {
27 assert(this.client == null);
28
29 const client = await createClient(this.config, serverPath);
30
31 this.pushCleanup(client.start());
32 await client.onReady(); 24 await client.onReady();
25 return res;
26 }
33 27
34 this.client = client; 28 private constructor(config: Config, extCtx: vscode.ExtensionContext, client: lc.LanguageClient) {
29 this.config = config;
30 this.extCtx = extCtx;
31 this.client = client
35 } 32 }
36 33
37 get activeRustEditor(): vscode.TextEditor | undefined { 34 get activeRustEditor(): vscode.TextEditor | undefined {