Skip to content

Commit 3fc05c9

Browse files
committed
initial support for working together with language-server
1 parent 4e545c6 commit 3fc05c9

File tree

1 file changed

+54
-31
lines changed

1 file changed

+54
-31
lines changed

src/extension.ts

Lines changed: 54 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,19 @@ async function serverManager(): Promise<any> {
365365
}
366366
}
367367

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+
368381
export async function activate(context: vscode.ExtensionContext): Promise<any> {
369382
if (!packageJson.version.includes("SNAPSHOT")) {
370383
try {
@@ -500,9 +513,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
500513
["file", ...schemas].reduce((acc, scheme) => acc.concat(list.map((language) => ({ scheme, language }))), []);
501514

502515
const diagnosticProvider = new ObjectScriptDiagnosticProvider();
503-
if (vscode.window.activeTextEditor) {
504-
diagnosticProvider.updateDiagnostics(vscode.window.activeTextEditor.document);
505-
}
506516

507517
// Gather the proposed APIs we will register to use when building with enableProposedApi = true
508518
const proposed = [
@@ -525,10 +535,50 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
525535
outputChannel.show(true);
526536
}
527537

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+
528579
context.subscriptions.push(
529580
reporter,
530581
workspace.onDidChangeTextDocument((event) => {
531-
diagnosticProvider.updateDiagnostics(event.document);
532582
if (
533583
event.contentChanges.length !== 0 &&
534584
event.document.uri.scheme === FILESYSTEM_SCHEMA &&
@@ -541,9 +591,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
541591
}
542592
}),
543593
window.onDidChangeActiveTextEditor(async (editor) => {
544-
if (editor) {
545-
diagnosticProvider.updateDiagnostics(editor.document);
546-
}
547594
if (workspace.workspaceFolders && workspace.workspaceFolders.length > 1) {
548595
const workspaceFolder = currentWorkspaceFolder();
549596
if (workspaceFolder && workspaceFolder !== workspaceState.get<string>("workspaceFolder")) {
@@ -713,30 +760,6 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
713760
documentSelector("objectscript"),
714761
new ObjectScriptFoldingRangeProvider()
715762
),
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-
),
740763
vscode.languages.registerWorkspaceSymbolProvider(new WorkspaceSymbolProvider()),
741764
vscode.debug.registerDebugConfigurationProvider("objectscript", new ObjectScriptConfigurationProvider()),
742765
vscode.debug.registerDebugAdapterDescriptorFactory("objectscript", debugAdapterFactory),

0 commit comments

Comments
 (0)