====== 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]]