Inhaltsverzeichnis

FPC Solution Manager

Upravljanje projektov, Build-System, Debugging in Form Designer za Free Pascal / Lazarus v Visual Studio Code.

Package-ID: wvds.wvds-fpc-solution-manager

Pregled

Solution Manager je osrednja razširitev za razvoj v Free Pascalu v VSCode. Ponuja:

Odkrivanje projektov

Razš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

Tree View se pojavi v Activity Bar (leva stran) z ikono FPC Solution Manager.

Hierarhija

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], ...)

Kontekstni meni

Desni klik na elemente drevesa prikaže kontekstno odvisna dejanja:

Projekt:

Projektna skupina:

Enota / Obrazec:

Kontekstni meni urejevalnika

Desni klik v Pascal-urejevalniku (.pas, .pp, .lpr) prikaže podmeni FPC Solution Manager:

Build-System

Build-načini

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.

Build-ukazi

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

Pre/Post-Build ukazi

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}

Zagon projektov

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ščevanje

Predpogoji

Razhroščevalnik potrebuje fpdserver (Free Pascal Debug Server) kot zaledje.

Pridobitev fpdserver:

cd <fpc-source>/packages/fcl-passrc/utils/fpdserver
lazbuild --bm=Release fpdserver.lpi

Nastavitev:

Brez fpdserver integracija razhroščevanja ne deluje. Razširitev samodejno išče v namestitvenem imeniku Lazarusa.

launch.json

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.

Konfiguracijski atributi

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

Funkcionalnosti

Točke prekinitve

Watches

Spremljanje izrazov med izvajanjem:

Immediate Window

Interaktivno vrednotenje med sejo razhroščevanja:

Paneli za razhroščevanje

V spodnjem panelu (področje FPC):

Build-način za razhroščevanje

Za uspešno razhroščevanje mora biti projekt zgrajen v načinu Debug:

Odpravljanje težav

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

Form Designer se samodejno odpre za .lfm datoteke.

Uporaba

Dejanje Bližnjica
Toggle Form/Code F12
View Form as Text Alt+F12
Select Designer Skin Command Palette

Skini

Designer podpira skine za vizualni izgled:

Custom Editors

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)

PO Translation Editor

Odpre se za .po datoteke (GNU gettext). Ponuja:

Resource Editor

Odpre se za .rc datoteke. Ponuja:

Language Server (pasls)

Opcijska integracija Pascal Language Serverja za napredne funkcije kode.

Aktivacija

Funkcionalnosti

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)

Hover s tipsko informacijo in PasDoc

Ko se z miško pomaknete nad simbol, hover-tooltip prikaže do tri ravni informacij:

  1. Signatura — Popolna deklaracija kot sintaktično poudarjen Pascal blok kode, pridobljena iz CodeTools FindSmartHint (npr. private procedure TMyClass.DoSomething(const A: Integer): Boolean) — vključno z vidnostjo, imenom razreda, modifikatorji parametrov in tipom vrnitve
  2. PasDoc-dokumentacija — Komentarji v obliki ( @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>

Načrtovane funkcionalnosti

Naslednje funkcionalnosti zahtevajo strežniško podporo pasls in trenutno še niso na voljo:

Razširitev že registrira ponudnika za Rename. Ko bo pasls podprl textDocument/rename, bo funkcionalnost samodejno delovala.

Workspace Symbols

Ctrl+T odpre iskalnik simbolov delovnega prostora. Tu je mogoče iskati procedure, funkcije, tipe in spremenljivke v vseh datotekah delovnega prostora.

Code Formatter

Nastavitev Opis Privzeto
formatter.engine ptop, jcf ali none ptop
formatter.formatOnSave Samodejno oblikovanje ob shranjevanju false

Cross-Compilation (WSL)

Linux-buildi na Windows prek WSL (Windows Subsystem for Linux).

Predpogoji

  1. Namestitev WSL: wsl –install v PowerShell (skrbnik)
  2. Izbira distribucije: npr. Ubuntu (privzeto) ali Debian
  3. Namestitev FPC v WSL:
# V WSL:
sudo apt install fpc lazarus

Aktivacija

Ukazi

Potek

  1. Izbira ciljne platforme: Desni klik na projekt → Select Cross-Compile Target
  2. Zagon builda: Build for Linux (WSL) ali Ctrl+Shift+B (ko je WSL-cilj aktiven)
  3. Razširitev preda build lazbuild / fpc znotraj WSL-instance
  4. Izhodne datoteke pristanejo v nastavljeni izhodni poti

Raziskovalec odvisnosti

Show 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

Hierarhija klicev

Show Call Hierarchy — na voljo v Tree View in v kontekstnem meniju urejevalnika:

Iz Tree View

Desni klik na enoto → Show Call Hierarchy odpre WebView-panel z:

Iz urejevalnika (Peek-prikaz)

Desni klik v Pascal-urejevalniku → FPC Solution ManagerShow 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.

Hierarhija klicev (odhodne klice) deluje prek analize razširitve. Dohodne klice (klicatelji) zahtevajo pasls-podporo za textDocument/references, ki trenutno še ni na voljo.

Bližnjice na tipkovnici

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

Glej tudi