@@ -370,11 +370,11 @@ async function serverManager(): Promise<any> {
370
370
}
371
371
}
372
372
373
- async function languageServer ( ) : Promise < vscode . Extension < any > > {
373
+ function languageServer ( install = true ) : vscode . Extension < any > {
374
374
const extId = "intersystems.language-server" ;
375
375
let extension = vscode . extensions . getExtension ( extId ) ;
376
376
377
- if ( ! extension ) {
377
+ async function languageServerInstall ( ) {
378
378
try {
379
379
await vscode . commands . executeCommand ( "extension.open" , extId ) ;
380
380
} catch ( ex ) {
@@ -400,6 +400,10 @@ async function languageServer(): Promise<vscode.Extension<any>> {
400
400
} ) ;
401
401
}
402
402
403
+ if ( ! extension && install ) {
404
+ languageServerInstall ( ) ;
405
+ }
406
+
403
407
return extension ;
404
408
}
405
409
@@ -561,7 +565,7 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
561
565
}
562
566
563
567
const languageServerExt =
564
- context . extensionMode && context . extensionMode !== vscode . ExtensionMode . Test ? await languageServer ( ) : null ;
568
+ context . extensionMode && context . extensionMode !== vscode . ExtensionMode . Test ? languageServer ( ) : null ;
565
569
const noLSsubscriptions : { dispose ( ) : any } [ ] = [ ] ;
566
570
if ( ! languageServerExt ) {
567
571
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> {
617
621
618
622
context . subscriptions . push (
619
623
reporter ,
620
- vscode . extensions . onDidChange ( ( ) => {
621
- const languageServerExt2 = languageServer ( ) ;
624
+ vscode . extensions . onDidChange ( async ( ) => {
625
+ const languageServerExt2 = languageServer ( false ) ;
622
626
if ( typeof languageServerExt !== typeof languageServerExt2 ) {
623
627
noLSsubscriptions . forEach ( ( event ) => {
624
628
event . dispose ( ) ;
0 commit comments