Files
archify-vscode-ext/src/extension.ts
T
root-at-skic ebf320a023 Architecture decisions: files, diagram references, views and panels
- *.archify-decision files: id (unique, words), title, status, date,
  elements, diagrams, supersedes, and prose; parsed, merged and link-checked
  in the model index; diagnostics on the file
- diagrams point at decisions with decisions: [...] on the diagram, nodes
  and edges; stripped before Archify, unknown ids reported, completion,
  hover and go-to-definition for the ids and for elements/diagrams/
  supersedes in decision files
- Decisions panel on the main.archify page; Decisions rail panel under a
  diagram (hover lights up the node or connection); decisions on element
  cards and in the element dialog; decision view for the file, with a
  lost-model note outside a model
- Archify | New Decision… command and template; editor schemas; the three
  New Model examples carry decisions; docs, changelog, 0.8.0
2026-10-19 23:13:05 +03:00

55 lines
2.4 KiB
TypeScript

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 {}