Skip to content

Commit 56cf68e

Browse files
authored
Merge pull request #419 from intersystems-community/ls-async-install
install language server extension in the background
2 parents 81a8dfa + 96ee0f5 commit 56cf68e

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/extension.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -370,11 +370,11 @@ async function serverManager(): Promise<any> {
370370
}
371371
}
372372

373-
async function languageServer(): Promise<vscode.Extension<any>> {
373+
function languageServer(install = true): vscode.Extension<any> {
374374
const extId = "intersystems.language-server";
375375
let extension = vscode.extensions.getExtension(extId);
376376

377-
if (!extension) {
377+
async function languageServerInstall() {
378378
try {
379379
await vscode.commands.executeCommand("extension.open", extId);
380380
} catch (ex) {
@@ -400,6 +400,10 @@ async function languageServer(): Promise<vscode.Extension<any>> {
400400
});
401401
}
402402

403+
if (!extension && install) {
404+
languageServerInstall();
405+
}
406+
403407
return extension;
404408
}
405409

@@ -561,7 +565,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
561565
}
562566

563567
const languageServerExt =
564-
context.extensionMode && context.extensionMode !== vscode.ExtensionMode.Test ? await languageServer() : null;
568+
context.extensionMode && context.extensionMode !== vscode.ExtensionMode.Test ? languageServer() : null;
565569
const noLSsubscriptions: { dispose(): any }[] = [];
566570
if (!languageServerExt) {
567571
outputChannel.appendLine(`The intersystems.language-server extension is not installed or has been disabled.\n`);
@@ -617,8 +621,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
617621

618622
context.subscriptions.push(
619623
reporter,
620-
vscode.extensions.onDidChange(() => {
621-
const languageServerExt2 = languageServer();
624+
vscode.extensions.onDidChange(async () => {
625+
const languageServerExt2 = languageServer(false);
622626
if (typeof languageServerExt !== typeof languageServerExt2) {
623627
noLSsubscriptions.forEach((event) => {
624628
event.dispose();

0 commit comments

Comments
 (0)