Inhaltsverzeichnis
VSCode Wrapper API
Pascal-wrapperi za VS Code Extension API.
Pregled
WvdS.VSCode.* unit-i nude tipski sigurne Pascal-wrappere za VS Code API.
sources/common/web/vscode/ ├── VSCode.API.pas # Bazni API ├── VSCode.Commands.pas # Registracija naredbi ├── VSCode.Configuration.pas # Postavke ├── VSCode.Documents.pas # Tekstualni dokumenti ├── VSCode.Languages.pas # Jezične značajke ├── VSCode.WebView.pas # WebView-paneli ├── VSCode.Window.pas # Window-API ├── VSCode.Workspace.pas # Workspace-API └── VSCode.ExtensionExports.pas # Entry-Point-Export
VSCode.Commands
RegisterCommand
function RegisterCommand( const ACommand: string; AHandler: TCommandHandler ): TDisposable; type TCommandHandler = procedure(Args: TJSValueDynArray);
Primjer:
uses VSCode.Commands; procedure HandleMyCommand(Args: TJSValueDynArray); begin ShowInfoMessage('Command executed!'); end; // Kod aktivacije: Context.Subscriptions.Push( RegisterCommand('myext.mycommand', @HandleMyCommand) );
ExecuteCommand
function ExecuteCommand(const ACommand: string): TJSPromise; function ExecuteCommand( const ACommand: string; const AArgs: array of JSValue ): TJSPromise;
VSCode.Window
Poruke
procedure ShowInfoMessage(const AMessage: string); procedure ShowWarningMessage(const AMessage: string); procedure ShowErrorMessage(const AMessage: string); function ShowInfoMessageWithItems( const AMessage: string; const AItems: array of string ): TJSPromise; // Resolves to selected item or undefined
Unos
function ShowInputBox(AOptions: TInputBoxOptions): TJSPromise; type TInputBoxOptions = record Prompt: string; PlaceHolder: string; Value: string; Password: Boolean; end;
function ShowQuickPick( const AItems: array of string; AOptions: TQuickPickOptions ): TJSPromise; type TQuickPickOptions = record PlaceHolder: string; CanPickMany: Boolean; end;
Output Channel
function CreateOutputChannel(const AName: string): TOutputChannel; type TOutputChannel = class procedure Append(const AText: string); procedure AppendLine(const AText: string); procedure Show; procedure Hide; procedure Clear; procedure Dispose; end;
StatusBar
function CreateStatusBarItem( AAlignment: TStatusBarAlignment; APriority: Integer ): TStatusBarItem; type TStatusBarAlignment = (sbaLeft, sbaRight); TStatusBarItem = class Text: string; Tooltip: string; Command: string; procedure Show; procedure Hide; procedure Dispose; end;
VSCode.WebView
WebviewPanel
function CreateWebviewPanel( const AViewType: string; const ATitle: string; AShowOptions: TViewColumn; AOptions: TWebviewOptions ): TWebviewPanel; type TViewColumn = (vcOne, vcTwo, vcThree, vcBeside, vcActive); TWebviewOptions = record EnableScripts: Boolean; LocalResourceRoots: TStringArray; end; TWebviewPanel = class Webview: TWebview; Title: string; OnDidDispose: TEvent; procedure Reveal; procedure Dispose; end; TWebview = class Html: string; OnDidReceiveMessage: TMessageHandler; procedure PostMessage(AMessage: TJSObject); end;
VSCode.Documents
Tekstualni dokumenti
function GetActiveTextEditor: TTextEditor; function OpenTextDocument(const APath: string): TJSPromise; type TTextEditor = class Document: TTextDocument; Selection: TSelection; procedure Edit(ACallback: TEditBuilderCallback); end; TTextDocument = class Uri: string; FileName: string; LanguageId: string; LineCount: Integer; function GetText: string; function LineAt(ALine: Integer): TTextLine; end;
Eventi
procedure OnDidOpenTextDocument(AHandler: TDocumentHandler); procedure OnDidSaveTextDocument(AHandler: TDocumentHandler); procedure OnDidCloseTextDocument(AHandler: TDocumentHandler); procedure OnDidChangeTextDocument(AHandler: TDocumentChangeHandler);
VSCode.Workspace
function GetWorkspaceFolders: TWorkspaceFolderArray; function GetConfiguration(const ASection: string): TWorkspaceConfiguration; type TWorkspaceFolder = record Uri: string; Name: string; Index: Integer; end; TWorkspaceConfiguration = class function Get(const AKey: string; ADefault: JSValue): JSValue; procedure Update( const AKey: string; AValue: JSValue; ATarget: TConfigurationTarget ); end;
VSCode.Languages
CompletionProvider
procedure RegisterCompletionItemProvider( const ASelector: TDocumentSelector; AProvider: TCompletionProvider; const ATriggerCharacters: array of string ); type TCompletionProvider = class abstract function ProvideCompletionItems( ADocument: TTextDocument; APosition: TPosition ): TCompletionList; virtual; abstract; end;
HoverProvider
procedure RegisterHoverProvider( const ASelector: TDocumentSelector; AProvider: THoverProvider ); type THoverProvider = class abstract function ProvideHover( ADocument: TTextDocument; APosition: TPosition ): THover; virtual; abstract; end;
VSCode.ExtensionExports
procedure ExportActivateDeactivate( AActivate: TActivateProc; ADeactivate: TDeactivateProc ); type TActivateProc = procedure(AContext: TExtensionContext); TDeactivateProc = procedure;
Uporaba:
initialization ExportActivateDeactivate(@Activate, @Deactivate);
Mapiranje tipova
| VS Code (JS) | Pascal |
|---|---|
| string | string |
| number | Double / Integer |
| boolean | Boolean |
| undefined | nil |
| object | TJSObject |
| array | TJSArray |
| Promise | TJSPromise |
| Disposable | TDisposable |
Vidi također
Zuletzt geändert: 29.01.2026. u 22:31