Upravljanje projektov, Build-System, Debugging in Form Designer za Free Pascal / Lazarus v Visual Studio Code.
Package-ID: wvds.wvds-fpc-solution-manager
Solution Manager je osrednja razširitev za razvoj v Free Pascalu v VSCode. Ponuja:
lazbuild ali FPC Directfpdserver / GDBpaslsptop ali jcf integracijaRazširitev samodejno odkrije projekte v odprtem Workspace:
| Datoteka | Vrsta projekta |
.lpi | Lazarus-projekt (konzola, GUI, knjižnica) |
|---|---|
.lpg | Projektna skupina (več projektov) |
.lpk | Lazarus-paket |
package.json | VSCode Extension (pas2js, virtualni projekt) |
.iss | InnoSetup Installer-skripta |
Multi-Root Workspaces so podprti — vsaka mapa Workspace se pregleda ločeno.
Tree View se pojavi v Activity Bar (leva stran) z ikono FPC Solution Manager.
Workspace Folder
├── Projektna skupina (.lpg)
│ ├── Projekt (.lpi) ← z Inline Build/Run gumbi
│ │ ├── Enote (.pas)
│ │ ├── Obrazci (.pas + .lfm)
│ │ ├── Build načini (Debug, Release, ...)
│ │ ├── Odvisnosti (Required Packages)
│ │ └── Viri (.rc)
│ └── Projekt 2 ...
├── Paket (.lpk)
│ ├── Enote
│ └── Required Packages
├── Extension (package.json) ← Virtualni pas2js-projekt
│ ├── Enote
│ └── npm Dependencies
└── Setup (.iss) ← InnoSetup projekt
└── Sekcije ([Files], [Run], ...)
Desni klik na elemente drevesa prikaže kontekstno odvisna dejanja:
Projekt:
Projektna skupina:
Enota / Obrazec:
Desni klik v Pascal-urejevalniku (.pas, .pp, .lpr) prikaže podmeni FPC Solution Manager:
Vsak projekt ima lahko več build-načinov:
| Način | Opis |
| Debug | Informacije za razhroščevanje, brez optimizacije |
|---|---|
| Release | Optimizirano, brez informacij za razhroščevanje |
| Custom | Uporabniško definirane možnosti prevajalnika |
Zamenjava build-načina: Desni klik na projekt → Select Build Mode ali Ctrl+Shift+M.
| Ukaz | Opis | Bližnjica |
| Build Project | Inkrementalni build | Ctrl+Shift+B |
|---|---|---|
| Rebuild Project | Celotna ponovna gradnja | Shift+F9 |
| Clean Project | Brisanje build-artefaktov | Ctrl+Shift+C |
| Build and Run | Prevedi in zaženi | F9 |
| Compile (Syntax Check) | Samo preverjanje sintakse, brez povezovanja | — |
| Build All | Prevedi vse projekte v skupini | — |
| Build in Dependency Order | Prevedi projekte po odvisnostih | — |
V nastavitvah lahko definirate lupinske ukaze, ki se zaženejo pred/po vsakem buildu:
fpc-solution-manager.preBuildCommand: "echo Building {projectName} in {buildMode}"
fpc-solution-manager.postBuildCommand: "copy {outputPath} D:\\Deploy\\"
Razpoložljive spremenljivke: {projectName}, {buildMode}, {projectDir}, {outputPath}
| Ukaz | Bližnjica | Opis |
| Run Project | F5 | Zaženi prevedeni program |
|---|---|---|
| Build and Run | F9 | Prevedi in takoj zaženi |
| Stop Process | Shift+F5 / Ctrl+F2 | Prekini tekoči proces |
Razhroščevalnik potrebuje fpdserver (Free Pascal Debug Server) kot zaledje.
Pridobitev fpdserver:
fpdserver je že vključen (<lazarus>/tools/fpdserver)cd <fpc-source>/packages/fcl-passrc/utils/fpdserver lazbuild --bm=Release fpdserver.lpi
Nastavitev:
fpc-solution-manager.fpdserverPath — Pot do fpdserver.exe (prazno = samodejna zaznava)fpdserver integracija razhroščevanja ne deluje. Razširitev samodejno išče v namestitvenem imeniku Lazarusa.
Ustvarite launch.json v mapi .vscode delovnega prostora:
{ "type": "lazarus", "request": "launch", "name": "Debug MyApp", "program": "${command:fpcse2.getExecutablePath}", "cwd": "${workspaceFolder}", "stopOnEntry": false, "args": [] }
Namig: ${command:fpcse2.getExecutablePath} samodejno določi izhodno pot iz nastavitev projekta.
| Atribut | Tip | Opis | Privzeto |
program | String | Pot do prevedenega programa (obvezno) | — |
|---|---|---|---|
cwd | String | Delovni imenik | ${workspaceFolder} |
args | Array | Argumenti ukazne vrstice | [] |
stopOnEntry | Boolean | Ustavi se ob zagonu programa | false |
.pas in .inc datotekahCtrl+Alt+W pri izbiri).pas in .inc datotekahEdit Breakpoint → vnesite pogoj (npr. i > 100)Spremljanje izrazov med izvajanjem:
Ctrl+Alt+W pri izbranem besedilu v Pascal-urejevalnikuMyRecord.Field), indeksi polj (MyArray[0])Interaktivno vrednotenje med sejo razhroščevanja:
EnterV spodnjem panelu (področje FPC):
Za uspešno razhroščevanje mora biti projekt zgrajen v načinu Debug:
Ctrl+Shift+M → Debug-g -gl -gw morajo biti aktivne-O2 v načinu Debug| Težava | Rešitev |
| fpdserver ni najden | Nastavite fpc-solution-manager.fpdserverPath ali zgradite fpdserver (glejte zgoraj) |
|---|---|
| Točke prekinitve se ne sprožijo | Zgradite projekt v načinu Debug (Ctrl+Shift+M → Debug) |
| Spremenljivke niso vidne | Preverite informacije za razhroščevanje: -g -gl -gw morajo biti nastavljene |
| Korakanje nepričakovano skoči | Izklopite optimizacijo: -O2 uporabljajte le v načinu Release |
Form Designer se samodejno odpre za .lfm datoteke.
| Dejanje | Bližnjica |
| Toggle Form/Code | F12 |
|---|---|
| View Form as Text | Alt+F12 |
| Select Designer Skin | Command Palette |
Designer podpira skine za vizualni izgled:
fpc-solution-manager.designer.skinName — Aktivni skin (npr. WvdS-Shell)fpc-solution-manager.designer.skinVariant — Varianta (npr. Amber, Plum)fpc-solution-manager.designer.defaultSkinAutoDetect — Samodejna Light/Dark zaznava glede na VSCode-temo| Urejevalnik | Vrsta datoteke | Opis |
| Form Designer | .lfm | Vizualni Lazarus-urejevalnik obrazcev |
|---|---|---|
| PO Translation Editor | .po | Urejevalnik prevodov za lokalizacijo |
| Resource Editor | .rc | Urejevalnik virov (ikone, bitne slike, nizi) |
Odpre se za .po datoteke (GNU gettext). Ponuja:
.po datoteko
Odpre se za .rc datoteke. Ponuja:
Opcijska integracija Pascal Language Serverja za napredne funkcije kode.
fpc-solution-manager.pasls.enabled — true (privzeto)fpc-solution-manager.paslsPath — Pot do pasls.exe (prazno = samodejna zaznava)fpc-solution-manager.lazarusSourcePath — Lazarus-izvorna koda za razreševanje simbolov| Funkcionalnost | Tipka | Opis |
| Code Completion | Ctrl+Space | Dopolnjevanje identifikatorjev, metod, enot |
|---|---|---|
| Signature Help | samodejno | Seznam parametrov ob tipkanju ( |
| Go to Definition | F12 | Skok na definicijo/implementacijo simbola |
| Go to Declaration | Ctrl+Click na vmesnik | Skok na deklaracijo v vmesniku (ne na implementacijo) |
| Go to Implementation | Ctrl+Shift+F12 | Skok na implementacijo (interno delegira na Definition) |
| Document Symbols | Ctrl+Shift+O | Seznam simbolov trenutne datoteke — metode in procedure (Outline) |
| Workspace Symbols | Ctrl+T | Iskanje simbolov v vseh datotekah delovnega prostora |
| Find All References | Shift+F12 | Iskanje vseh uporab simbola v delovnem prostoru |
| Document Highlight | samodejno | Poudarjanje vseh pojavitev identifikatorja v trenutni datoteki |
| Hover s tipsko informacijo | miškin kazalec | Signatura + PasDoc-dokumentacija + izvorna pozicija (glej spodaj) |
Ko se z miško pomaknete nad simbol, hover-tooltip prikaže do tri ravni informacij:
FindSmartHint (npr. private procedure TMyClass.DoSomething(const A: Integer): Boolean) — vključno z vidnostjo, imenom razreda, modifikatorji parametrov in tipom vrnitve( @abstract(…) @param(…) @returns(…) *) neposredno iz izvorne kode, oblikovani kot Markdown
- Izvorna pozicija — Ime datoteke in vrstična pozicija deklaracije (npr. MyUnit.pas(42,5))
pasls zagotavlja textDocument/hover in interno uporablja CodeTools FindSmartHint (enak mehanizem kot Lazarus IDE) za ekstrakcijo signatur. PasDoc-komentarji se preberejo prek GetPasDocComments in se na strežniški strani oblikujejo v Markdown. Če pasls ni na voljo, razširitev uporabi textDocument/definition kot nadomestek s klientskim večvrstičnim izločevanjem.
Primer hover-a:
<code>
┌───────────────────────────────────────────────────────────┐
│ private procedure TMyClass.DoSomething(const A: Integer); │ ← Signatura (FindSmartHint)
│ ───────────────────────────────────────────────────────── │
│ Izvede akcijo. │ ← @abstract
│ │
│ Parameters: │
│ - A — Vrednost │ ← @param
│ ───────────────────────────────────────────────────────── │
│ Source: MyUnit.pas(42,5) │ ← Izvorna pozicija
└───────────────────────────────────────────────────────────┘
</code>
Podprte PasDoc-oznake:
| Oznaka | Opis | Primer |
^ @abstract | Kratek opis | @abstract(Izračuna kontrolno vsoto) |
^ @param | Dokumentacija parametra | @param(Buffer Podatki za preverjanje) |
^ @returns | Vrnjena vrednost | @returns(CRC32-vrednost kot Cardinal) |
^ @raises | Izjeme | @raises(EInvalidOperation Ob praznem bufferju) |
<note>PasDoc-komentarji se začnejo z ( (dvojna zvezdica). Navadni (* komentarji se ne prikažejo kot dokumentacija.</note>Naslednje funkcionalnosti zahtevajo strežniško podporo pasls in trenutno še niso na voljo:
F2) — Preimenovanje simbola v vseh datotekah. Zahteva textDocument/rename v pasls.textDocument/rename, bo funkcionalnost samodejno delovala.
Ctrl+T odpre iskalnik simbolov delovnega prostora. Tu je mogoče iskati procedure, funkcije, tipe in spremenljivke v vseh datotekah delovnega prostora.
Enter navigira neposredno na mesto definicije| Nastavitev | Opis | Privzeto |
formatter.engine | ptop, jcf ali none | ptop |
|---|---|---|
formatter.formatOnSave | Samodejno oblikovanje ob shranjevanju | false |
Linux-buildi na Windows prek WSL (Windows Subsystem for Linux).
wsl –install v PowerShell (skrbnik)Ubuntu (privzeto) ali Debian# V WSL: sudo apt install fpc lazarus
fpc-solution-manager.wslEnabled — truefpc-solution-manager.wslActiveDistro — WSL-distribucija (npr. Ubuntu)fpc-solution-manager.wslLazbuildPath — Linux-pot do lazbuild (npr. /usr/bin/lazbuild)fpc-solution-manager.wslFpcPath — Linux-pot do fpcCtrl+Shift+B (ko je WSL-cilj aktiven)lazbuild / fpc znotraj WSL-instanceShow Dependencies — na voljo v Tree View in v kontekstnem meniju urejevalnika:
| Klic | Vedenje |
| Desni klik na projekt v Tree | Prikaže odvisnosti projekta (vse enote in pakete) |
|---|---|
| Desni klik na paket v Tree | Prikaže odvisnosti paketa |
| Desni klik na enoto v Tree | Prikaže odvisnosti enote (uses klavzule) |
| Kontekstni meni urejevalnika → Show Dependencies | Prikaže odvisnosti trenutno odprte datoteke |
Show Call Hierarchy — na voljo v Tree View in v kontekstnem meniju urejevalnika:
Desni klik na enoto → Show Call Hierarchy odpre WebView-panel z:
Desni klik v Pascal-urejevalniku → FPC Solution Manager → Show Call Hierarchy prikaže hierarhijo klicev kot vgrajeni Peek-pripomoček neposredno v urejevalniku (podobno kot Peek Definition). Kazalec mora biti na imenu funkcije ali metode.
textDocument/references, ki trenutno še ni na voljo.
| Bližnjica | Dejanje | Kontekst |
Ctrl+Shift+B | Build Project | Tree View: Projekt |
|---|---|---|
F5 | Run Project | Tree View: Projekt |
F9 | Build and Run | Tree View: Projekt |
Shift+F9 | Rebuild Project | Tree View: Projekt |
Ctrl+Shift+C | Clean Project | Tree View: Projekt |
F4 | Properties | Tree View: Projekt/Paket |
F12 | Toggle Form/Code | Pascal-urejevalnik / Form Designer |
Alt+F12 | View Form as Text | Form Designer |
Ctrl+Shift+A | Add Unit | Tree View: Projekt/Mapa |
Ctrl+Shift+M | Select Build Mode | Tree View: Projekt |
Ctrl+Shift+R | Refresh Tree | Tree View fokusiran |
Shift+F5 / Ctrl+F2 | Stop Process | Tree View |
Alt+Shift+R | Reveal in Explorer | Tree View: Enota/Obrazec |
Enter | Open File | Tree View: Enota/Obrazec |
Ctrl+Alt+W | Add Watch | Pascal-urejevalnik z izbiro |