diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2022-10-17 15:43:15 +0200 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2022-10-17 15:45:57 +0200 |
| commit | 0421756b4256b8edf739b5889e754d7bc733ed38 (patch) | |
| tree | 829aef24fb671930e5e6f49acc149e36e68c3181 /editors/code/src | |
| parent | d68616a140b35dd9bc4e2982e0993257ab0942e0 (diff) | |
| download | rust-0421756b4256b8edf739b5889e754d7bc733ed38.tar.gz rust-0421756b4256b8edf739b5889e754d7bc733ed38.zip | |
Implement stop and start server commands
Diffstat (limited to 'editors/code/src')
| -rw-r--r-- | editors/code/src/client.ts | 8 | ||||
| -rw-r--r-- | editors/code/src/ctx.ts | 2 | ||||
| -rw-r--r-- | editors/code/src/main.ts | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/editors/code/src/client.ts b/editors/code/src/client.ts index 3408a2ee84e..fb667619c86 100644 --- a/editors/code/src/client.ts +++ b/editors/code/src/client.ts @@ -76,6 +76,14 @@ export async function createClient( outputChannel, middleware: { workspace: { + // HACK: This is a workaround, when the client has been disposed, VSCode + // continues to emit events to the client and the default one for this event + // attempt to restart the client for no reason + async didChangeWatchedFile(event, next) { + if (client.isRunning()) { + await next(event); + } + }, async configuration( params: lc.ConfigurationParams, token: vscode.CancellationToken, diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts index 6b12d9ca1ec..2080db7a2c1 100644 --- a/editors/code/src/ctx.ts +++ b/editors/code/src/ctx.ts @@ -68,8 +68,6 @@ export class Ctx { } if (!this.client) { - log.info("Creating language client"); - this._serverPath = await bootstrap(this.extCtx, this.config, this.state).catch( (err) => { let message = "bootstrap error. "; diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 97ec41dce3a..f65620aebc6 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -126,6 +126,13 @@ async function initCommonContext(ctx: Ctx) { await ctx.activate(); }); + ctx.registerCommand("startServer", (_) => async () => { + await ctx.activate(); + }); + ctx.registerCommand("stopServer", (_) => async () => { + // FIXME: We should re-use the client, that is ctx.deactivate() if none of the configs have changed + await ctx.disposeClient(); + }); ctx.registerCommand("analyzerStatus", commands.analyzerStatus); ctx.registerCommand("memoryUsage", commands.memoryUsage); ctx.registerCommand("shuffleCrateGraph", commands.shuffleCrateGraph); |
