From 4086f6c85b6466957ba29100e15c8e33ace1cf7e Mon Sep 17 00:00:00 2001 From: Robert Walker Date: Sat, 28 Apr 2018 19:44:15 -0400 Subject: [PATCH] start sbt in VS Code terminal window --- vscode-sbt-scala/client/src/extension.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/vscode-sbt-scala/client/src/extension.ts b/vscode-sbt-scala/client/src/extension.ts index 768e0fc03..c5d3a1282 100644 --- a/vscode-sbt-scala/client/src/extension.ts +++ b/vscode-sbt-scala/client/src/extension.ts @@ -3,10 +3,30 @@ import * as path from 'path'; let fs = require('fs'); +import * as vscode from 'vscode'; import { ExtensionContext, workspace } from 'vscode'; // workspace, import { LanguageClient, LanguageClientOptions, ServerOptions, TransportKind } from 'vscode-languageclient'; -export function activate(context: ExtensionContext) { +export async function activate(context: ExtensionContext) { + // Start sbt + const terminal = vscode.window.createTerminal(`sbt`); + terminal.show(); + terminal.sendText("sbt"); + + function delay(ms: number) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + // Wait for SBT server to start + let retries = 30; + while (retries > 0) { + retries--; + await delay(1000); + if (fs.existsSync(path.join(workspace.rootPath, 'project', 'target', 'active.json'))) { + break; + } + } + // The server is implemented in node let serverModule = context.asAbsolutePath(path.join('server', 'server.js')); // The debug options for the server