====== WvdS VSCode Build ======
La Build Extension integra Free Pascal Compiler (FPC) e pas2js in VS Code. Permette compilazione, pulizia e formattazione della clausola Uses direttamente dall'editor.
===== Funzione e scopo =====
La Build Extension offre:
* **Integrazione FPC** - Compilazione Pascal nativa per desktop e server
* **Integrazione pas2js** - Transpilazione in JavaScript per applicazioni web
* **Problem Matcher** - Gli errori del compilatore vengono visualizzati nel pannello Problems
* **Uses-Formatter** - Formattazione automatica delle clausole Uses
===== Comandi =====
^ Comando ^ Scorciatoia ^ Descrizione ^
| ''WvdS: Build Project'' | ''Ctrl+Shift+B'' | Compila il progetto corrente |
| ''WvdS: Clean Build'' | - | Elimina gli artefatti di build |
| ''WvdS: Rebuild Project'' | - | Clean + Build in un unico passaggio |
| ''WvdS: Format Uses Clauses'' | ''Ctrl+Alt+U'' | Formatta le clausole Uses nel file corrente |
| ''WvdS: Remove Unused Units'' | - | Rimuove le unit non utilizzate da Uses |
===== Flusso di lavoro Build =====
==== Compilare il progetto ====
- Aprite un file Pascal (.pas, .lpr, .dpr)
- Premete ''Ctrl+Shift+B'' o eseguite ''WvdS: Build Project''
- Il compilatore viene eseguito nel Terminal
- Gli errori appaiono nel pannello Problems
==== Tipi di build ====
^ Tipo ^ Descrizione ^ Utilizzo ^
| Build | Build incrementale, solo unit modificate | Sviluppo normale |
| Clean | Elimina tutti i file .o, .ppu, .exe | In caso di problemi, prima del release |
| Rebuild | Clean + Build | Ricompilazione completa |
==== Selezione del compilatore ====
L'estensione sceglie automaticamente il compilatore corretto:
^ Estensione file ^ Compilatore ^ Output ^
| .lpr, .pas (con .lpi) | FPC via lazbuild | Binario nativo |
| .dpr, .dpk | FPC | Binario nativo |
| .pas (con pas2js.cfg) | pas2js | JavaScript |
===== Uses-Clause-Formatter =====
Il formatter organizza e pulisce le clausole Uses.
==== Funzionalità ====
* **Ordinamento** - Alfabetico, per lunghezza, o nessuno
* **Raggruppamento** - Opzionale: RTL, LCL, Unit personalizzate
* **Indentazione** - Larghezza di indentazione configurabile
* **Lunghezza riga** - A capo automatico al superamento
* **Rimozione inutilizzati** - Rimozione delle unit non utilizzate
==== Esempio ====
**Prima:**
uses
SysUtils,Classes,Forms, Dialogs,
StdCtrls, Windows,
MyUnit;
**Dopo (alfabetico, 2 spazi, 80 caratteri):**
uses
Classes, Dialogs, Forms, MyUnit, StdCtrls, SysUtils, Windows;
==== Menu contestuale ====
Clic destro in un file Pascal mostra il sottomenu "Uses Clauses":
* Format Uses Clauses
* Remove Unused Units
===== Impostazioni =====
==== Impostazioni Build ====
{
"wvds.build.fpcPath": "",
"wvds.build.pas2jsPath": ""
}
Queste impostazioni vengono ereditate dalla Core Extension se lasciate vuote.
==== Impostazioni Uses-Formatter ====
{
// Ordine di ordinamento
// "alphabetical" | "lengthAsc" | "lengthDesc" | "none"
"wvds.usesFormatter.sortOrder": "alphabetical",
// Indentazione (numero di spazi)
"wvds.usesFormatter.indentSize": 2,
// Lunghezza massima della riga
"wvds.usesFormatter.maxLineLength": 80,
// Raggruppamento per tipo (RTL, LCL, Custom)
"wvds.usesFormatter.groupByType": false,
// Rimuovi automaticamente le unit inutilizzate
"wvds.usesFormatter.removeUnused": false
}
==== Opzioni di ordinamento nel dettaglio ====
^ Opzione ^ Descrizione ^ Esempio ^
| alphabetical | Ordinamento A-Z (default) | Classes, Dialogs, Forms, SysUtils |
| lengthAsc | Prima le più corte | DB, Forms, Classes, SysUtils |
| lengthDesc | Prima le più lunghe | SysUtils, Classes, Forms, DB |
| none | Mantieni ordine originale | - |
==== Raggruppamento ====
Con raggruppamento attivato (''groupByType: true''):
uses
// RTL
Classes, SysUtils,
// LCL
Forms, StdCtrls,
// Custom
MyUnit, AnotherUnit;
===== Problem Matcher =====
L'estensione analizza l'output del compilatore e mostra gli errori nel pannello Problems.
==== Formati supportati ====
**Formato FPC:**
myunit.pas(42,10) Error: Identifier not found "TFoo"
**Formato pas2js:**
myunit.pas(42,10) Error: identifier "TFoo" not found
==== Navigazione ====
* Clic su un errore apre il file nella posizione corrispondente
* ''F8'' salta all'errore successivo
* ''Shift+F8'' salta all'errore precedente
===== Configurazione Build per progetto =====
Create un ''build.cfg'' nella cartella del progetto per impostazioni specifiche:
[build]
compiler=fpc
target=windows-x64
mode=debug
[debug]
optimizations=off
symbols=on
assertions=on
[release]
optimizations=3
symbols=off
assertions=off
==== Opzioni disponibili ====
^ Opzione ^ Valori ^ Descrizione ^
| compiler | fpc, pas2js, lazbuild | Compilatore da utilizzare |
| target | windows-x64, linux-x64, web, ... | Piattaforma di destinazione |
| mode | debug, release | Modalità di build |
| optimizations | off, 1, 2, 3 | Livello di ottimizzazione |
| symbols | on, off | Genera simboli di debug |
| assertions | on, off | Attiva le assertion |
===== Scorciatoie da tastiera =====
^ Azione ^ Windows/Linux ^ macOS ^
| Build Project | ''Ctrl+Shift+B'' | ''Cmd+Shift+B'' |
| Format Uses | ''Ctrl+Alt+U'' | ''Cmd+Alt+U'' |
===== Risoluzione dei problemi =====
==== "Compiler not found" ====
**Causa:** FPC/pas2js non configurato.
**Soluzione:**
- Aprite ''WvdS: Toolchain Configuration...''
- Configurate il percorso del compilatore
- In alternativa: impostate ''wvds.build.fpcPath'' in settings.json
==== Gli errori non vengono visualizzati nel pannello Problems ====
**Causa:** L'output del compilatore differisce dal formato atteso.
**Soluzione:**
- Controllate l'output del Terminal per errori
- Assicuratevi che la versione del compilatore sia compatibile
- Segnalate il problema su GitHub
==== Uses-Formatter non cambia nulla ====
**Causa:** Nessuna clausola Uses trovata o file non supportato.
**Soluzione:**
- Assicuratevi che il file sia un .pas, .pp, .lpr, .dpr o .inc
- Verificate che sia presente una clausola Uses
- Controllate le impostazioni
===== Dettagli tecnici =====
^ Proprietà ^ Valore ^
| Extension ID | wvds.wvds-vscode-build |
| Attivazione | onCommand, onLanguage:pascal |
| Dipendenze | wvds-vscode-core |
| Min. VS Code | 1.85.0 |
===== Vedere anche =====
* [[.:core|Core Extension - Configurazione toolchain]]
* [[.:projects|Projects Extension - Template di progetto]]
* [[.:packaging|Packaging Extension - Creare VSIX]]