@@ -365,6 +365,19 @@ async function serverManager(): Promise<any> {
365
365
}
366
366
}
367
367
368
+ async function languageServer ( ) : Promise < any > {
369
+ const extId = "intersystems.language-server" ;
370
+ const extension = vscode . extensions . getExtension ( extId ) ;
371
+
372
+ return extension ;
373
+ // if (extension) {
374
+ // if (!extension.isActive) {
375
+ // // await extension.activate();
376
+ // }
377
+ // return extension.exports;
378
+ // }
379
+ }
380
+
368
381
export async function activate ( context : vscode . ExtensionContext ) : Promise < any > {
369
382
if ( ! packageJson . version . includes ( "SNAPSHOT" ) ) {
370
383
try {
@@ -500,9 +513,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
500
513
[ "file" , ...schemas ] . reduce ( ( acc , scheme ) => acc . concat ( list . map ( ( language ) => ( { scheme, language } ) ) ) , [ ] ) ;
501
514
502
515
const diagnosticProvider = new ObjectScriptDiagnosticProvider ( ) ;
503
- if ( vscode . window . activeTextEditor ) {
504
- diagnosticProvider . updateDiagnostics ( vscode . window . activeTextEditor . document ) ;
505
- }
506
516
507
517
// Gather the proposed APIs we will register to use when building with enableProposedApi = true
508
518
const proposed = [
@@ -525,10 +535,50 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
525
535
outputChannel . show ( true ) ;
526
536
}
527
537
538
+ const languageServerExt = await languageServer ( ) ;
539
+ if ( ! languageServerExt ) {
540
+ if ( vscode . window . activeTextEditor ) {
541
+ diagnosticProvider . updateDiagnostics ( vscode . window . activeTextEditor . document ) ;
542
+ }
543
+ context . subscriptions . push (
544
+ workspace . onDidChangeTextDocument ( ( event ) => {
545
+ diagnosticProvider . updateDiagnostics ( event . document ) ;
546
+ } ) ,
547
+ window . onDidChangeActiveTextEditor ( async ( editor ) => {
548
+ if ( editor ) {
549
+ diagnosticProvider . updateDiagnostics ( editor . document ) ;
550
+ }
551
+ } ) ,
552
+ vscode . languages . registerHoverProvider (
553
+ documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
554
+ new ObjectScriptHoverProvider ( )
555
+ ) ,
556
+ vscode . languages . registerDocumentFormattingEditProvider (
557
+ documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
558
+ new DocumentFormattingEditProvider ( )
559
+ ) ,
560
+ vscode . languages . registerDocumentRangeFormattingEditProvider (
561
+ documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
562
+ new DocumentRangeFormattingEditProvider ( )
563
+ ) ,
564
+ vscode . languages . registerDefinitionProvider (
565
+ documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
566
+ new ObjectScriptDefinitionProvider ( )
567
+ ) ,
568
+ vscode . languages . registerCompletionItemProvider (
569
+ documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
570
+ new ObjectScriptCompletionItemProvider ( ) ,
571
+ "$" ,
572
+ "^" ,
573
+ "." ,
574
+ "#"
575
+ )
576
+ ) ;
577
+ }
578
+
528
579
context . subscriptions . push (
529
580
reporter ,
530
581
workspace . onDidChangeTextDocument ( ( event ) => {
531
- diagnosticProvider . updateDiagnostics ( event . document ) ;
532
582
if (
533
583
event . contentChanges . length !== 0 &&
534
584
event . document . uri . scheme === FILESYSTEM_SCHEMA &&
@@ -541,9 +591,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
541
591
}
542
592
} ) ,
543
593
window . onDidChangeActiveTextEditor ( async ( editor ) => {
544
- if ( editor ) {
545
- diagnosticProvider . updateDiagnostics ( editor . document ) ;
546
- }
547
594
if ( workspace . workspaceFolders && workspace . workspaceFolders . length > 1 ) {
548
595
const workspaceFolder = currentWorkspaceFolder ( ) ;
549
596
if ( workspaceFolder && workspaceFolder !== workspaceState . get < string > ( "workspaceFolder" ) ) {
@@ -713,30 +760,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
713
760
documentSelector ( "objectscript" ) ,
714
761
new ObjectScriptFoldingRangeProvider ( )
715
762
) ,
716
- vscode . languages . registerDefinitionProvider (
717
- documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
718
- new ObjectScriptDefinitionProvider ( )
719
- ) ,
720
- vscode . languages . registerCompletionItemProvider (
721
- documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
722
- new ObjectScriptCompletionItemProvider ( ) ,
723
- "$" ,
724
- "^" ,
725
- "." ,
726
- "#"
727
- ) ,
728
- vscode . languages . registerHoverProvider (
729
- documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
730
- new ObjectScriptHoverProvider ( )
731
- ) ,
732
- vscode . languages . registerDocumentFormattingEditProvider (
733
- documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
734
- new DocumentFormattingEditProvider ( )
735
- ) ,
736
- vscode . languages . registerDocumentRangeFormattingEditProvider (
737
- documentSelector ( "objectscript-class" , "objectscript" , "objectscript-macros" ) ,
738
- new DocumentRangeFormattingEditProvider ( )
739
- ) ,
740
763
vscode . languages . registerWorkspaceSymbolProvider ( new WorkspaceSymbolProvider ( ) ) ,
741
764
vscode . debug . registerDebugConfigurationProvider ( "objectscript" , new ObjectScriptConfigurationProvider ( ) ) ,
742
765
vscode . debug . registerDebugAdapterDescriptorFactory ( "objectscript" , debugAdapterFactory ) ,
0 commit comments