mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-26 20:09:19 +00:00
Implement stop and start server commands
This commit is contained in:
parent
d68616a140
commit
0421756b42
4 changed files with 26 additions and 2 deletions
|
@ -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,
|
||||
|
|
|
@ -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. ";
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue