@@ -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