Lazarus IDE Tools/fi
│
Deutsch (de) │
English (en) │
español (es) │
suomi (fi) │
français (fr) │
日本語 (ja) │
한국어 (ko) │
Nederlands (nl) │
português (pt) │
русский (ru) │
slovenčina (sk) │
中文(中国大陆) (zh_CN) │
Lazarus IDE Tools on Free Pascal- lähdekoodin jäsentämis- ja muokkaustyökalu, jota kutsutaan "codetoolsiksi".
Tämä työkalu tarjoaa ominaisuuksia, kuten Find Declaration, Code Completion, Extraction, Moving Inserting ja Beautifying Pascal lähdekoodia. Nämä toiminnot voivat säästää paljon aikaa ja päällekkäistä työtä. Ne ovat muokattavissa ja jokainen ominaisuus on käytettävissä pikavalintojen kautta (katso editoriasetukset).
Koska ne työskentelevät pelkästään Pascal-lähdekoodeilla ja ymmärtävät FPC-, Delphi- ja Kylix- koodeja, ne eivät tarvitse käännettyjä käännösyksiköitä tai asennettua Borland / Embarcadero-kääntäjää. Delphi- ja FPC-koodia voidaan muokata samanaikaisesti useilla Delphi- ja FPC-versioilla. Tämä tekee Delphi-koodin siirtämisen FPC / Lazarukselle paljon helpompaa.
Yhteenvetoraportti IDEn-pikanäppäimestä
Declaration Jumping | Ctrl+klikkaa tai Alt+↑ (Hyppää tyypin tai muuttujan määrittelyyn) |
Siirtyminen esittelyn ja toteuksen välillä | Ctrl+⇧ Shift+↑ (vaihtaa määritelmäosion ja toteutusosion välillä) |
Code Templates | Ctrl+J |
Syncro Edit | Ctrl+J (while text is selected) |
Code Completion (Class Completion) | Ctrl+⇧ Shift+C, Ctrl+⇧ Shift+X for creating class fields instead of local variables |
Identifier Completion | Ctrl+space |
Word Completion | Ctrl+W |
Parametrivihjeet | Ctrl+⇧ Shift+space |
Etsi kirjain kerrallaan | Ctrl+E |
Rename Identifier | Ctrl+⇧ Shift+E |
Siirtyminen esittelyn ja toteuksen välillä
Jos halutaan siirtyä aliohjelman rungon (begin..end) ja aliohjelman (procedure Name;) esittelyn välillä käytä näppäinyhdistelmää Ctrl+⇧ Shift+↑.
Esimerkiksi:
interface
procedure DoSomething; // Aliohjelman esittely
implementation
procedure DoSomething; // Aliohjelman määrittely
begin
end;
Jos kursori on aliohjelman toteutusosiossa ja painetaan Ctrl+⇧ Shift+↑ niin kursori siirtyy aliohjelman esittelyyn. Painamalla Ctrl+⇧ Shift+↑ uudelleen niin tullan takaisin määrittelyyn heti 'begin' sanan jälkeiseen kohtaan.
Tämä toimii samanlailla myös luokan (class) metodin esittelyn ja toteutuksen välillä.
Vihje: Siirtyminen tapahtuu siihen aliohjelmaan jossa on samat parametrit. Jos ei löydy täysin samaa niin siirtyminen tapahtuu sopivampaan eli siihen jossa on vähiten eroja (Tälläistä toimintaa ei välttämättä löydy esim. Delphistä).
Esimerkki aliohjelmasta joiden esittelyssä ja toteutuksessa on erilaiset parametrityypit:
interface
procedure DoSomething(p: char); // procedure definition
implementation
procedure DoSomething(p: string); // procedure body
begin
end;
Siirtyminen toteuksen ja niiden esittelyjen välillä 'string' avainsana. Tätä voi käyttää kun haluaa uudelleen nimetä metodin ja/tai muuttaa parametrejä.
Esimerkiksi: uudelleen nimetään 'DoSomething' -> 'MakeIt':ksi:
interface
procedure MakeIt; // procedure definition
implementation
procedure DoSomething; // procedure body
begin
end;
Kun siirrytään 'MakeIt':n esittelystä toteukseen (joka on siis vielä väärän niminen). Lazarus etsii sopivaa toteustusta, jota ei löydy, sen jälkeen muita sopivia. Jos nimeä on muutettu ainoastaan yhdestä aliohjelmasta jolloin on yksi toteutus josta ei löydy määrittelyä niin tällöin siirrytään siihen. Näin voidaan yksinkertaisesti vaihtaa nimeä tai parametrejä.
Include Files
Include files ovat tiedostoja, jotka on lisätty lähdekoodiin {$I filename} tai {$INCLUDE filename} kääntäjän ohjeella. Lazarus ja FPC käyttävät usein include tiedostoja vähentämään redundanssia ja välttävät lukemattomia {$ IFDEF} -rakenteita, joita tarvitaan eri alustojen tukemiseen.
Toisin kuin Delphi, Lazarus IDE: llä on täysi tuki myös include-tiedostoihin. Voit esimerkiksi hypätä .pas-tiedoston aliohjelmasta sisällytetyn tiedoston toteutukseen. Kaikki codetools osiot, kuten koodin täydentäminen, käsittelevät include tiedostoja erityistapauksina.
Esimerkiksi: Kun koodin täydentäminen lisää uuden metodin toteuksen rungon toisen metodin rungon taakse, se pitää ne molemmissa samassa tiedostossa. Tällä tavalla voit laittaa kokoluokan toteutuksia include-tiedostoihin, kuten LCL tekee lähes kaikille kontrolleille.
Mutta aloittelijoille löytyy ansa: Jos avataan include tiedosto ensimmäisen kerran ja yritetään siirtyä esittelyn ja toteuksen välillä tai löytää määrittely niin saadaan virhe. IDE ei vielä tiedä, mihin yksikköön sisällytettävä tiedosto kuuluu. Sillä on ensin avattava käännösyksikkö.
Niin pian kuin IDE analysoi käännösyksikön, se analysoi include kääntäjänohjeet siellä ja IDE muistaa tämän suhteen. Se tallentaa nämä tiedot poistumiseen ja projektin tallentamiseen ~ / .lazarus / includelinks.xml. Kun seuraavan kerran avataan tämän include tiedosto ja siirrytään toteuksen ja niiden esittelyjen välillä, IDE avaa laitteen sisäisesti ja siirtyminen toimii. Voidaan myös viitata IDE: een asettamalla
{%mainunit yourunit.pas}
tiedoston yourinclude.inc alkuun.
Tällä mekanismilla on rajoituksia. Joihinkin tiedostoihin sisältyy kaksi tai useampia include tiedostoja. Esimerkiksi: lcl/include/winapih.inc.
Se miten siirrytään aliohjelman/metodin määrityksistä niiden include tiedostoihin riippuu viimeisestä toiminnosta. Jos ollaan työskennelty lcl / lclintf.pp: llä, IDE siirtyy winapi.inc: hen. Jos ollaan työskennelty lcl / interfacebase.pp: llä niin se siirtyy lcl / include / interfacebase.inc (tai johonkin muuhun include tiedostoon). Jos työskennellään molemmilla, niin se saadaan sekaisin. ;)
Code Templates
Code Templates muuntaa tietyn tunnisteen tekstiksi tai koodin palaseksi.
Code Templates oletuspikanäppäin on Ctrl+J. Kun kirjoittaa sopivan tunnisteen, painaa Ctrl+J niin tunniste korvataan tunnisteella määritellyllä tekstillä. Code Templates voidaan määritellä Työkalut -> Optiot -> CodeTools.
Esim: Kirjoita teksti 'classf', jätä kursori kirjaimen 'f' oikealle puolen ja paina Ctrl+J. Teksti 'classf' korvautuu riveillä
T = class(T)
private
public
constructor Create;
destructor Destroy; override;
end;
ja kursori on kirjaimen 'T' takana. Luettelo kaikista Code Template vaihtoehdoista saadaan sijoittamalla kohdistin välilyönnin perään (ei tunnisteeseen) ja painamalla Ctrl+J. Luettelo kaikista Code Template vaihtoehdoista ponnahtaa esiin. Käytä kursorinäppäimiä tai kirjoita joitain merkkejä valitaksesi. Painamalla Return luodaan valittu malli ja Esc sulkee ponnahdusikkunan.
Suurin ajan säästäjä on Code Template 'b'+Ctrl+J varatuille sanoille begin..end.
Parametrivihjeet
Parametrivihjeet näyttävät vihjeruutu, jossa on parametriluettelot kutsun parametrilistalle.
Esimerkiksi
Canvas.FillRect(|);
Aseta kursori sulkujen väliin ja paina Ctrl+⇧ Shift+space. Näyttöön tulee vihjeruutu, joka näyttää FillRectin parametrit.
Versiosta 0.9.31 asti on ollut jokaisen Parametrivihjeen oikealla puolella painike puuttuvien parametrien lisäämiseksi. Tämä kopioi parametrin nimet valitusta vihjeestä kohdistimen kohtaan.
Vihje: Käytä Variable Declaration Completion määrittääksesi muuttujia.
Etsi kirjain kerrallaan
Etsi kirjain kerrallaan muuttaa lähdekoodieditorin tilarivin. Kirjoita joitain kirjaimia ja editori etsii ja korostaa välittömästi kaikki niiden esiintymät tekstissä. Pikanäppäin on Ctrl+e.
- Esimerkiksi painamalla e. Se etsii ja korostaa kaikki 'e':n esiintymät.
- Sitten painetaan t. Se etsii ja korostaa kaikki esiintymät "et" ja niin edelleen.
- Seuraavaan esiintymään voidaan siirtyä painamalla F3 (tai Ctrl+e kun ollaan haussa) ja edelliseen painamalla ⇧ Shift+F3.
- Backspace eli <- poistaa edellisen merkin
- Return lopettaa haun lisäämättä uutta riviä editoriin.
- Viimeistä hakua voidaan jatkaa painamalla Ctrl+e -näppäintä toisen kerran välittömästi sen jälkeen, kun olet käynnistänyt etsinnän painamalla Ctrl+e. Toisin sanoen hakutermi on vielä tyhjä.
- Liittäminen Ctrl+V liittää tekstin leikepöydältä nykyiseen hakutekstiin (Ollut Lazarus versiosta 0.9.27 lähtien).
Vihje: Nopea haku tunnistimella käyttäen etsi kirjain kerrallaan toimintoa
- Aseta tekstikohdistin tunnisteeseen (älä valitse mitään)
- Paina Ctrl+C. Lähdekoodieditori valitsee tunnuksen ja kopioi sen leikepöydälle
- Paina Ctrl+E aloittaaksesi etsi kirjain kerrallaan toiminnon.
- Paina Ctrl+V joka liittää tekstin leikepöydältä nykyiseen hakutekstiin.
- Käyttämällä F3 ja ⇧ Shift+F3 siirtyäksesi nopeasti seuraavaan / edelliseen.
- Lopeta haku painamalla mitä tahansa näppäintä (esimerkiksi kohdistinta vasemmalle tai oikealle).
Syncro Edit
Syncro Edit:llä voidaan muokata samanaikaisesti kaikkia sanojen esiintymiä (synkronoitu). Yksinkertaisesti voidaan muokata sanaa yhdessä paikassa ja kun sitä muutetaan niin kaikki muut sanan tapahtumat päivittyvät.
Syncro Edit toimii kaikkien valitun alueen sanoilla:
- Valitse tekstilohko
- Paina Ctrl+J tai klikkaa kuvaketta reunuksessa. (Tämä toimii vain, jos valittu sana esiintyy useamman kerran).
- Valitse muokattava sana Tab ⇆ näppäimellä (jos valittu sana esiintyy useamman kerran)
- Muokkaa sanaa
- Lopeta painamalla Esc näppäimellä
Katso animoitu esimerkki tästä
Etsi sanan seuraava esiintymiskohta/ Etsi sanan edellinen esiintymiskohta
Nämä kaksi funktiota löytyvät lähdekoodieditorin ponnahdusvalikosta
- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan seuraava esiintymiskohta
- Lähdekoodieditori / ponnahdusvalikko / Etsi / Etsi sanan edellinen esiintymiskohta
Näihin voidaan määrittää pikanäppäimet editorin asetuksissa.
Code Completion
Code Completion löytyy IDE-valikosta Edit -> Complete Code ja sen pikanäppäin on Ctrl+⇧ Shift+C.
Delphi-käyttäjille: Delphi nimeää "code completion" funktioksi, joka näyttää tunnistetietojen luettelon kursorin kohdalla lähdekoodissa ( Ctrl+Space ). Lazaruksessa se on "Identifier completion".
Code Completion yhdistää useita tehokkaita toimintoja. esimerkkejä:
- Class Completion: täydentää ominaisuuksia(property), lisää / päivittää metodien runkoja, lisää yksityisiä muuttujia ja yksityisiä käyttömetodeja
- Forward Procedure Completion: Lisää aliohjelmien runkoja
- Event Assignment Completion: Tapahtumien tekeminen ja lisää metodit määrittelyt ja niiden rungot
- Variable Declaration Completion: lisää paikalliset muuttujan määrittelyt
- Procedure Call Completion: Lisää uusia aliohjelmia
- Reversed procedure completion: Lisää aliohjelman määrittelyn
- Reversed Class Completion: Lisää metodien määrittelyn
Mikä toiminto on käytössä, riippuu kohdistimen sijainnista editorissa ja sitä selitetään alla.
Code Completion löytyy IDE-valikosta Edit -> Complete Code ja sen pikanäppäin on Ctrl+⇧ Shift+C.
Class Completion
Tehokkain koodin täydentäjä ominaisuus on "Class Completion". Kun kirjoitetaan luokkaa (class) johon lisätään metodeja ja ominaisuuksia niin Code Completion lisää metodien toteutuksen rungot, ominaisuuksien käyttörutiinit / muuttujat ja yksityiset muuttujat.
Esimerkiksi: Luo luokka eli class (Katso Code Templates jonka avulla voidaan säästää kirjoittamistyötä):
TExample = class(TObject)
public
constructor Create;
destructor Destroy; override;
end;
Aseta kohdistin johonkin kohtaan luokkaan ja paina Ctrl+⇧ Shift+C. Tämä luo metodien puuttuvat rungot ja siirtää kohdistimen ensimmäiselle luodulle metodin rungolle, joten voidaan aloittaa luokan koodin kirjoittaminen:
{ TExample }
constructor TExample.Create;
begin
|
end;
destructor TExample.Destroy;
begin
inherited Destroy;
end;
Vihje: On mahdollista siirtyä metodin ja sen rungon välillä Ctrl+⇧ Shift+↑.
Nähdään, että IDE lisäsi myös 'inherited Destroy' kutsun. Tämä tehdään, jos luokan määritelmässä on 'override' avainsana.
Nyt lisätään metodi DoSomething:
TExample = class(TObject)
public
constructor Create;
procedure DoSomething(i: integer);
destructor Destroy; override;
end;
Sitten paina Ctrl+⇧ Shift+C ja IDE lisää
procedure TExample.DoSomething(i: integer);
begin
|
end;
Nähdään että uusi metodin runko on sijoitettu Create ja Destroy -toimintojen väliin aivan kuten luokkamäärittelyssä. Tällä tavoin rungot pitävät saman loogisen järjestyksen kuin on määritetty. Lisäyskäytäntö voidaan määrittää Työkalut> Asetukset -> Codetools -> Code Creation.
Täydennä ominaisuuksilla
Lisää ominaisuus AnInteger:
TExample = class(TObject)
public
constructor Create;
procedure DoSomething(i: integer);
destructor Destroy; override;
property AnInteger: Integer;
end;
Paina Ctrl+⇧ Shift+C jolloin saadaan:
procedure TExample.SetAnInteger(const AValue: integer);
begin
|if FAnInteger=AValue then exit;
FAnInteger:=AValue;
end;
code completion on lisännyt kirjoitusoikeuden muokkaajan ja lisännyt yleistä koodia. Siirry luokalle painamalla Ctrl+⇧ Shift+↑ nähdäksesi uuden luokan:
TExample = class(TObject)
private
FAnInteger: integer;
procedure SetAnInteger(const AValue: integer);
public
constructor Create;
procedure DoSomething(i: integer);
destructor Destroy; override;
property AnInteger: integer read FAnInteger write SetAnInteger;
end;
Ominaisuutta laajennettiin Read (luku) ja Write (kirjoitus)-ominaisuuden avulla. Luokka sai uuden 'private' osion johon tuli muuttuja "FAnInteger" ja metodi "SetAnInteger". Yleisen Delphi-tyylisen käytännön mukaan yksityisiin muuttujiin lisätään 'F' kirjain ja kirjoitusmetodiin 'Set'. Tätä ominaisuutta voidaan muuttaa Työkalut -> Valinnat> Codetools -> Code Creation.
Luodaan property:n vain luku (read) :
property PropName: PropType read;
Laajennetaan
property PropName: PropType read FPropName;
Luodaan property:n vain kirjoitus (write) :
property PropName: PropType write;
Laajennetaan
property PropName: PropType write SetPropName;
Luodaan property:n vain luku (read) ja lukumetodi:
property PropName: PropType read GetPropName;
Säilytetään ja GetPropName-funktio lisätään:
function GetpropName: PropType;
Luodaan property jossa on stored määrite:
property PropName: PropType stored;
Laajennetaan
property PropName: PropType read FPropName write SetPropName stored PropNameIsStored;
Koska stored käytetään tietovirtojen lukemiseen ja kirjoittamiseen, ne myös lisätään automaattisesti.
Vihje: Identifier completion tunnistaa myös puutteelliset ominaisuudet ja ehdottaa oletusnimiä. Esimerkiksi:
property PropName: PropType read |;
Aseta kohdistin yksi välilyönti read-avainsanan taakse ja paina Ctrl+Space. Se antaa muuttujan "FPropName" ja aliohjelman "SetPropName".
Forward Procedure Completion
"Forward Procedure Completion" on osa Code Completion ja lisää aliohjelman rungon. Sitä käytetään, kun kohdistin on aliohjelman esittelyssä. It is invoked, when the cursor is on a forward defined procedure.
Esimerkiksi: Lisätään uusi aliohjelma interface osioon:
procedure DoSomething;
Aseta kohdistin sille ja paina Ctrl+⇧ Shift+C. Se luo toteutusosassa (implementation):
procedure DoSomething;
begin
|
end;
Vihje: Voidaan siirtyä aliohjelman esittelyn ja sen rungon välillä painamallaCtrl+⇧ Shift+↑.
Uusi aliohjelman runko lisätään luokkametodien eteen. Jos rajapinnassa on jo joitain aliohjelmia, IDE yrittää säilyttää järjestyksen. Esimerkiksi:
procedure Proc1;
procedure Proc2; // new proc
procedure Proc3;
Jos aliohjelmien Proc1: n ja Proc3: n rungot ovat jo olemassa, niin Proc2 runko lisätään Proc1: n ja Proc3: n rungon väliin. Tämä toiminto voidaan asettaa Työkalut -> Valinnat -> Codetools -> Code Creation.
Useita aliohjelmia:
procedure Proc1_Old; // runko on jo olemassa
procedure Proc2_New; // runkoa ei ole vielä
procedure Proc3_New; // "
procedure Proc4_New; // "
procedure Proc5_Old; // runko on jo olemassa
Code Completion lisää kaikki kolme (3) aliohjelman runkoa (Proc2_New, Proc3_New, Proc4_New).
Miksi kutsua "Forward Procedure Completion"?
Koska se ei toimi vain interface osiossa määriteltyjen aliohjelmien, vaan myös "forward" -määritteen kanssa. Ja koska codetools käsittelee interface osiossa olevia aliohjelmia niin, että niillä on implisiittinen 'forward' -määrite.
Event Assignment Completion
"Event Assignment Completion" on osa Code Completion:a. Se täydentää yhden tapahtuman := | lauseen. Sitä kutsutaan, kun kohdistin on järjestetty tapahtumalle.
completes a single Event:=| statement. It is invoked, when the cursor is behind an assignment to an event.
Esimerkiksi: Kirjoita lomakkeen FormCreate-tapahtumaan rivi 'OnPaint:=':
procedure TForm1.Form1Create(Sender: TObject);
begin
OnPaint:=|
end;
Kursorin paikka on merkitty '|' -kirjaimella eikä kyseistä kirjainta kirjoiteta. Code completion kutsutaan painamalla Ctrl+⇧ Shift+C. Lause täydennetään
OnPaint:=@Form1Paint;
ja uusi metodi Form1Paint lisätään TForm1 luokkaan. Tällöin luokka valmistuu ja saadaan myös:
procedure TForm1.Form1Paint(Sender: TObject);
begin
|
end;
Tämä toimii samalla tavoin kuin lisätään menetelmiä komponenttimuokkaimella.
Vinkit:
- Uuden metodin oletusarvoinen näkyvyys voidaan valita Työkalut / Asetukset / Codetools / Luokan täydennys / Default section of methods (versiosta 1.8 lähtien)
- Uuden metodin nimen voi määrittää itse. Esimerkiksi:
OnPaint:=@ThePaintMethod;
Versiosta 0.9.31 Lazarus täydentää aliohjelman parametreja. Esimerkiksi
procedure TForm1.FormCreate(Sender: TObject);
var
List: TList;
begin
List:=TList.Create;
List.Sort(@MySortFunction|);
end;
Sijoita kursori 'MySortFunction' kohtaan ja paina Ctrl+⇧ Shift+C niin saadaan uusi aliohjelma:
function MySortFunction(Item1, Item2: Pointer): Integer;
begin
|
end;
procedure TForm1.FormCreate(Sender: TObject);
var
List: TList;
begin
List:=TList.Create;
List.Sort(@MySortFunction);
end;
Variable Declaration Completion
"Variable Declaration Completion" on osa Code Completion:a. Se lisää paikallisen muuttujan määritelmän tunnisteelle := Term; lause. Sitä kutsutaan, kun kohdistin on osoittaa parametria tai tunnistetta.
Esimerkiksi:
procedure TForm1.Form1Create(Sender: TObject);
begin
i:=3;
end;
Kursorin paikka on tunnisteessa 'i' tai sen jälkeen. Painamalla Ctrl+⇧ Shift+C saadaan:
procedure TForm1.Form1Create(Sender: TObject);
var
i: Integer;
begin
i:=3;
end;
Toiminto ensin tarkastaa onko tunnistetta 'i' jo määritelty. Jos sitä ei ole niin lisää määrittelyn 'var i: integer;'. Tunnisteen tyyppi arvatellaan ": =" operaattorista. Kokonaisluvun, kuten 3 oletustyyppinä on Integer.
Toinen esimerkki:
type
TWhere = (Behind, Middle, InFront);
procedure TForm1.Form1Create(Sender: TObject);
var
a: array[TWhere] of char;
begin
for Where:=Low(a) to High(a) do writeln(a[Where]);
end;
Kursorin paikka on 'Where'-sanan kohdalla ja painetaan Ctrl+⇧ Shift+C niin saadaan:
procedure TForm1.Form1Create(Sender: TObject);
var
a: array[TWhere] of char;
Where: TWhere;
begin
for Where:=Low(a) to High(a) do writeln(a[Where]);
end;
Lazarus on versiosta 0.9.11 lähtien myös täydentänyt parametreja. Esimerkiksi
procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do begin
Line(x1,y1,x2,y2);
end;
end;
Sijoita kursori 'x1' ja paina Ctrl+⇧ Shift+C niin saadaan:
procedure TForm1.FormPaint(Sender: TObject);
var
x1: integer;
begin
with Canvas do begin
Line(x1,y1,x2,y2);
end;
end;
Lazarus on versiosta 0.9.31 täydentänyt osoittimen parametrit. Esimerkiksi
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateIconIndirect(@IconInfo);
end;
Sijoita kursori 'IconInfo':n ja paina Ctrl+⇧ Shift+C niin saadaan:
procedure TForm1.FormCreate(Sender: TObject);
var
IconInfo: TIconInfo;
begin
CreateIconIndirect(@IconInfo);
end;
Kaikissa edellä olevissa esimerkeissä voit käyttää Ctrl+⇧ Shift+X-näppäintä näyttääksesi koodin luomisen valintaikkunan, jossa voit asettaa lisää vaihtoehtoja.
Procedure Call Completion
Code completion voi luoda uuden aliohjelman sen kutsusta.
Oletataan että kirjoitettiin vain lause "DoSomething(Width);"
procedure SomeProcedure;
var
Width: integer;
begin
Width:=3;
DoSomething(Width);
end;
Sijoita kursori tekstiin "DoSomething" ja paina Ctrl+⇧ Shift+C niin saadaan:
procedure DoSomething(aWidth: LongInt);
begin
end;
procedure SomeProcedure;
var
Width: integer;
begin
Width:=3;
DoSomething(Width);
end;
Se ei vielä luo funktioita tai metodeja.
Reversed Class Completion
"Reversed Class Completion" on osa Code Completion toimintaa. Se lisää yksityisen metodin ilmoituksen nykyiselle metodiryhmälle. Sitä kutsutaan, kun kursori on metodin rungossa, jota ei ole vielä määritelty luokassa. Tämä ominaisuus on saatavana Lazarus 0.9.21 versiosta alkaen.
Esimerkiksi:
procedure TForm1.DoSomething(Sender: TObject);
begin
end;
DoSomething-metodia ei ole vielä määritelty TForm1: ssä. Paina Ctrl+⇧ Shift+C ja IDE lisää aliohjelman "procedure DoSomething (Sender: TObject);" TForm1: n yksityisiin metodeihin.
Delphi käyttäjille: Class completion toimii Lazaruksen mukaan aina yhdellä tavalla: Luokan käyttöliittymästä toteutukseen tai taaksepäin / päinvastoin luokan toteutuksesta käyttöliittymään. Delphi kutsuu aina molempiin suuntiin. Delphi-tapa on haitta, että jos on typo se luo helposti uuden tynkä metodin ilman huomaamatta.
Kommentit ja Code Completion
Code completion yrittää pitää kommentteja, johon ne kuuluvat. Esimerkiksi:
FList: TList; // list of TComponent
FInt: integer;
Kun lisätään uusi muuttuja FListin ja FInt: n välillä, kommentti pidetään FList-rivillä. Sama pätee myös
FList: TList; { list of TComponent
Tämä on usean rivin kommentti, alkaen
FList-riviltä, joten codetools olettaa sen kuuluvan
FLIst-riviin ja ei riko tätä
suhdetta. Koodi lisätään kommentin taakse. }
FInt: integer;
Jos kommentti alkaa seuraavalla rivillä, sitä käsitellään kuin se kuuluu alla olevaan koodiin. Esimerkiksi:
FList: TList; // list of TComponent
{ Tämä kommentti kuuluu alla olevaan lauseeseen.
Uusi koodi lisätään tämän kommentin yläpuolelle ja
FList-rivin kommentin taakse. }
FInt: integer;
Metodin päivitys
Normaalisti luokan täydennys lisää kaikki puuttuvat metodin rungot (Ollut versiosta 0.9.27 lähtien). Jos täsmälleen yksi metodi eroaa luokan ja rungon välillä, niin metodin runko päivitetään. Esimerkiksi: On metodi DoSomething DoSomething.
public
procedure DoSomething;
end;
procedure TForm.DoSomething;
begin
end;
Nyt lisätään parameteri:
public
procedure DoSomething(i: integer);
end;
Code Completion kutsuminen (Ctrl+⇧ Shift+C) päivittää metodin rungon ja uusi parametri kopioidaan:
procedure TForm.DoSomething(i: integer);
begin
end;
Refactoring
Käännä sijoitus päinvastaiseksi
- Abstract
- : "Käännä sijoitus päinvastaiseksi" ottaa valitut pascal-lauseet ja invertoi kaikki tämän koodin tehtävät. Tämä työkalu on hyödyllinen "tallentaa" -koodin muuttamiseksi "lataukseksi" ja käänteiseksi.
Esimerkki:
procedure DoSomething;
begin
AValueStudio:= BValueStudio;
AValueAppartment :=BValueAppartment;
AValueHouse:=BValueHouse;
end;
Valitaan rivit, joissa on tehtäviä (sanojen begin ja end väliset) ja käännä sijoitus päinvastaiseksi. Kaikki tehtävät käännetään ja identiteetti lisätään automaattisesti. Esimerkiksi:
Tulos:
procedure DoSomething;
begin
BValueStudio := AValueStudio;
BValueAppartment := AValueAppartment;
BValueHouse := AValueHouse;
end;
Kapseloi valinta
Valitse jokin teksti ja ota "Kapseloi valinta" käyttöön. Avautuu valintaikkuna, jossa voidaan valita, haluaako valinnan try..finally tai monista muista tavoista .
Vaihda tunnisteen nimeä
Aseta kohdistin tunnisteeseen ja valitse "Vaihda tunnisteen nimeä". Näyttöön tulee valintaikkuna, jossa voit määrittää hakualueen ja uuden nimen.
- Se nimeää kaikki esiintymät uudelleen ja vain ne, jotka todella kuuluvat tähän määritykseen. Tämä tarkoittaa, ettei se koske toisten määrityksten osalla olevia samaa nimeä sisältäviä osia.
- Se tarkistaa ensin nimen ristiriidat.
- Rajoitukset: Se toimii vain pascal-lähdekoodeilla, ei vielä nimeä tiedostoja eikä muokkaa lfm / lrs-tiedostoja eikä lazdoc-tiedostoja.
Etsi viittauksia tunnisteeseen
Aseta kohdistin tunnisteeseen ja ja valitse "Etsi viittauksia tunnisteeseen". Näyttöön tulee valintaikkuna, jossa voidaan määrittää hakualue. IDE etsii sitten kaikki esiintymät ja vain ne, jotka todella käyttävät tätä määritystä. Tämä tarkoittaa sitä, että siinä ei näytetä muita samannimisiä sanoja.
Abstraktit metodit
Tämä ominaisuus luetteloi ja täydentää automaattisesti virtuaalisia, abstrakteja menetelmiä, jotka on toteutettava. Aseta kohdistin luokan ilmoitukseen ja valitse tämä. Jos abstrakteja menetelmiä puuttuu, näkyviin tulee valintaikkuna. Valitse toteutettavat menetelmät ja IDE luo "tynkämetodin". Lazarus 1.3 versiosta lähtien se lisää myös puuttuvat luokan rajapinnat (class interface) .
Extract Procedure
Katso Extract Procedure.
Etsi määritys
Aseta kohdistin tunnisteeseen ja tee 'Etsi määritys'. Sitten se etsii tämän tunnisteen määrityksen, avaa tiedoston ja siirtyy siihen. Jos kohdistin on jo määrityksessä, se siirtyy edelliseen määritykseen samalla nimellä. Tämä mahdollistaa uudelleenmäärittelyjen ja ohitusten (override9 löytymisen.
Jokainen löydettävä määrittely asettaa hyppypisteen. Tämä tarkoittaa sitä, että se hyppää etsimällä määritykseen ja hyppää helposti takaisin Etsi -> Hyppää takaisin.
Delphissä on joitain eroja: codetools toimivat lähdekoodissa normaalien pascal-sääntöjen jälkeen, eikä käytä kääntäjän tuloksen käyttöä. Kääntäjä palauttaa lopullisen tyypin. Codetools näkee lähdekoodin ja kaikki sen väliset vaiheet. Esimerkiksi:
Visible property on ensin määritelty TControl (controls.pp), sitten se määritellään uudelleen TCustomForm:ssa ja lopuksi uudelleen TForm:ssa. Kutsu "Etsi Visible:n määritys" tuo ensin näkyviin Visible:n TForm:ssa. Sitten voidaan hakea "Etsi Visible:n määritys" uudelleen joka siirtyy Visible:n TCustomForm:ssa ja seuraava uudelleen haku siirtyy TControl:n.
Sama pätee myös tyypeille kuten TColor. Kääntäjälle se on yksinkertaisesti 'longint'. Mutta lähdekoodissa se on määritelty
TGraphicsColor = -$7FFFFFFF-1..$7FFFFFFF;
TColor = TGraphicsColor;
Ja sama forward defined classes: esimerkiksi TControl:ssa on yksityinen muuttuja
FHostDockSite: TWinControl;
Etsi määritys hyppää TWinControl eteenpäin määrittelyyn
TWinControl = class;
Ja se taas hyppää todelliseen toteutukseen
TWinControl = class(TControl)
Tällä tavoin voit etsiä jokaisen tunnisteen ja löytää jokaisen ylikuormituksen (overload).
Vihjeitä
- Hyppää takaisin Ctrl+H.
- Voidaan tarkastella / navigoida kaikki vierailut kohteet valikon kautta: Näytä -> "hyppyhistoria"
- 5-näppäimellä hiirellä voidaan 2 ylimääräistä painiketta hyödyntää siirtyäksesi eteenpäin / taaksepäin vierailtujen kohteiden välillä
advanced mouse options painikkeet voidaan uudelleen määrittää.
Identifier Completion
"Identifier Completion" kutsutaan painamalla Ctrl+space. Se näyttää kaikki näkyvyyden tunnisteet. Esimerkiksi:
procedure TForm1.FormCreate(Sender: TObject);
begin
|
end;
Sijoita kursori begin ja end lauseiden väliin ja paina Ctrl+space. IDE/CodeTools analysoi nyt kaikki tavoitettavissa olevat koodit ja esittää luettelon kaikista löydetyistä tunnisteista. CodeTools välittää tulokset välimuistiin, joten toisen kerran kutsuminen on paljon nopeampaa.
Joitakin tunnisteita, kuten 'Write', 'ReadLn', 'Low', 'SetLength', 'Self', 'Result', 'Copy' on rakennettu kääntäjään eikä niitä ole määritelty missään lähteessä. Identifier Completion on paljon näitä asioita myös sisäänrakennettu. Jos löytyy joku puuttuva, niin luo ominaisuuspyyntö bug tracker:n.
Identifier completion ei täydennä kaikkia avainsanoja. Joten sitä ei voi käyttää täyttämään 'repe' sanaa 'repeat':ksi. Tälläisissä tapauksissa käytäCtrl+W Word Completion tai Ctrl+J Code Templates. Versiosta 0.9.27 lähtien identifier completion täydentää jotain avainsanoja.
Identifier completion näyttää myös ne tunnisteet, jotka eivät ole yhteensopivia.
Täydennys sanan alkuosan mukaan
Identifier completion voidaan kutsua kun on muutamia kirjaimia sanasta. Sijoita kursori sanaan. Jolloin kursorin vasemmalla puolella olevia merkkejä käytetään tunnisteiden etsimiseen. Esimerkiksi:
procedure TForm1.FormCreate(Sender: TObject);
begin
Ca|ption
end;
Sanaluettelolaatikko näyttää vain tunnukset, jotka alkavat "Ca": lla (| osoittaa kursorin sijainnin).
Näppäimet
- Kirjain tai numero : lisää merkin lähdekoodieditoriin ja käytettyyn etuliitteeseen. Tämä päivittää luettelon.
- ← Backspace: poistaa viimeisen merkin lähdekoodieditorista ja etuliitteestä. Päivittää luettelon
- Return: vaihtaa koko sanan kohdistimella valittuun tunnisteeseen ja sulkee ponnahdusikkunan.
- ⇧ Shift+Return: kuten Return, mutta korvaa vain sanan etuliitteen (kursorin vasemmanpuolinen osa)
- ↑/↓: Siirtyy valintaluettelossa (ylöspäin/alaspäin)
- Esc: sulkee ponnahdusikkunan ilman muutosta
- Tab ⇆: täydentää etuliitteen seuraavaan valintaan. Esimerkiksi: Nykyinen etuliite on 'But' ja tunnuksen loppuun saattaminen näyttää vain 'Button1' ja 'Button1Click'. Tällöin Tab ⇆:in painamisella saadaan etuliite 'Button1'.
- Muutoin: kuten Return ja lisätään merkki lähdekoodieditoriin
Metodit
Kun kohdistin on luokkamäärittelyssä ja identifier complete määrittää metodia esi-luokassa niin parametrit ja override avainsana lisätään automaattisesti. Esimerkiksi:
TMainForm = class(TForm)
protected
mous|
end;
Täydennys MouseDown antaa:
TMainForm = class(TForm)
protected
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer); override;
end;
Ominaisuudet
property MyInt: integer read |;
Identifier completion näyttää FMyInt ja GetMyInt.
property MyInt: integer write |;
Identifier completion näyttää FMyInt ja SetMyInt.
Uses osio / käännösyksikön nimet
Uses osiossa identifier completion näytetään kaikkien hakuehtojen yksiköiden tiedostonimet. Nämä näyttävät kaikki pienet kirjaimet (esim. avl_tree ), koska useimmilla käännösyksiköillä on pieniä tiedostonimiä. Valmistuttuaan se lisää käännösyksikön (esim. AVL_Tree ).
Lauseet
procedure TMainForm.Button1Click(Sender: TObject);
begin
ModalRe|;
end;
tulee:
procedure TMainForm.Button1Click(Sender: TObject);
begin
ModalResult:=|;
end;
Kuvakkeet täydennysikkunassa
Lazarus versiosta 1.9 lähtien on olemassa vaihtoehto, jolla näytetään kuvakkeita "tyyppien" sijaan täydennysikkunassa. Kuvassa nähdään nämä kuvakkeet:
Word Completion
Word Completion kutsutaan Ctrl+W. Se näyttää kaikki lähdekoodieditorissa olevat sanat ja sitä voidaan käyttää myös ei-pascal-lähdekoodeissa, kommenteissa ja avainsanoissa.
Muutoin se toimii samoin kuin identifier completion.
Siirry Include määrittelyyn
"Siirry Include määrittelyyn" hyppää {$ I filename} -lauseen, jossa käytetään nykyistä tiedostoa.
Julkaise projekti
Luo kopion koko projektista. Jos halutaan lähettää jollekulle vain lähdekoodi ja kääntäjän asetukset niin tämä toiminto on ystäväsi.
Tavallinen projektihakemisto sisältää paljon tietoa. Suurinta osaa sitä ei tarvitse julkaista: .lpi-tiedosto voi sisältää istuntotietoja (kuten suljettujen yksiköiden varmenteen sijainti ja kirjanmerkit) ja projektin hakemisto sisältää paljon .ppu, .o-tiedostoja ja suoritettavan tiedoston. Voidaan luoda lpi-tiedoston, jossa on vain perustiedot ja vain lähdekoodi sekä kaikki alihakemistot sisältävä "Publish Project".
Valintaikkunassa voidaan määrittää suodattimen tiettyjen tiedostojen sisällyttämiseksi ja sulkemiseksi pois. Komennolla voidaan pakata tuotos yhteen arkistoon.
Huomautuksia näytettävistä vihjeistä
Useilla kohdilla IDE näyttää vihjeitä tunnisteista. Esimerkiksi kun liikutetaan hiirtä tunnisteen päällä lähdekoodieditorissa ja odotetaan muutaman sekunti. Kun IDE näyttää vihjeenä tunnuksen, se etsii määrityksen ja kaikki sen esi-isät ja etsii kommentteja ja fpdoc-tiedostoja. On monia koodaustapoja ja monia kommentoitavia tyylejä. Monien yhteisten kommenttityylien tukemiseksi IDE käyttää seuraavia heuristiikkaa:
Comments shown in the hint
Comments in front of a declaration, without empty line and not starting with the < sign:
var
{Comment}
Identifier: integer;
Comments with the < sign belong to the prior identifier.
Comments behind an identifier on the same line:
var
identifier, // Comment
other,
Comments behind the definition on the same line:
var
identifier:
char; // Comment
An example for < sign:
const
a = 1;
//< comment for a
b = 2;
// comment for c
c = 3;
All three comment types are supported:
{Comment}(*Comment*)//Comment
c = 1;
Comments not shown in the hint
Comments starting with $ or % are ignored. For example //% Hiddden, //$ Hidden, (*$ Hidden*).
Comments in front separated with an empty line are treated as not specific to the following identifier. For example the following class header comment is not shown in the hint:
type
{ TMyClass }
TMyClass = class
The class header comments are created on class completion. You can turn this off in the Options / Codetools / Class completion / Header comment for class. If you want to show the header comment in the hint, just remove the empty line.
The following comment will be shown for GL_TRUE, but not for GL_FALSE:
// Boolean
GL_TRUE = 1;
GL_FALSE = 0;
Quick Fixes
Quick Fixes are menu items for specific compiler messages. They help you to quickly fix the problem. Select a message in the Messages window and right click, or right click in the source editor on the icon to the left.
- Unit not found: remove from uses section
- Unit not found: find unit in loaded packages and allow to auto add package dependency
- Constructing a class "$1" with abstract method "$2": show dialog to override all abstract methods
- Local variable "$1" not used: remove definition
- Circular unit reference between $1 and $2: show Unit Dependencies dialog with full path between the two units
- Identifier not found: search via Code Browser
- Identifier not found: search via Cody Dictionary (needs package Cody)
- Identifier not found: add local variable
- Recompiling $1, checksum changed for $2: show a dialog with search paths and other information
- IDE warning: other sources path of package %s contains directory...: open package
- any hint, note, warning: add IDE directive {%H-}
- any hint, note, warning: add compiler directive {$warn id off} (since 1.7)
- any hint, note, warning: add compiler option -vm<messageid>
- Local variable "i" does not seem to be initialized: insert assignment (since 1.5)
Outline
Tämä asetus sijaitsee IDEn asetukset ikkunassa, Editori - Näkymä - Merkintä ja osumat - Outline (global).
Se korostaa Pascalin avainsanoja yhdistäen vastaavat begin - end parit. Tämä sallii isot sisäkkäiset lohkot Esimerkiksi vaikka tälläinen aliohjelman runko:
with ADockObject do
begin
if DropAlign = alNone then
begin
if DropOnControl <> nil then
DropAlign := DropOnControl.GetDockEdge(DropOnControl.ScreenToClient(DragPos))
else
DropAlign := Control.GetDockEdge(DragTargetPos);
end;
PositionDockRect(Control, DropOnControl, DropAlign, FDockRect);
end;
Tuodaan korostaen esiin:
- ulompi with-do-begin-end oranssin värisenä
- seuraavan tason if-then-begin-end vihreän värisenä
- sisempi if-then-else cyanin värisenä