====== Core API ====== API-Referenz für die WvdS VSCode Core Extension. ===== Übersicht ===== Die Core Extension stellt zentrale Dienste bereit, die von allen anderen Extensions genutzt werden können. uses WvdS.Core.Services, WvdS.Core.Toolchain, WvdS.Core.Logging; ===== Logging-Dienst ===== ==== LogInfo ==== procedure LogInfo(const AMessage: string); procedure LogInfo(const AFormat: string; const AArgs: array of const); Schreibt eine Info-Meldung in den Output Channel. ==== LogWarn ==== procedure LogWarn(const AMessage: string); procedure LogWarn(const AFormat: string; const AArgs: array of const); Schreibt eine Warnung in den Output Channel. ==== LogError ==== procedure LogError(const AMessage: string); procedure LogError(const AFormat: string; const AArgs: array of const); Schreibt einen Fehler in den Output Channel. ==== LogDebug ==== {$IFDEF DEBUG} procedure LogDebug(const AMessage: string); procedure LogDebug(const AFormat: string; const AArgs: array of const); {$ENDIF} Schreibt eine Debug-Meldung. Nur verfügbar bei Kompilierung mit ''-dDEBUG''. ===== Toolchain-Dienst ===== ==== GetToolPath ==== function GetToolPath(ATool: TWvdSToolType): string; Gibt den konfigurierten Pfad für ein Werkzeug zurück. ^ TWvdSToolType ^ Beschreibung ^ | ttFPC | Free Pascal Compiler | | ttPas2js | pas2js Transpiler | | ttLazbuild | Lazarus Build Tool | | ttInnoSetup | Inno Setup Compiler | | ttMake | GNU Make | **Beispiel:** var FpcPath: string; begin FpcPath := GetToolPath(ttFPC); if FpcPath = '' then raise EWvdSToolNotFound.Create(rsToolNotFound); end; ==== GetToolVersion ==== function GetToolVersion(ATool: TWvdSToolType): string; Gibt die Version eines installierten Werkzeugs zurück. ==== IsToolAvailable ==== function IsToolAvailable(ATool: TWvdSToolType): Boolean; Prüft, ob ein Werkzeug verfügbar ist. ==== AutoDetectTools ==== procedure AutoDetectTools; Führt automatische Erkennung aller Werkzeuge durch. ===== Konfiguration ===== ==== GetConfiguration ==== function GetConfiguration(const ASection: string): TJSObject; Liest VS Code Konfiguration. **Beispiel:** var Config: TJSObject; LogLevel: string; begin Config := GetConfiguration('wvds.core'); LogLevel := String(Config['logLevel']); end; ==== UpdateConfiguration ==== procedure UpdateConfiguration( const ASection: string; const AKey: string; AValue: JSValue; ATarget: TConfigurationTarget ); Schreibt VS Code Konfiguration. ^ TConfigurationTarget ^ Beschreibung ^ | ctGlobal | Benutzer-Einstellungen | | ctWorkspace | Workspace-Einstellungen | | ctWorkspaceFolder | Ordner-Einstellungen | ===== Event-Bus ===== ==== PublishEvent ==== procedure PublishEvent(const AEventName: string; AData: TJSObject); Veröffentlicht ein Event für andere Extensions. **Beispiel:** var Data: TJSObject; begin Data := TJSObject.New; Data['projectPath'] := ProjectPath; Data['success'] := True; PublishEvent('wvds.build.completed', Data); end; ==== SubscribeEvent ==== procedure SubscribeEvent( const AEventName: string; AHandler: TWvdSEventHandler ); Abonniert Events. **Beispiel:** procedure HandleBuildCompleted(AData: TJSObject); begin if Boolean(AData['success']) then LogInfo('Build succeeded!') else LogError('Build failed!'); end; // Bei Aktivierung: SubscribeEvent('wvds.build.completed', @HandleBuildCompleted); ===== UI-Dienste ===== ==== ShowInfoMessage ==== procedure ShowInfoMessage(const AMessage: string); function ShowInfoMessage( const AMessage: string; const AItems: array of string ): TJSPromise; // Resolves to selected item ==== ShowWarningMessage ==== procedure ShowWarningMessage(const AMessage: string); ==== ShowErrorMessage ==== procedure ShowErrorMessage(const AMessage: string); ==== ShowQuickPick ==== function ShowQuickPick( const AItems: array of string; const APlaceholder: string ): TJSPromise; ===== Workspace-Dienste ===== ==== GetWorkspaceRoot ==== function GetWorkspaceRoot: string; Gibt den Pfad zum Workspace-Ordner zurück. ==== GetOpenDocument ==== function GetOpenDocument: string; Gibt den Pfad zum aktuell geöffneten Dokument zurück. ===== Siehe auch ===== * [[.:meta-api|Meta API]] * [[.:vscode-wrapper|VSCode Wrapper]] * [[.:extension-entwicklung|Extension-Entwicklung]]