about summary refs log tree commit diff
path: root/editors/code/src/main.ts
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2020-02-17 14:03:33 +0100
committerAleksey Kladov <aleksey.kladov@gmail.com>2020-02-17 14:03:33 +0100
commitee4e41cbea8ef3758ccebd9ffb35c5290aebfceb (patch)
tree7b377257a1f0e64611a31270b3dfd25d12acd96f /editors/code/src/main.ts
parent6167101302bcc2d7f1a345e0ee44e1411056b4b3 (diff)
downloadrust-ee4e41cbea8ef3758ccebd9ffb35c5290aebfceb.tar.gz
rust-ee4e41cbea8ef3758ccebd9ffb35c5290aebfceb.zip
Push IO and error handling up
Diffstat (limited to 'editors/code/src/main.ts')
-rw-r--r--editors/code/src/main.ts11
1 files changed, 10 insertions, 1 deletions
diff --git a/editors/code/src/main.ts b/editors/code/src/main.ts
index 0bf2c4829bb..ece4883bd69 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);
     }