import * as vscode from 'vscode'; import { CommandContext } from './commands/context'; import { registerContextKeys } from './commands/contextKeys'; import { newDiagramCommands } from './commands/newDiagram'; import { renderCommands } from './commands/renderCommands'; import { viewCommands } from './commands/viewCommands'; import { modelCommands } from './commands/modelCommands'; import { BRAND_COMPLETION_SELECTOR, BrandCompletionProvider } from './language/brandCompletion'; import { REF_SELECTOR, RefLanguage } from './language/refLanguage'; import { ModelService } from './model/service'; import { DiagnosticsController } from './language/diagnostics'; import { log } from './util/log'; import { HtmlViewerProvider } from './views/htmlViewer'; import { DiagramViewManager } from './views/diagramView'; import { RegistryViewProvider } from './views/registryView'; import { DecisionViewProvider } from './views/decisionView'; import { DECISION_SELECTOR, DecisionLanguage } from './language/decisionLanguage'; export function activate(context: vscode.ExtensionContext): void { const models = new ModelService(); const ctx: CommandContext = { extension: context, views: new DiagramViewManager(context, models), htmlViewer: new HtmlViewerProvider(context.extensionUri), registry: new RegistryViewProvider(models), decision: new DecisionViewProvider(models), models, }; const refs = new RefLanguage(models); const decisions = new DecisionLanguage(models); context.subscriptions.push( models, ctx.views, ctx.htmlViewer, ctx.registry, ctx.decision, new DiagnosticsController(context, models), log(), vscode.languages.registerCompletionItemProvider(BRAND_COMPLETION_SELECTOR, new BrandCompletionProvider(context.extensionPath), ' ', '"'), vscode.languages.registerCompletionItemProvider(REF_SELECTOR, refs, ' ', '"'), vscode.languages.registerHoverProvider(REF_SELECTOR, refs), vscode.languages.registerDefinitionProvider(REF_SELECTOR, refs), vscode.languages.registerCompletionItemProvider(DECISION_SELECTOR, decisions, ' ', '[', ',', '"'), vscode.languages.registerHoverProvider(DECISION_SELECTOR, decisions), vscode.languages.registerDefinitionProvider(DECISION_SELECTOR, decisions), ...viewCommands(ctx), ...newDiagramCommands(ctx), ...renderCommands(ctx), ...modelCommands(ctx), ); registerContextKeys(context, models); } export function deactivate(): void {}