import * as vscode from 'vscode'; import { validateTplDocument } from './core/TplLinter'; import { TplCodeActionProvider } from './providers/TplCodeActionProvider'; import { TplDocumentFormatter } from './providers/TplDocumentFormatter'; import { TplCompletionProvider } from './providers/TplCompletionProvider'; import { TplHoverProvider } from './providers/TplHoverProvider'; export function activate(context: vscode.ExtensionContext) { const diagnosticCollection = vscode.languages.createDiagnosticCollection('tpl-scanner'); context.subscriptions.push(diagnosticCollection); // Linter-Events binden vscode.workspace.onDidOpenTextDocument(doc => validateTplDocument(doc, diagnosticCollection)); vscode.workspace.onDidChangeTextDocument(event => validateTplDocument(event.document, diagnosticCollection)); // Live-Reload für Einstellungen vscode.workspace.onDidChangeConfiguration(e => { if (e.affectsConfiguration('tpl')) { for (const doc of vscode.workspace.textDocuments) { validateTplDocument(doc, diagnosticCollection); } } }); // Provider registrieren context.subscriptions.push(vscode.languages.registerCodeActionsProvider('tpl', new TplCodeActionProvider(), { providedCodeActionKinds: [vscode.CodeActionKind.QuickFix] })); context.subscriptions.push(vscode.languages.registerDocumentFormattingEditProvider('tpl', new TplDocumentFormatter())); context.subscriptions.push(vscode.languages.registerCompletionItemProvider('tpl', new TplCompletionProvider(), '.')); context.subscriptions.push(vscode.languages.registerHoverProvider('tpl', new TplHoverProvider())); // Bei Aktivierung offene Dokumente einmal scannen for (const doc of vscode.workspace.textDocuments) { validateTplDocument(doc, diagnosticCollection); } }