From ee4e41cbea8ef3758ccebd9ffb35c5290aebfceb Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 17 Feb 2020 14:03:33 +0100 Subject: Push IO and error handling up --- editors/code/src/main.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'editors/code/src/main.ts') diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts index 0bf2c4829..ece4883bd 100644 --- a/editors/code/src/main.ts +++ b/editors/code/src/main.ts @@ -5,18 +5,27 @@ import { activateInlayHints } from './inlay_hints'; import { activateStatusDisplay } from './status_display'; import { Ctx } from './ctx'; import { activateHighlighting } from './highlighting'; +import { ensureServerBinary } from './installation/server'; let ctx: Ctx | undefined; export async function activate(context: vscode.ExtensionContext) { ctx = new Ctx(context); + const serverPath = await ensureServerBinary(ctx.config.serverSource); + if (serverPath == null) { + throw new Error( + "Rust Analyzer Language Server is not available. " + + "Please, ensure its [proper installation](https://github.com/rust-analyzer/rust-analyzer/tree/master/docs/user#vs-code)." + ); + } + // Note: we try to start the server before we activate type hints so that it // registers its `onDidChangeDocument` handler before us. // // This a horribly, horribly wrong way to deal with this problem. try { - await ctx.startServer(); + await ctx.startServer(serverPath); } catch (e) { vscode.window.showErrorMessage(e.message); } -- cgit v1.2.3