diff options
Diffstat (limited to 'editors/code/src/ctx.ts')
-rw-r--r-- | editors/code/src/ctx.ts | 25 |
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 @@ | |||
1 | import * as vscode from 'vscode'; | 1 | import * as vscode from 'vscode'; |
2 | import * as lc from 'vscode-languageclient'; | 2 | import * as lc from 'vscode-languageclient'; |
3 | import { strict as assert } from "assert"; | ||
4 | 3 | ||
5 | import { Config } from './config'; | 4 | import { Config } from './config'; |
6 | import { createClient } from './client'; | 5 | import { 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 { |