Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/src/ctx.ts')
-rw-r--r--editors/code/src/ctx.ts35
1 files changed, 21 insertions, 14 deletions
diff --git a/editors/code/src/ctx.ts b/editors/code/src/ctx.ts
index f62ccd1a65..6b12d9ca1e 100644
--- a/editors/code/src/ctx.ts
+++ b/editors/code/src/ctx.ts
@@ -23,12 +23,12 @@ export class Ctx {
readonly config: Config;
private client: lc.LanguageClient | undefined;
+ private _serverPath: string | undefined;
+ private traceOutputChannel: vscode.OutputChannel | undefined;
+ private outputChannel: vscode.OutputChannel | undefined;
+ private state: PersistentState;
- traceOutputChannel: vscode.OutputChannel | undefined;
- outputChannel: vscode.OutputChannel | undefined;
workspace: Workspace;
- state: PersistentState;
- serverPath: string | undefined;
constructor(readonly extCtx: vscode.ExtensionContext, workspace: Workspace) {
this.statusBar = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left);
@@ -70,21 +70,24 @@ 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. ";
+ this._serverPath = await bootstrap(this.extCtx, this.config, this.state).catch(
+ (err) => {
+ let message = "bootstrap error. ";
- message +=
- 'See the logs in "OUTPUT > Rust Analyzer Client" (should open automatically). ';
- message += 'To enable verbose logs use { "rust-analyzer.trace.extension": true }';
+ message +=
+ 'See the logs in "OUTPUT > Rust Analyzer Client" (should open automatically). ';
+ message +=
+ 'To enable verbose logs use { "rust-analyzer.trace.extension": true }';
- log.error("Bootstrap error", err);
- throw new Error(message);
- });
+ log.error("Bootstrap error", err);
+ throw new Error(message);
+ }
+ );
const newEnv = substituteVariablesInEnv(
Object.assign({}, process.env, this.config.serverExtraEnv)
);
const run: lc.Executable = {
- command: this.serverPath,
+ command: this._serverPath,
options: { env: newEnv },
};
const serverOptions = {
@@ -129,7 +132,7 @@ export class Ctx {
async disposeClient() {
log.info("Deactivating language client");
await this.client?.dispose();
- this.serverPath = undefined;
+ this._serverPath = undefined;
this.client = undefined;
}
@@ -161,6 +164,10 @@ export class Ctx {
return this.extCtx.subscriptions;
}
+ get serverPath(): string | undefined {
+ return this._serverPath;
+ }
+
setServerStatus(status: ServerStatusParams) {
let icon = "";
const statusBar = this.statusBar;