Inhaltsverzeichnis
WvdS VSCode Build
The Build extension integrates the Free Pascal Compiler (FPC) and pas2js into VS Code. It enables compilation, cleanup, and uses-clause formatting directly from the editor.
Function and Purpose
The Build extension provides:
- FPC Integration - Native Pascal compilation for desktop and server
- pas2js Integration - Transpilation to JavaScript for web applications
- Problem Matcher - Compiler errors are displayed in the Problems panel
- Uses Formatter - Automatic formatting of uses clauses
Commands
| Command | Keyboard Shortcut | Description |
|---|---|---|
WvdS: Build Project | Ctrl+Shift+B | Compiles the current project |
WvdS: Clean Build | - | Deletes build artifacts |
WvdS: Rebuild Project | - | Clean + Build in one step |
WvdS: Format Uses Clauses | Ctrl+Alt+U | Formats uses clauses in the current file |
WvdS: Remove Unused Units | - | Removes unused units from uses |
Build Workflow
Compiling a Project
- Open a Pascal file (.pas, .lpr, .dpr)
- Press
Ctrl+Shift+Bor runWvdS: Build Project - The compiler runs in the Terminal
- Errors appear in the Problems panel
Build Types
| Type | Description | Usage |
|---|---|---|
| Build | Incremental build, only changed units | Normal development |
| Clean | Deletes all .o, .ppu, .exe files | For problems, before release |
| Rebuild | Clean + Build | Complete recompilation |
Compiler Selection
The extension automatically selects the correct compiler:
| File Extension | Compiler | Output |
|---|---|---|
| .lpr, .pas (with .lpi) | FPC via lazbuild | Native Binary |
| .dpr, .dpk | FPC | Native Binary |
| .pas (with pas2js.cfg) | pas2js | JavaScript |
Uses Clause Formatter
The formatter organizes and cleans up uses clauses.
Features
- Sorting - Alphabetical, by length, or none
- Grouping - Optional: RTL, LCL, Custom Units
- Indentation - Configurable indentation width
- Line Length - Automatic wrapping when exceeded
- Unused Removal - Removal of unused units
Example
Before:
uses SysUtils,Classes,Forms, Dialogs, StdCtrls, Windows, MyUnit;
After (alphabetical, 2 spaces, 80 characters):
uses Classes, Dialogs, Forms, MyUnit, StdCtrls, SysUtils, Windows;
Context Menu
Right-click in a Pascal file shows the „Uses Clauses“ submenu:
- Format Uses Clauses
- Remove Unused Units
Settings
Build Settings
{
"wvds.build.fpcPath": "",
"wvds.build.pas2jsPath": ""
}
Uses Formatter Settings
{
// Sort order
// "alphabetical" | "lengthAsc" | "lengthDesc" | "none"
"wvds.usesFormatter.sortOrder": "alphabetical",
// Indentation (number of spaces)
"wvds.usesFormatter.indentSize": 2,
// Maximum line length
"wvds.usesFormatter.maxLineLength": 80,
// Group by type (RTL, LCL, Custom)
"wvds.usesFormatter.groupByType": false,
// Automatically remove unused units
"wvds.usesFormatter.removeUnused": false
}
Sorting Options in Detail
| Option | Description | Example |
|---|---|---|
| alphabetical | A-Z sorting (default) | Classes, Dialogs, Forms, SysUtils |
| lengthAsc | Shortest first | DB, Forms, Classes, SysUtils |
| lengthDesc | Longest first | SysUtils, Classes, Forms, DB |
| none | Keep original order | - |
Grouping
With grouping enabled (groupByType: true):
uses // RTL Classes, SysUtils, // LCL Forms, StdCtrls, // Custom MyUnit, AnotherUnit;
Problem Matcher
The extension parses compiler output and shows errors in the Problems panel.
Supported Formats
FPC Format:
myunit.pas(42,10) Error: Identifier not found "TFoo"
pas2js Format:
myunit.pas(42,10) Error: identifier "TFoo" not found
Navigation
- Click on an error to open the file at that location
F8jumps to the next errorShift+F8jumps to the previous error
Per-Project Build Configuration
Create a build.cfg in the project folder for project-specific settings:
[build] compiler=fpc target=windows-x64 mode=debug [debug] optimizations=off symbols=on assertions=on [release] optimizations=3 symbols=off assertions=off
Available Options
| Option | Values | Description |
|---|---|---|
| compiler | fpc, pas2js, lazbuild | Compiler to use |
| target | windows-x64, linux-x64, web, … | Target platform |
| mode | debug, release | Build mode |
| optimizations | off, 1, 2, 3 | Optimization level |
| symbols | on, off | Generate debug symbols |
| assertions | on, off | Enable assertions |
Keyboard Shortcuts
| Action | Windows/Linux | macOS |
|---|---|---|
| Build Project | Ctrl+Shift+B | Cmd+Shift+B |
| Format Uses | Ctrl+Alt+U | Cmd+Alt+U |
Troubleshooting
"Compiler not found"
Cause: FPC/pas2js not configured.
Solution:
- Open
WvdS: Toolchain Configuration… - Configure the compiler path
- Alternatively: Set
wvds.build.fpcPathin settings.json
Errors Not Shown in Problems Panel
Cause: Compiler output deviates from expected format.
Solution:
- Check the Terminal output for errors
- Ensure the compiler version is compatible
- Report the issue on GitHub
Uses Formatter Does Nothing
Cause: No uses clause found or file not supported.
Solution:
- Ensure the file is a .pas, .pp, .lpr, .dpr, or .inc
- Check if a uses clause exists
- Check the settings
Technical Details
| Property | Value |
|---|---|
| Extension ID | wvds.wvds-vscode-build |
| Activation | onCommand, onLanguage:pascal |
| Dependencies | wvds-vscode-core |
| Min. VS Code | 1.85.0 |