# &kdevelop; Priročnik

## Kaj je &kdevelop;?

&kdevelop; je sodobno integrirano razvojno okolje (IDE) za C++ (in druge jezike), ki je eno od mnogih Aplikacije KDE. Kot tak deluje v sistemu &Linux; (tudi če uporabljate katero od drugih namizij, kot je GNOME), vendar je na voljo tudi za večino drugih različic &UNIX; in tudi za Windows.

&kdevelop; ponuja vse ugodnosti sodobnih IDE. Za velike projekte in aplikacije je najpomembnejša funkcija &kdevelop; razume C++: razčleni celotno izvorno bazo in si zapomni, kateri razredi imajo katere članske funkcije, kje so definirane spremenljivke, kakšne so njihove vrste in veliko drugih stvari o vaši kodi. Na primer, recimo, da ena od datotek glave vašega projekta deklarira razred

    class Car { // ... public: std::string get_color () const; };

in kasneje v svojem programu imate

    Avto my_ride; // ...naredi nekaj s to spremenljivko... std::string color = my_ride.ge

zapomnil si bo, da je `my_ride` v zadnji vrstici spremenljivka tipa `Car` in vam ponudil, da izpolnite `ge` kot `get_color()` , ker je to edina funkcija članica razreda `Car`, ki se začne tako. Namesto da nadaljujete s tipkanjem, samo pritisnete &Enter; dobiti celotno besedo; to prihrani tipkanje, se izogne tipkarskim napakam in vam ni treba zapomniti natančnih imen na stotine ali tisoče funkcij in razredov, ki sestavljajo velike projekte.

Kot drugi primer predpostavimo, da imate takšno kodo:

    double foo () { double var = my_func(); vrni var * var; } dvojna vrstica () { dvojna var = my_func(); vrni var * var * var; }

Če z miško premaknete nad simbol `var` v funkcijski `bar`, dobite možnost, da si ogledate vse uporabe tega simbola. Če kliknete nanj, vam bodo prikazane le uporabe te spremenljivke v funkcijski `bar`, ker &kdevelop; razume, da spremenljivka `var` v funkciji `foo` nima nič s tem. Podobno lahko z desnim klikom na ime spremenljivke preimenujete spremenljivko; s tem se boste dotaknili samo spremenljivke v `bar`, ne pa tiste z istim imenom v `foo`.

Toda &kdevelop; ni samo inteligentni urejevalnik kode; obstajajo še druge stvari &kdevelop; dela dobro. Očitno poudarja izvorno kodo v različnih barvah; ima prilagodljiv zamik; ima integriran vmesnik za razhroščevalnik GNU gdb; prikaže vam lahko dokumentacijo za funkcijo, če z miško premaknete nad uporabo te funkcije; lahko se ukvarja z različnimi vrstami gradbenih okolij in prevajalniki (⪚ s projektom, ki temelji na make in cmake), ter mnogimi drugimi lepimi stvarmi, o katerih razpravljamo v tem priročniku.

## Seje in projekti: Osnove &kdevelop;

V tem razdelku bomo preučili nekaj terminologije o tem, kako &kdevelop; vidi svet in kako deluje strukturirano. Predvsem predstavljamo koncept sej in projektov ter pojasnjujemo, kako lahko v &kdevelop; nastavite projekte, na katerih želite delati.

### Terminologija

&kdevelop; ima koncept sej in projektov. Seja vsebuje vse projekte, ki so med seboj povezani. Za primere, ki sledijo, predpostavite, da ste razvijalec knjižnice in aplikacije, ki jo uporablja. Osrednje knjižnice KDE si lahko predstavljate kot prvo in &kdevelop; kot slednji. Drug primer: Recimo, da ste &Linux; heker jedra, vendar delate tudi na gonilniku naprave za &Linux; ki še ni bil združen v drevo jedra.

Torej, če vzamemo slednje kot primer, bi imeli sejo v &kdevelop; ki ima dva projekta: &Linux; jedro in gonilnik naprave. Želeli jih boste združiti v eno samo sejo (namesto dveh sej z enim projektom), ker bo koristno videti funkcije jedra in podatkovne strukture v &kdevelop; vsakič, ko pišete izvorno kodo za gonilnik — na primer tako, da lahko dobite funkcijo jedra in imena spremenljivk samodejno razširjene, ali da lahko vidite dokumentacijo funkcije jedra med hekanjem v gonilnik naprave.

Zdaj pa si predstavljajte, da ste tudi razvijalec KDE. Potem bi imeli drugo sejo, ki bi vsebovala KDE kot projekt. Načeloma bi lahko imeli samo eno sejo za vse to, vendar za to ni pravega razloga: pri delu v KDE vam ni treba dostopati do funkcij jedra ali gonilnika naprave; in ne želite, da se imena razredov KDE samodejno razširijo med delom na &Linux; jedro. Končno je sestavljanje nekaterih knjižnic KDE neodvisno od ponovnega prevajanja &Linux; jedro (medtem ko bi bilo pri vsakem prevajanju gonilnika naprave dobro ponovno prevesti jedro &Linux;, če so se nekatere datoteke glave jedra spremenile).

Nazadnje, še ena uporaba sej je, če delate tako na trenutni razvojni različici projekta kot tudi na veji: v tem primeru ne želite, da &kdevelop; zamenjati razrede, ki pripadajo glavni liniji in veji, tako da bi imeli dve seji z istim nizom projektov, vendar iz različnih imenikov (ki ustrezajo različnim razvojnim vejam).

### Nastavitev seje in uvoz obstoječega projekta

Ostanimo pri &Linux; primer jedra in gonilnika naprave — ta dva primera boste morda želeli nadomestiti s svojim naborom knjižnic ali projektov. Če želite ustvariti novo sejo, ki vsebuje ta dva projekta, pojdite v meni Seja Začni novo sejo zgoraj levo (ali, če je to ko prvič uporabite &kdevelop;: preprosto uporabite privzeto sejo, ki jo dobite ob prvi uporabi in je prazna).

Nato želimo to sejo zapolniti s projekti, za katere trenutno predvidevamo, da nekje že obstajajo (primer začenjanja projektov iz nič je obravnavan drugje v tem priročniku). Za to obstajata v bistvu dva načina, odvisno od tega, ali je projekt že nekje na vašem trdem disku ali pa ga je treba prenesti s strežnika.

#### Možnost 1: Uvoz projekta s strežnika sistema za nadzor različic

Najprej predpostavimo, da je projekt, ki ga želimo vzpostaviti — &Linux; jedro — se nahaja v nekem sistemu za nadzor različic na strežniku, vendar ga še niste odjavili na lokalni trdi disk. V tem primeru pojdite v meni Projekt, da ustvarite &Linux; jedro kot projekt znotraj trenutne seje in nato sledite tem korakom:

- Pojdite na Projekt Pridobi projekt, da uvozite projekt

- Nato imate več možnosti, da začnete nov projekt v trenutni seji, odvisno od tega, od kod naj izvirajo izvorne datoteke: Lahko samo pokažete &kdevelop; v obstoječem imeniku (glejte možnost 2 spodaj) ali pa vprašajte &kdevelop; da pridobite vire iz repozitorija.

- Ob predpostavki, da še nimate odjavljene različice:

  - V pogovornem oknu pod Izberi vir izberite uporabo Iz datotečnega sistema, Subversion, Git, GitHub ali KDE

  - Izberite delovni imenik kot cilj, v katerega naj bodo odjavljeni viri

  - Izberite URL za lokacijo repozitorija, kjer je mogoče pridobiti izvorne datoteke

  - Kliknite Pridobi. To lahko traja precej dolgo; odvisno od hitrosti vaše povezave in velikosti projekta. Na žalost v &kdevelop; 4.2.x vrstica napredka dejansko ne prikazuje ničesar, vendar lahko spremljate napredek tako, da občasno pogledate izhod ukaza ukazne vrstice

        du -sk /path/to/&kdevelop;/project

    , da vidite, koliko podatkov je že prenesenih.

Težava z vrstico napredka je bila prijavljena kot &kdevelop; napaka 256832.

V tem procesu dobim tudi sporočilo o napaki Določiti morate veljavno lokacijo za projekt, ki ga lahko varno prezrete.

- Od vas zahteva, da izberete &kdevelop; projektna datoteka v tem imeniku. Ker ga verjetno še nimate, preprosto pritisnite Naprej

- Znova pritisnite Naprej

- &kdevelop; vas bo nato prosil, da izberete vodjo projekta. Če ta projekt uporablja standardni &UNIX; make datotek, izberite upravitelja projekta makefile po meri

- &kdevelop; bo nato začel razčleniti celoten projekt. Spet bo trajalo kar nekaj časa, da pregledamo vse datoteke in indeksne razrede itd. V spodnjem desnem kotu glavnega okna je vrstica napredka, ki prikazuje, kako dolgo je ta postopek trajal. (Če imate več procesorskih jeder, lahko ta postopek pospešite tako, da odprete menijski element Nastavitve Konfiguriraj &kdevelop; in nato izberete Razčlenjevalnik ozadja na levi in povečanje števila niti za razčlenjevanje v ozadju na desni.)

#### 2. možnost: uvoz projekta, ki je že na vašem trdem disku

Druga možnost je, da če projekt, s katerim želite delati, že obstaja na vašem trdem disku (na primer, ker ste ga prenesli kot datoteko tar s strežnika FTP, ker ste že odjavili različico projekta iz sistema za nadzor različic, ali ker gre za vaš projekt, ki obstaja samo na vašem trdem disku), potem uporabite Projekti Odpri/uvozi projekt in v pogovornem oknu izberite imenik, v katerem se nahaja vaš projekt.

### Nastavitev aplikacije kot drugega projekta

Naslednja stvar, ki jo želite narediti, je nastaviti druge projekte v isti seji. V zgornjem primeru bi želeli dodati gonilnik naprave kot drugi projekt, kar lahko storite po popolnoma enakih korakih.

Če imate več aplikacij ali knjižnic, preprosto ponovite korake, da v svojo sejo dodate vedno več projektov.

### Ustvarjanje projektov iz nič

Seveda obstaja tudi možnost, da želite začeti nov projekt iz nič. To lahko storite z menijsko postavko Projekti Novo iz predloge ..., ki vam prikaže pogovorno okno za izbiro predloge. Nekatere projektne predloge so na voljo s &kdevelop;, še več pa jih je na voljo z namestitvijo aplikacije KAppTemplate. V pogovornem oknu izberite vrsto projekta in programski jezik, vnesite ime in lokacijo za svoj projekt ter kliknite Naprej.

Druga stran pogovornega okna vam omogoča nastavitev sistema za nadzor različic. Izberite sistem, ki ga želite uporabljati, in po potrebi izpolnite konfiguracijo za sistem. Če ne želite uporabljati sistema za nadzor različic ali ga želite pozneje nastaviti ročno, izberite Brez. Ko ste zadovoljni s svojo izbiro, pritisnite Dokončaj.

Vaš projekt je zdaj ustvarjen, tako da ga lahko poskusite zgraditi ali namestiti. Nekatere predloge bodo vsebovale komentarje v kodi ali celo ločeno datoteko README, zato je priporočljivo, da jih najprej preberete. Nato lahko začnete delati na svojem projektu z dodajanjem poljubnih funkcij.

## Delo z izvorno kodo

Pri razvoju programske opreme boste poleg odpravljanja napak največ časa porabili za branje in pisanje izvorne kode. V ta namen &kdevelop; vam ponuja veliko veliko različnih načinov za raziskovanje izvornih kod in za bolj produktivno pisanje. Kot je podrobneje razloženo v naslednjih razdelkih, &kdevelop; ni le urejevalnik vira — namesto tega je sistem za upravljanje izvorov, ki vam ponuja različne poglede ekstrahiranih informacij o datotekah, ki skupaj sestavljajo izvorno kodo vaše seje.

### Orodja in pogledi

Za delo s projekti &kdevelop; ima koncept orodij. Orodje ponuja poseben pogled na vir ali dejanje, ki ga je mogoče izvesti z njim. Orodja so predstavljena z gumbi po obodu okna (v navpičnem besedilu vzdolž levega in desnega roba ali vodoravno vzdolž spodnjega roba). Če jih kliknete, se razširijo v podokno — pogled — v glavnem oknu; če ponovno kliknete gumb orodja, podokno spet izgine.

Če želite, da podokno izgine, lahko tudi kliknete na x v zgornjem desnem kotu podokna

Zgornja slika prikazuje določen izbor orodij, poravnanih na levi in desni rob; na sliki je orodje Razredi odprto na levi in orodje Snippets na desni, skupaj z urejevalnikom za izvorno datoteko na sredini. V praksi boste večino časa verjetno imeli na levi odprt samo urejevalnik in morda orodje Razredi ali Brskalnik kode. Drug pogled orodja bo verjetno odprt samo začasno, ko boste uporabljali orodje, tako da bo večino časa več prostora za urejevalnik.

Ko zaženete &kdevelop; prvič bi že morali imeti gumb orodja Projekti. Kliknite nanj: odprlo se bo podokno, ki prikazuje projekte, ki ste jih dodali v sejo na dnu, in pogled datotečnega sistema imenikov vaših projektov na vrhu.

Obstaja veliko drugih orodij, ki jih lahko uporabljate z &kdevelop;, od katerih niso vsa na začetku prisotna kot gumbi na obodu. Če jih želite dodati, pojdite na menijski vnos Windows Dodaj pogled orodja. Tukaj je nekaj, ki se vam bodo verjetno zdeli koristni:

- Razredi: popoln seznam vseh razredov, ki so definirani v enem od projektov ali vaši seji, z vsemi njihovimi članskimi funkcijami in spremenljivkami. S klikom na katerega koli od članov se odpre okno urejevalnika vira na mestu elementa, ki ste ga kliknili.

- Dokumenti: Navede nekatere nedavno obiskane datoteke glede na vrsto (⪚ izvorne datoteke, datoteke popravkov, dokumenti z navadnim besedilom).

- Brskalnik kode: To orodje prikaže stvari, ki so povezane, odvisno od položaja kazalca v datoteki. Na primer, če ste v vrstici `#include`, prikaže informacije o datoteki, ki jo vključujete, na primer, kateri razredi so deklarirani v tej datoteki; če ste v obsegu datoteke v prazni vrstici, prikaže razrede in funkcije, deklarirane in definirane v trenutni datoteki (vse kot povezave: klik nanje vas pripelje do točke v datoteki, kjer je deklaracija ali definicija dejansko); če ste v definiciji funkcije, pokaže, kje je deklaracija, in ponudi seznam mest, kjer se uporablja funkcija.

- Datotečni sistem: prikaže drevesni pogled datotečnega sistema.

- Dokumentacija: Omogoča vam iskanje strani z navodili in drugih dokumentov pomoči.

- Izrezki: To zagotavlja zaporedja besedila, ki jih uporabite čez in jih ne želite pisati vsakič. Na primer, v projektu, iz katerega je bila ustvarjena zgornja slika, je pogosto treba napisati kodo, kot je

    for (typename Triangulation< dim>::active_cell_iterator cell = triangulation.begin_active(); cell != triangulation.end(); ++cell)

To je neroden izraz, vendar bo videti skoraj natanko tako vsakič, ko boste potrebovali takšno zanko — zaradi česar bi bil dober kandidat za delček.

- Konsole: Odpre okno ukazne vrstice znotraj glavnega okna &kdevelop; za občasen ukaz, ki ga morda želite vnesti (⪚ za zagon `./configure`).

Celoten seznam orodij in pogledov je podan tukaj.

Za mnoge programerje je navpični prostor na zaslonu najpomembnejši. V ta namen lahko uredite pogled orodja na levi in desni rob okna: če želite premakniti orodje, z desnim gumbom miške kliknite na njegov simbol in izberite novo mesto zanj.

### Raziskovanje izvorne kode

#### Lokalne informacije

&kdevelop; razume izvorno kodo, zato je res dober pri zagotavljanju informacij o spremenljivkah ali funkcijah, ki se lahko pojavijo v vašem programu. Tukaj je na primer posnetek dela z delom kode in premikanja miške nad simbolom `cell` v vrstici 1316 (če delate s tipkovnico, lahko dosežete enak učinek tako, da držite tipko Tipka &Alt; za nekaj časa):

&kdevelop; pokaže namig orodja, ki vključuje vrsto spremenljivke (tukaj: `DoFHandler<dim>active_cell_iterator`), kjer je ta spremenljivka deklarirana (vsebnik, ki je tukaj obkrožajoča funkcija `get_maximal_velocity`, ker je lokalna spremenljivka), kaj je (spremenljivka, ne funkcija, razred ali imenski prostor) in kje je deklarirana (v vrstici 1314, le nekaj vrstic višje v kodi) .

V trenutnem kontekstu simbol, nad katerim je lebdela miška, nima povezane dokumentacije. Če bi v tem primeru miško postavili nad simbol `get_this_mpi_process` v vrstici 1318, bi bil rezultat naslednji:

Tukaj &kdevelop; se je navzkrižno skliceval na deklaracijo iz popolnoma druge datoteke (`utilities.h`, ki je pravzaprav celo v drugem projektu iste seje) skupaj s komentarjem v slogu doxygen, ki tam spremlja deklaracijo.

Ti namigi orodij naredijo še bolj uporabne, ker so dinamični: lahko kliknem na vsebnik, da dobim informacije o kontekstu, v katerem je deklarirana spremenljivka (tj. o imenskem prostoru `System`, na primer, kje je je deklariran, definiran, uporabljen ali kakšna je njegova dokumentacija) in lahko kliknem na modre povezave, ki bodo ponastavile položaj kazalca na lokacijo deklaracije simbola (⪚ v `utilities.h` , vrstica 289) ali mi dajte seznam mest, kjer je ta simbol uporabljen v trenutni datoteki ali v vseh projektih trenutne seje. Slednje je pogosto uporabno, če želite raziskati, kako se na primer določena funkcija uporablja v veliki osnovi kode.

Podatki v opisu orodja so bežni — odvisno od tega, ali držite &Alt; tipko navzdol ali premikanje miške. Če želite zanjo trajnejše mesto, odprite pogled orodja Brskalnik kode v enem od podoken. Na primer, tukaj je kazalec na isti funkciji kot v zgornjem primeru, pogled orodja na levi pa predstavlja isto vrsto informacij kot v opisu orodja prej:

Premikanje kazalca na desni strani spremeni informacije, prikazane na levi. Še več, s klikom na gumb Zakleni trenutni pogled v zgornjem desnem kotu lahko zaklenete te informacije, tako da postanejo neodvisne od premikanja kazalca, medtem ko raziskujete tam predstavljene informacije.

Tovrstne informacije o kontekstu so na voljo na mnogih drugih mestih v &kdevelop;, ne le v urejevalniku izvorne vira. Če na primer držite &Alt; tipka na seznamu za dokončanje (npr. pri hitrem odpiranju) prav tako prinese kontekstne informacije o trenutnem simbolu.

#### Informacije o obsegu datoteke

Naslednja stopnja je pridobitev informacij o celotni izvorni datoteki, na kateri trenutno delate. V ta namen postavite kazalec na obseg datoteke v trenutni datoteki in poglejte, kaj prikazuje pogled orodja Brskalnik kode:

Tukaj prikazuje seznam imenskih prostorov, razredov in funkcij, deklariranih ali definiranih v trenutni datoteki, kar vam daje pregled nad tem, kaj se dogaja v tej datoteki, in sredstvo za neposreden skok na katero koli od teh deklaracij ali definicij, ne da bi se pomikali gor in dol v datoteko ali iskanje določenega simbola.

Informacije, prikazane za obseg datoteke, so enake, kot so predstavljene v načinu Oris, ki je obravnavan spodaj za krmarjenje po izvorni kodi; razlika je v tem, da je orisni način le začasen opis orodja.

#### Informacije o projektu in obsegu seje

Obstaja veliko načinov za pridobivanje informacij o celotnem projektu (ali pravzaprav o vseh projektih v seji). Tovrstne informacije so običajno na voljo prek različnih pogledov orodij. Na primer, pogled orodja Razredi nudi drevesno strukturo vseh razredov in okoliških imenskih prostorov za vse projekte v seji, skupaj s funkcijami člani in spremenljivkami vsakega od teh razredov:

Če miškin kazalec premaknete nad vnos, ponovno pridobite informacije o simbolu, njegovi lokaciji deklaracije in definicije ter njegovi uporabi. Dvoklik na vnos v tem drevesnem pogledu odpre okno urejevalnika na mestu, kjer je simbol deklariran ali definiran.

Obstajajo pa tudi drugi načini gledanja na globalne informacije. Orodje Dokumenti na primer nudi pogled na projekt glede na vrste datotek ali drugih dokumentov, ki jih ta projekt sestavlja:

#### Razloženo poudarjanje mavričnih barv

KDevelop uporablja različne barve za poudarjanje različnih predmetov v izvorni kodi. Če veste, kaj pomenijo različne barve, lahko zelo hitro izvlečete veliko informacij iz izvorne kode samo s pogledom na barve, ne da bi prebrali en sam znak. Pravila označevanja so naslednja:

- Objektom tipa Class / Struct, Enum (vrednosti in tip), (globalnim) funkcijam in članom razreda je vsak dodeljena lastna barva (razredi so zeleni, enumi so temno rdeči, člani pa temno rumeni ali vijolični, (globalno ) funkcije so vedno vijolične).

- Vse globalne spremenljivke so obarvane temno zeleno.

- Identifikatorji, ki so definicije vrste za drugo vrsto, so obarvani v modri barvi.

- Vse deklaracije in definicije objektov so v krepkem tisku.

- Če se do člana dostopa iz konteksta, kjer je definiran (osnovni ali izpeljani razred), je prikazan v rumeni barvi, sicer pa v vijolični barvi.

- Če je član zaseben ali zaščiten, se ob uporabi obarva v nekoliko temnejšo barvo.

- Za spremenljivke, lokalne za obseg telesa funkcije, so mavrične barve izbrane na podlagi zgoščene vrednosti identifikatorja. To vključuje parametre funkcije. Identifikator bo imel znotraj svojega obsega vedno isto barvo (vendar bo isti identifikator dobil drugačno barvo, če predstavlja drugačen predmet, tj. če je na novo definiran v bolj ugnezdenem obsegu) in običajno boste dobili isto barvo za isto ime identifikatorja v različnih obsegih. Torej, če imate več funkcij, ki sprejemajo parametre z istimi imeni, bodo vsi argumenti videti enako barvno. Te mavrične barve je mogoče izklopiti ločeno od globalnega barvanja v pogovornem oknu z nastavitvami.

- Identifikatorji, za katere &kdevelop; ni mogel določiti ustrezne deklaracije so obarvane belo. To je lahko včasih posledica manjkajočih direktiv `#include`.

- Poleg te barve bo uporabljeno običajno označevanje sintakse urejevalnika, kot je znano iz &kate;. Semantično označevanje &kdevelop; bo vedno preglasilo označevanje urejevalnika, če pride do spora.

### Krmarjenje po izvorni kodi

V prejšnjem razdelku smo razpravljali o raziskovanju izvorne kode, &ie; pridobivanje informacij o simbolih, datotekah in projektih. Naslednji korak je skakanje po vaši izvorni bazi, &ie; za navigacijo v njej. Spet obstajajo različne ravni, na katerih je to mogoče: lokalno, znotraj datoteke in znotraj projekta.

Številni načini krmarjenja po kodi so dostopni iz menija Krmarjenje v programu &kdevelop; glavno okno.

#### Lokalna navigacija

&kdevelop; je veliko več kot urejevalnik, vendar je tudi izvorni urejevalnik. Tako lahko seveda premikate kazalec gor, dol, levo ali desno v izvorni datoteki. Uporabite lahko tudi tipki PageUp in PageDown ter vse druge ukaze, ki jih uporabljate v katerem koli uporabnem urejevalniku.

#### Krmarjenje po obsegu datoteke in način orisa

V obsegu datoteke &kdevelop; ponuja veliko možnih načinov za krmarjenje po izvorni kodi. Na primer:

- Oris: Oris trenutne datoteke lahko dobite na vsaj tri različne načine:

  - Če kliknete besedilno polje Oris v zgornjem desnem kotu glavnega okna ali pritisnete &Alt;&Ctrl;N, se odpre spustni meni s seznami vse deklaracije funkcij in razredov:

    Nato lahko samo izberete, na katero želite skočiti, ali — če jih je veliko — začnite vnašati besedilo, ki se lahko pojavi v prikazanih imenih; v tem primeru, ko nadaljujete s tipkanjem, postaja seznam vedno manjši, saj so odstranjena imena, ki se ne ujemajo z že vnesenim besedilom, dokler niste pripravljeni izbrati ene od možnosti.

  - Postavitev kazalca na obseg datoteke (&ie; zunaj katere koli deklaracije ali definicije funkcije ali razreda) in odprto orodje Brskalnik kode:

    To vam nudi tudi oris tega, kar se dogaja v trenutni datoteki, in vam omogoča, da izberete, kam želite skočiti.

  - Če miško premaknete nad zavihek ene od odprtih datotek, se prav tako prikaže oris datoteke na tem zavihku.

- Izvorne datoteke so organizirane kot seznam deklaracij ali definicij funkcij. Če pritisnete &Alt;&Ctrl;PgUp in &Alt;&Ctrl;PgDown skočite na prejšnjo ali naslednjo definicijo funkcije v tem mapa.

#### Navigacija po obsegu projekta in seje: Semantična navigacija

Kot je bilo omenjeno na drugih mestih, &kdevelop; običajno ne upošteva posameznih izvornih datotek, ampak raje obravnava projekte kot celoto (ali raje vse projekte, ki so del trenutne seje). Posledično ponuja veliko možnosti za navigacijo skozi celotne projekte. Nekatere od teh izhajajo iz tega, o čemer smo že razpravljali v razdelku o Raziskovanju izvorne kode, druge pa so resnično drugačne. Skupna tema je, da te navigacijske funkcije temeljijo na semantičnem razumevanju kode, &ie; ponujajo vam nekaj, kar zahteva razčlenjevanje celotnih projektov in povezovanje podatkov. Naslednji seznam prikazuje nekaj načinov za krmarjenje po izvorni kodi, ki je raztresena po potencialno zelo velikem številu datotek:

- Kot je razvidno iz razdelka o Raziskovanju izvorne kode, lahko dobite opis orodja, ki pojasnjuje posamezne imenske prostore, razrede, funkcije ali imena spremenljivk, tako da z miško premaknete nad njih ali obdržite &Alt; nekaj časa pritisnjena tipka. Tukaj je primer: S klikom na povezave za deklaracijo simbola ali razširitvijo seznama uporab lahko skočite na te lokacije, po potrebi odprete ustrezno datoteko in postavite kazalec na ustrezno lokacijo. Podoben učinek je mogoče doseči z uporabo pogleda orodja Brskalnik kode, o katerem smo prav tako razpravljali prej.

- Hitrejši način, da skočite na deklaracijo simbola, ne da bi morali klikniti povezave v orodnem opisu, je, da začasno omogočite Način brskanja po izvoru tako, da držite &Alt; ali &Ctrl; ključ. V tem načinu je mogoče neposredno klikniti kateri koli simbol v urejevalniku, da skočite na njegovo deklaracijo.

- Hitro odpiranje: Zelo zmogljiv način skakanja na druge datoteke ali lokacije je uporaba različnih metod hitrega odpiranja v &kdevelop;. Obstajajo štiri različice teh:

  - Hitro odpiranje razreda (Navigacija Hitro odpiranje razreda ali &Alt;&Ctrl;C): Dobili boste seznam vseh razredov v tej seji. Začnite tipkati (del) imena razreda in seznam se bo še naprej zmanjševal na tiste, ki se dejansko ujemajo s tem, kar ste vnesli do zdaj. Če je seznam dovolj kratek, izberite element s tipkama gor in dol ter &kdevelop; vas bo pripeljal do mesta, kjer je prijavljen razred.

  - Funkcija hitrega odpiranja (Navigacija Funkcija hitrega odpiranja ali &Alt;&Ctrl;M): Dobili boste seznam vseh (članskih) funkcij, ki so del projektov v trenutni seji, in iz njega lahko izbirate na enak način kot zgoraj. Upoštevajte, da lahko ta seznam vključuje tako deklaracije funkcij kot definicije.

  - Hitro odpiranje datoteke (Navigacija Hitro odpiranje datoteke ali &Alt;&Ctrl;O): Dobili boste seznam vseh datotek, ki so del projektov v trenutni seji, in med njimi lahko izbirate na enak način kot zgoraj.

  - Univerzalno hitro odpiranje (Navigacija Hitro odpiranje ali &Alt;&Ctrl;Q): Če pozabite, katera kombinacija tipk je vezana na katerega od zgornjih ukazov, je to univerzalni švicarski nož — preprosto vam predstavi kombiniran seznam vseh datotek, funkcij, razredov in drugih stvari, med katerimi lahko izbirate.

- Skoči na deklaracijo/definicijo: Pri izvajanju (članske) funkcije je treba pogosto preklopiti nazaj na točko, kjer je funkcija deklarirana, na primer, da ohranimo seznam funkcijskih argumentov sinhroniziran med deklaracijo in definicijo , ali za posodobitev dokumentacije. Če želite to narediti, postavite kazalec na ime funkcije in izberite Navigacija Skoči na deklaracijo (ali pritisnite &Ctrl;. ), da pridete do mesta, kjer je deklarirana funkcija. Na prvotno mesto se lahko vrnete na več načinov:

  - Izbira Navigacija Skoči na definicijo (ali pritisnite &Ctrl;,).

  - Izbira Navigacija Prejšnji obiskani kontekst (ali pritisnite Meta Levo), kot je opisano spodaj.

Preskok na deklaracijo simbola je nekaj, kar ne deluje le, ko postavite kazalec na ime funkcije, ki jo trenutno izvajate. Namesto tega deluje tudi za druge simbole: če kazalec postavite na (lokalno, globalno ali člansko) spremenljivko in skočite na njeno deklaracijo, vas prav tako premakne na njeno lokacijo deklaracije. Podobno lahko postavite kazalec na ime razreda, na primer v spremenljivko deklaracije funkcije, in skočite na lokacijo njegove deklaracije.

- Preklapljanje med deklaracijo/definicijo: Če želite v zgornjem primeru skočiti na mesto deklaracije trenutne funkcije, morate kazalec najprej postaviti na ime funkcije. Če se želite izogniti temu koraku, lahko izberete Navigacija Preklopi definicijo/deklaracijo (ali pritisnete &Shift;&Ctrl;C), da skočite na deklaracijo funkcije, znotraj katere je trenutno kazalec. Če drugič izberete isti vnos v meniju, se vrnete na mesto, kjer je funkcija definirana.

- Prejšnja/naslednja uporaba: Postavite kazalec na ime lokalne spremenljivke in izberite Navigacija Naslednja uporaba (ali pritisnite Meta&Shift;Desno) vas premakne do naslednje uporabe te spremenljivke v kodi. (Upoštevajte, da to ne išče samo naslednje pojavitve imena spremenljivke, ampak dejansko upošteva, da so spremenljivke z enakim imenom, vendar v različnih obsegih, različne.) Enako velja za uporabo imen funkcij. Izbira Navigacija Prejšnja uporaba (ali pritisk Meta&Shift;levo) vas popelje do prejšnje uporabe simbola.

Če si želite ogledati seznam vseh uporab imena, po katerem krožijo ti ukazi, postavite kazalec nanj in odprite pogled orodja Brskalnik kode ali pritisnite in držite &Alt; gumb. To je podrobneje razloženo v razdelku Raziskovanje kode.

- Seznam konteksta: spletni brskalniki imajo to funkcijo, kjer se lahko premikate nazaj in naprej po seznamu nazadnje obiskanih spletnih strani. &kdevelop; ima enake funkcije, le da namesto spletnih strani obiskujete kontekste. Kontekst je trenutna lokacija kazalca in spremenite ga tako, da se od njega odmaknete z uporabo česar koli drugega kot ukazi kazalca — na primer s klikom na lokacijo, ki jo ponuja opis orodja, v orodnem pogledu Brskalnik kode, eno od možnosti v meniju Navigacija ali kateri koli drug navigacijski ukaz. Uporaba Navigacije Prejšnji obiskani kontekst (Meta Levo) in Navigacija Naslednji obiskani kontekst (Meta Desno) vas popelje po tem seznamu obiskanih kontekstov, tako kot vas gumba nazaj in naprej v brskalniku popeljeta na prejšnjo ali naslednjo spletno stran na seznamu obiskanih strani.

- Končno so na voljo pogledi orodij, ki vam omogočajo krmarjenje na različna mesta v vaši kodni bazi. Na primer, orodje Razredi vam nudi seznam vseh imenskih prostorov in razredov v vseh projektih trenutne seje in vam omogoča, da ga razširite, da vidite članske funkcije in spremenljivke vsakega od teh razredov:

  Dvoklik na element (ali prehod skozi kontekstni meni z desnim gumbom miške) vam omogoča, da skočite na lokacijo deklaracijo artikla. Druga orodja omogočajo podobne stvari; na primer pogled orodja Projekti nudi seznam datotek, ki so del seje:

  Spet dvoklik na datoteko jo odpre.

### Pisanje izvorne kode

Ker &kdevelop; razume izvorno kodo vaših projektov, lahko pomaga pri pisanju dodatne kode. V nadaljevanju so opisani nekateri načini, na katere to počne.

#### Samodokončanje

Verjetno najbolj uporabna od vseh funkcij pri pisanju nove kode je samodejno dokončanje. Razmislite na primer o naslednjem delu kode:

    class Car {
      // ...
      public:
        std::string get_color () const;
    };
    void foo()
    {
      Car my_ride;
      // ...do something with this variable...
      std::string color = my_ride.ge

V zadnji vrstici &kdevelop; si bo zapomnil, da je spremenljivka `my_ride` tipa `Car`, in samodejno ponudil dokončanje imena funkcije članice `ge` kot `get_color` . Pravzaprav je vse, kar morate storiti, to, da nadaljujete s tipkanjem, dokler funkcija samodokončanja ne zmanjša števila zadetkov na eno, in nato pritisnete &Enter; ključ:

Upoštevajte, da lahko kliknete namig orodja, da dobite več informacij o funkciji, razen vrste vrnitve in ali je javna:

Samodokončanje vam lahko prihrani veliko tipkanja, če vaš projekt uporablja dolga imena spremenljivk in funkcij; poleg tega se izogne napačnemu črkovanju imen (in posledičnih napak prevajalnika) in poenostavi zapomnitev natančnih imen funkcij; na primer, če se vsi vaši pridobivalniki začnejo z `get_`, potem vam bo funkcija samodokončanja lahko predstavila seznam možnih pridobivalnikov šele, ko vnesete prve štiri črke, kar vas bo verjetno spomnilo na proces, katera od funkcij je pravilna. Upoštevajte, da za delovanje samodejnega dokončanja ni treba niti deklaracije razreda `Car` niti spremenljivke `my_ride` v isti datoteki, v kateri trenutno pišete kodo. &kdevelop; preprosto mora vedeti, da so ti razredi in spremenljivke povezani, &ie; datoteke, v katerih so vzpostavljene te povezave, morajo biti del projekta, na katerem trenutno delate.

&kdevelop; ne ve vedno, kdaj naj vam pomaga pri dokončanju kode. Če se namig za samodejno dokončanje ne odpre samodejno, pritisnite &Ctrl;Preslednica, da ročno odprete seznam dokončanj. Na splošno velja, da samodokončanje deluje, &kdevelop; mora razčleniti vaše izvorne datoteke. To se zgodi v ozadju za vse datoteke, ki so del projektov trenutne seje, potem ko zaženete &kdevelop;, pa tudi po tem, ko za delček sekunde nehate tipkati (zakasnitev je mogoče konfigurirati).

&kdevelop; razčlenjuje samo datoteke, za katere meni, da so izvorna koda, kot je določeno z vrsto MIME datoteke. Ta vrsta ni nastavljena pred prvim shranjevanjem datoteke; posledično ustvarjanje nove datoteke in začetek pisanja kode vanjo ne bo sprožilo razčlenjevanja za samodejno dokončanje, dokler ni prvič shranjena.

Kot v prejšnji opombi, za delovanje samodokončanja morate &kdevelop; mora biti sposoben najti deklaracije v datotekah glave. Za to išče po številnih privzetih poteh. Če samodejno ne najde datoteke z glavo, bo ime datoteke z glavo podčrtano rdeče; v tem primeru z desnim klikom povejte &kdevelop; izrecno kje najti te datoteke in informacije, ki jih zagotavljajo.

Konfiguriranje samodokončanja je obravnavano v tem razdelku tega priročnika.

#### Dodajanje novih razredov in izvajanje članskih funkcij

&kdevelop; ima pomočnika za dodajanje novih razredov. Postopek je opisan v Ustvarjanje novega razreda. Preprost razred C++ lahko ustvarite tako, da izberete predlogo Basic C++ iz kategorije `Razred`. V pomočniku lahko izberemo nekatere preddefinirane članske funkcije, na primer prazen konstruktor, kopirni konstruktor in destruktor.

Po dokončanju pomočnika se nove datoteke ustvarijo in odprejo v urejevalniku. Datoteka glave že ima vključujoča varovala in novi razred ima vse članske funkcije, ki smo jih izbrali. Naslednja dva koraka bi bila dokumentiranje razreda in njegovih članskih funkcij ter njihova implementacija. Spodaj bomo obravnavali pripomočke za dokumentiranje razredov in funkcij. Za implementacijo že dodanih posebnih funkcij preprosto pojdite na zavihek bus.cpp, kjer je že na voljo okostje funkcij:

Če želite dodati nove članske funkcije, se vrnite na zavihek bus.h in dodajte ime funkcije. Na primer, dodajmo tole:

Upoštevajte, kako sem že začel z izvajanjem. Vendar v mnogih stilih kodiranja funkcija ne bi smela biti implementirana v datoteki glave, temveč v ustrezni datoteki .cpp. V ta namen poiščite kazalec na imenu funkcije in izberite Koda Premakni v vir ali pritisnite &Ctrl;&Alt;S. To odstrani kodo med zavitimi oklepaji iz datoteke glave (in jo nadomesti s podpičjem, kot je potrebno za prekinitev deklaracije funkcije) in jo premakne v izvorno datoteko:

Upoštevajte, da sem pravkar začel tipkati in da sem želel namigniti, da bi morala biti spremenljivka `students` verjetno članska spremenljivka razreda `Bus`, vendar je še nisem dodal. Upoštevajte tudi, kako &kdevelop; podčrta, da pojasni, da o spremenljivki ne ve ničesar. Toda to težavo je mogoče rešiti: s klikom na ime spremenljivke se prikaže naslednji opis orodja:

(Enako lahko dosežete z desnim klikom nanj in izbiro Reši: Razglasi kot.) Naj izberem 3 - private unsigned int (bodisi z miško ali s pritiskom &Alt;3) in nato poglejte, kako je prikazano v datoteki glave:

Omeniti velja, da &kdevelop; izvleče tip spremenljivke, ki jo je treba deklarirati, iz izraza, uporabljenega za njeno inicializacijo. Na primer, če bi dodajanje zapisali na naslednji precej dvomljiv način, bi bilo predlagano, da spremenljivko deklariramo kot tip `double`:

Kot zadnja točka: metoda, ki uporablja Kodo Premakni v vir, ne vstavi vedno nove funkcije člana, kamor bi jo morda želeli. Na primer, morda želite, da je označen kot `inline` in ga postavite na dno datoteke glave. V takem primeru napišite deklaracijo in začnite pisati definicijo funkcije takole:

&kdevelop; samodejno ponuja vse možne dopolnitve tega, kar bi lahko prišlo sem. Če izberete enega od dveh vnosov `add_students`, dobite naslednjo kodo, ki že izpolni celoten seznam argumentov:

V primeru, če sprejmete eno od možnosti, ki jih ponuja orodje za samodokončanje, dobite pravilen podpis, vendar na žalost izbrišete že napisano oznako `inline`. To je bilo prijavljeno kot &kdevelop; Napaka 274245.

#### Dokumentiranje deklaracij

Dobra koda je dobro dokumentirana, tako na ravni izvajanja algoritmov znotraj funkcij kot tudi na ravni vmesnika — &ie;, razrede, (članske in globalne) funkcije in (članske ali globalne) spremenljivke je treba dokumentirati, da se pojasni njihov namen, možne vrednosti argumentov, pred- in postpogoji itd. Kar zadeva dokumentiranje vmesnika, je doxygen postal de facto standard za oblikovanje komentarjev, ki jih je nato mogoče ekstrahirati in prikazati na spletnih straneh, po katerih je mogoče iskati.

&kdevelop; podpira ta slog komentarjev z zagotavljanjem bližnjice za ustvarjanje okvira komentarjev, ki dokumentirajo razred ali funkcijo člana. Recimo, da ste že napisali to kodo:

    class Car {
      public:
        std::string get_color () const;
    };

Zdaj želite dodati dokumentacijo tako razredu kot funkciji člana. V ta namen premaknite kazalec v prvo vrstico in izberite Koda Deklaracija dokumenta ali pritisnite &Alt;&Shift;D . &kdevelop; bo odgovoril z naslednjim:

Kazalec je že v sivo obarvanem območju, da lahko izpolnite kratek opis (za ključno besedo doxygen `@brief`) tega razreda. Nato lahko temu komentarju nadaljujete z dodajanjem dokumentacije, ki daje podrobnejši pregled tega, kaj počne razred:

Ko je urejevalnik znotraj komentarja, je besedilo komentarja označeno z zeleno (označevanje izgine, ko premaknete kazalec iz komentarja). Ko pridete do konca vrstice, pritisnite &Enter; in &kdevelop; samodejno začne novo vrstico, ki se začne z zvezdico, in postavi kazalec z zamikom enega znaka.

Zdaj pa dokumentirajmo funkcijo člana, ponovno tako, da kazalec postavimo na vrstico deklaracije in izberemo Koda Deklaracija dokumenta ali pritisnemo &Alt;&Shift;D:

Še enkrat, &kdevelop; samodejno ustvari okostje komentarja, vključno z dokumentacijo za samo funkcijo, kot tudi njeno vrnjeno vrsto. V trenutnem primeru je ime funkcije precej samoumevno, vendar argumenti funkcije pogosto niso in jih je treba posebej dokumentirati. Za ponazoritev si oglejmo nekoliko bolj zanimivo funkcijo in komentar &kdevelop; samodejno ustvari:

Tukaj predlagani komentar že vsebuje vsa polja Doxygen za posamezne parametre, npr.

#### Preimenovanje spremenljivk, funkcij in razredov

Včasih želimo preimenovati funkcijo, razred ali spremenljivko. Na primer, recimo, da to že imamo:

Nato ugotovimo, da nismo zadovoljni z imenom `remove_students` in bi ga raje poimenovali, recimo, `throw_out_students`. Za ime bi lahko naredili iskalno zamenjavo, vendar ima to dve pomanjkljivosti:

- Funkcijo je mogoče uporabiti v več kot eni datoteki.

- Resnično želimo samo preimenovati to funkcijo in se ne dotikati funkcij, ki imajo morda isto ime, vendar so deklarirane v drugih razredih ali imenskih prostorih.

Obe težavi je mogoče rešiti tako, da premaknete kazalec na katero koli pojavitev imena funkcije in izberete Koda Preimenuj deklaracijo (ali desno klik na ime in izbiro Preimenuj Bus::remove_students). Prikaže se pogovorno okno, kjer lahko vnesete novo ime funkcije in kjer si lahko ogledate tudi vsa mesta, kjer se funkcija dejansko uporablja:

#### Delčki kode

Večina projektov ima dele kode, ki jih je pogosto treba napisati v izvorno kodo. Primeri so: za pisce prevajalnikov, zanka čez vsa navodila; za pisce uporabniškega vmesnika preveri, ali je uporabniški vnos veljaven, in če ni, odpre polje z napako; v projektu avtorja teh vrstic bi šlo za kodo te vrste

    for (typename Triangulation::active_cell_iterator
           cell = triangulation.begin_active();
         cell != triangulation.end(); ++cell)
      ... do something with the cell ...

Namesto vnašanja tovrstnega besedila znova in znova (z vsemi sočasnimi tipkarskimi napakami, ki jih prinaša), orodje Snippets programa &kdevelop; lahko pomaga tukaj. V ta namen odprite pogled orodja (glejte Orodja in pogledi, če ustrezen gumb še ni na obodu vašega okna). Nato kliknite gumb Dodaj repozitorij (rahlo napačno ime — omogoča vam ustvarjanje poimenovane zbirke izrezkov za izvorne kode določene vrste, ⪚ izvorne kode C++) in ustvarite prazno repozitorij. Nato kliknite , da dodate delček in dobite pogovorno okno, kot je naslednje:

Ime delčka ne sme vsebovati presledkov ali drugih posebnih znakov, ker mora izgledati kot običajno ime funkcije ali spremenljivke (iz razlogov, ki bodo jasni v naslednjem odstavku).

Če želite uporabiti tako definiran delček, lahko med urejanjem kode samo vnesete ime delčka, kot bi vnesli ime katere koli druge funkcije ali spremenljivke. To ime bo na voljo za samodejno dokončanje — kar pomeni, da ni nobene škode pri uporabi dolgega in opisnega imena za delček, kot je zgornji — in ko sprejmete predlog orodnega opisa za samodokončanje (na primer samo s pritiskom na &Enter;), bo že vneseni del imena izrezkov nadomeščen s celotno razširitvijo izrezka in bo pravilno zamaknjen:

Upoštevajte, da za delovanje ni treba, da je pogled orodja Izrezki odprt ali viden: pogled orodja potrebujete samo za definiranje novih izrezkov. Alternativni, če manj priročen, način za razširitev delčka je, da ga preprosto kliknete v pogledu ustreznega orodja.

Izrezki so veliko močnejši od pravkar razloženih. Za popoln opis tega, kaj lahko počnete z njimi, glejte podrobno dokumentacijo orodja Snippets.

### Načini in delovni nizi

Če ste prišli tako daleč, si oglejte zgornji desni del &kdevelop; glavno okno: Kot je prikazano na sliki, boste videli, da obstajajo trije načini &kdevelop; lahko v: Koda (način, o katerem razpravljamo v trenutnem poglavju o delu z izvorno kodo), Odpravljanje napak (glejte Programi za odpravljanje napak) in Pregled (glejte Delo s sistemi za nadzor različic).

Vsak način ima svoj nabor orodij, ki so naložena po obodu, vsak način pa ima tudi delovni nabor trenutno odprtih datotek in dokumentov. Poleg tega je vsak tak delovni niz povezan s trenutno sejo, &ie; imamo zgoraj prikazano razmerje. Upoštevajte, da datoteke v delovnem nizu izvirajo iz iste seje, vendar lahko prihajajo iz različnih projektov, ki so del iste seje.

Če odprete &kdevelop; prvič je delovni niz prazen — ni odprtih datotek. Toda ko odprete datoteke za urejanje (ali odpravljanje napak ali pregledovanje v drugih načinih), se vaš delovni nabor poveča. Dejstvo, da vaš delovni niz ni prazen, je označeno s simbolom v zavihku, kot je prikazano spodaj. Opazili boste, da vsakič, ko zaprete &kdevelop; in ga kasneje znova zaženete, se delovni niz shrani in obnovi, &ie; dobite enak nabor odprtih datotek.

Če z miško premaknete nad simbol za delovni niz, dobite opis orodja, ki vam pokaže, katere datoteke so trenutno odprte v tem delovnem nizu (tukaj: `step-32.cc` in `korak -1.cc` datoteke). S klikom na rdeči znak minus se zapre zavihek za ustrezno datoteko. Morda je še bolj pomembno, da s klikom na ustrezno imenovan gumb lahko zaprete celoten delovni niz hkrati (tj. da zaprete vse trenutno odprte datoteke). Bistvo zapiranja delovnega nabora pa je v tem, da ne zapre samo vseh datotek, ampak dejansko shrani delovni nabor in odpre novega, še vedno praznega. To lahko vidite tukaj:

Bodite pozorni na dva simbola na levi strani treh zavihkov načina (srce in neidentificirani simbol na njegovi levi). Vsak od teh dveh simbolov predstavlja shranjen delovni niz poleg trenutno odprtega delovnega niza. Če z miško premaknete nad simbol srca, boste dobili nekaj takega:

Pokaže vam, da ustrezen delovni niz vsebuje dve datoteki in njuni ustrezni imeni projektov: `Makefile` in `changes.h`. Če kliknete Naloži, se zapre in shrani trenutni delovni niz (ki ima, kot je prikazano tukaj, odprti datoteki `tria.h` in `tria.cc`) in namesto tega odprite izbrani delovni niz. Delovni niz lahko tudi trajno izbrišete, s čimer ga odstranite iz niza shranjenih delovnih nizov.

### Nekaj uporabnih bližnjic na tipkovnici

Urejevalnik &kdevelop; sledi standardnim bližnjicam na tipkovnici za vse običajne operacije urejanja. Vendar pa podpira tudi številne naprednejše operacije pri urejanju izvorne kode, od katerih so nekatere vezane na določene kombinacije tipk. Naslednje je pogosto še posebej koristno:

Skakanje po kodi
&Ctrl;&Alt;O | Hitro odpiranje datoteke: vnesite del imena datoteke in izberite med vsemi datotekami v drevesih imenikov projektov trenutne seje, ki se ujemajo z nizom; datoteka se bo nato odprla
&Ctrl;&Alt;C | Hitro odpiranje razreda: vnesite del imena razreda in izberite med vsemi imeni razredov, ki se ujemajo; kazalec bo nato skočil na deklaracijo razreda
&Ctrl;&Alt;M | Funkcija hitrega odpiranja: vnesite del imena (članske) funkcije in izberite med vsemi imeni, ki se ujemajo; upoštevajte, da seznam prikazuje deklaracije in definicije, kazalec pa bo nato skočil na izbrani element
&Ctrl;&Alt;Q | Univerzalno hitro odpiranje: vnesite karkoli (ime datoteke, ime razreda, ime funkcije) in pridobite seznam vsega, kar se ujema, da izberete
&Ctrl;&Alt;N | Oris: Navedite seznam vseh stvari, ki se dogajajo v tej datoteki, ⪚ deklaracije razredov in definicije funkcij
&Ctrl;, | Skoči na definicijo funkcije, če je kazalec trenutno na deklaraciji funkcije
&Ctrl;. | Skoči na deklaracijo funkcije ali spremenljivke, če je kazalec trenutno v definiciji funkcije
&Ctrl;&Alt;PageDown | Skoči na naslednjo funkcijo
&Ctrl;&Alt;PageUp | Skoči na prejšnjo funkcijo
&Ctrl;G | Pojdi na vrstico

Iskanje in zamenjava
&Ctrl;F | Najdi
F3 | Najdi naslednjega
&Ctrl;R | Zamenjaj
&Ctrl;&Alt;F | Najdi-Zamenjaj v več datotekah

Druge stvari
&Ctrl;_ | Strni eno raven: odstranite ta blok iz pogleda, če se na primer želite osredotočiti na širšo sliko znotraj funkcije
&Ctrl;+ | Razširi eno raven: razveljavi strnitev
&Ctrl;D | Izkomentiraj izbrano besedilo ali trenutno vrstico
&Ctrl;&Shift;D | Komentar v izbranem besedilu ali trenutni vrstici
&Alt;&Shift;D | Dokumentirajte trenutno funkcijo. Če je kazalec na deklaraciji funkcije ali razreda, bo pritisk na to tipko ustvaril komentar v slogu doxygen, ki je vnaprej izpolnjen s seznamom vseh parametrov, vrnjenih vrednosti itd.
&Ctrl;T | Transponiraj trenutni in prejšnji znak
&Ctrl;K | Izbriši trenutno vrstico (opomba: to ni samo emacsovo brisanje od tu do konca vrstice)

## Generiranje kode s predlogami

&kdevelop; uporablja predloge za generiranje datotek izvorne kode in za izogibanje pisanju ponovljive kode.

### Ustvarjanje novega razreda

Najpogostejša uporaba za ustvarjanje kode je verjetno pisanje novih razredov. Če želite ustvariti nov razred v obstoječem projektu, z desno miškino tipko kliknite mapo projekta in izberite Ustvari iz predloge .... Isto pogovorno okno lahko zaženete v meniju s klikom na Datoteka Novo iz predloge ..., vendar ima uporaba projektne mape prednost nastavitve osnovni URL za izhodne datoteke. Izberite `Razred` v pogledu izbire kategorije ter želeni jezik in predlogo v drugih dveh pogledih. Ko izberete predlogo razreda, boste morali določiti podrobnosti novega razreda.

Najprej morate določiti identifikator za nov razred. To je lahko preprosto ime (na primer `Bus`) ali popoln identifikator z imenskimi prostori (na primer `Transportation::Bus`). V slednjem primeru &kdevelop; bo razčlenil identifikator in pravilno ločil imenske prostore od dejanskega imena. Na isti strani lahko dodate osnovne razrede za nov razred. Morda boste opazili, da nekatere predloge same izberejo osnovni razred, lahko ga odstranite in/ali dodate druge osnove. Tukaj bi morali napisati celotno izjavo o dedovanju, ki je odvisna od jezika, na primer `javni QObject` za C++, `extends SomeClass` za PHP ali preprosto ime razreda za Python.

Na naslednji strani vam je ponujen izbor virtualnih metod iz vseh podedovanih razredov, pa tudi nekaj privzetih konstruktorjev, destruktorjev in operatorjev. Če označite potrditveno polje poleg podpisa metode, boste to metodo implementirali v novem razredu.

Če kliknete Naprej, se prikaže stran, kjer lahko dodate člane v razred. Odvisno od izbrane predloge se te lahko pojavijo v novem razredu kot spremenljivke člana ali pa lahko predloga zanje ustvari lastnosti z nastavilci in pridobitelji. V jeziku, kjer je treba tipe spremenljivk deklarirati, kot je C++, morate podati tako tip kot ime člana, kot je `int number` ali `QString name`. V drugih jezikih lahko tip izpustite, vendar je dobro, da ga vseeno vnesete, ker bi ga lahko izbrana predloga še vedno uporabljala.

Na naslednjih straneh lahko izberete licenco za svoj novi razred, nastavite vse možnosti po meri, ki jih zahteva izbrana predloga, in konfigurirate izhodne lokacije za vse ustvarjene datoteke. S klikom na Dokončaj dokončate pomočnika in ustvarite nov razred. Ustvarjene datoteke se bodo odprle v urejevalniku, tako da lahko začnete dodajati kodo takoj.

Ko ustvarite nov razred C++, boste imeli možnost dodati razred v cilj projekta. Izberite cilj na pogovorni strani ali opustite stran in ročno dodajte datoteke cilju.

Če ste izbrali predlogo `Qt Object`, preverili nekaj privzetih metod in dodali dve spremenljivki člana, bi moral biti rezultat videti kot na naslednji sliki.

Vidite lahko, da so podatkovni člani pretvorjeni v lastnosti Qt s funkcijami dostopa in makri Q_PROPERTY. Argumenti nastavitvenim funkcijam se posredujejo celo s sklicem const, kjer je primerno. Poleg tega je deklariran zasebni razred in zasebni kazalec ustvarjen s Q_DECLARE_PRIVATE. Vse to naredi predloga, izbira druge predloge v prvem koraku bi lahko popolnoma spremenila rezultat.

### Ustvarjanje novega testa enote

Čeprav večina testnih ogrodij zahteva, da je vsak test tudi razred, &kdevelop; vključuje metodo za poenostavitev ustvarjanja testov enot. Če želite ustvariti nov preizkus, z desno miškino tipko kliknite mapo projekta in izberite Ustvari iz predloge .... Na strani za izbiro predloge izberite `Test` kot kategorijo, nato izberite svoj programski jezik in predlogo ter kliknite Naprej.

Pozvani boste k imenu testa in seznamu testnih primerov. Za testne primere morate podati le seznam imen. Nekateri okviri za testiranje enot, kot sta PyUnit in PHPUnit, zahtevajo, da se testni primeri začnejo s posebno predpono. V &kdevelop; je predloga odgovorna za dodajanje predpone, zato vam tu ni treba dodajati predpone testnim primerom. Ko kliknete Naprej, določite licenco in izhodne lokacije za ustvarjene datoteke in test bo ustvarjen.

Preizkusi enot, ustvarjeni na ta način, ne bodo samodejno dodani nobenemu cilju. Če uporabljate CTest ali kakšno drugo ogrodje za testiranje, ne pozabite dodati novih datotek v cilj.

### Druge datoteke

Medtem ko so razredi in testi enot deležni posebne pozornosti pri ustvarjanju kode iz predlog, lahko isto metodo uporabite za katero koli vrsto datotek izvorne kode. Lahko bi na primer uporabili predlogo za modul CMake Find ali datoteko .desktop. To lahko storite tako, da izberete Ustvari iz predloge... ter izberete želeno kategorijo in predlogo. Če izbrana kategorija ni niti `Razred` niti `Test`, boste imeli samo možnost izbire licence, morebitnih možnosti po meri, ki jih določa predloga, in lokacij izhodnih datotek. Tako kot pri predavanjih in testih bo pomočnik po dokončanju ustvaril datoteke in jih odprl v urejevalniku.

### Upravljanje predlog

Iz pomočnika Datoteka Novo iz predloge... lahko prenesete tudi dodatne predloge datotek, tako da kliknete Pridobi več predlog.... To odpre pogovorno okno Dobi vroče nove stvari, kjer lahko namestite dodatne predloge ter jih posodobite ali odstranite. Obstaja tudi konfiguracijski modul za predloge, do katerega lahko pridete s klikom na Nastavitve Konfiguriraj &kdevelop;Predloge. Od tam lahko upravljate predloge datotek (razložene zgoraj) in predloge projektov (ki se uporabljajo za ustvarjanje novih projektov).

Seveda, če nobena od razpoložljivih predlog ne ustreza vašemu projektu, lahko vedno ustvarite nove. Najlažji način je verjetno kopiranje in spreminjanje obstoječe predloge, medtem ko sta kratka vadnica in daljši dokument s specifikacijo je tam, da vam pomagata. Če želite kopirati nameščeno predlogo, odprite upravitelja predlog s klikom na Nastavitve Konfiguriraj KDevelop...Predloge, izberite predlogo, ki jo želite kopirati, nato kliknite gumb Izvleči predlogo. Izberite ciljno mapo, nato kliknite V redu in vsebina predloge bo ekstrahirana v izbrano mapo. Zdaj lahko uredite predlogo tako, da odprete ekstrahirane datoteke in jih spremenite. Ko končate, lahko uvozite novo predlogo v &kdevelop; tako, da odprete upravitelja predlog, aktivirate ustrezen zavihek (bodisi Predloge projektov ali Predloge datotek) in kliknete Naloži predlogo. Odprite opisno datoteko predloge, ki ima pripono `.kdevtemplate` ali `.desktop`. &kdevelop; bo stisnil datoteke v arhiv predloge in uvozil predlogo.

Ko kopirate obstoječo predlogo, jo preimenujte, preden jo znova uvozite. V nasprotnem primeru boste staro predlogo prepisali ali pa boste imeli dve predlogi z enakima imenoma. Če želite preimenovati predlogo, preimenujte opisno datoteko v nekaj edinstvenega (vendar obdržite pripono) in spremenite vnos `Name` v opisni datoteki.

Če želite predlogo napisati iz nič, lahko začnete z vzorčno predlogo razreda C++ tako, da ustvarite nov projekt in izberete `razred C++ Predloga` projekt v kategoriji `KDevelop`.

## Gradnja (prevajanje) projektov z datotekami Makefiles po meri

Številni projekti opisujejo, kako je treba prevesti izvorne datoteke (in katere datoteke je treba znova prevesti, ko se izvorna ali glava spremeni) z uporabo datotek Makefile, ki jih interpretira program make (glejte na primer GNU make). Pri preprostih projektih je pogosto ročno nastaviti takšno datoteko. Večji projekti pogosto integrirajo svoje Makefile z GNU autotools (autoconf, autoheader, automake). V tem razdelku preprosto predpostavimo, da imate Makefile za svoj projekt in želite učiti &kdevelop; kako komunicirati z njim.

&kdevelop; 4.x v času pisanja tega razdelka ne pozna GNU autotools. Če jih vaš projekt uporablja, boste morali v ukazni vrstici ročno zagnati `./configure` ali katerega koli drugega sorodnega ukaza. Če želite to narediti znotraj &kdevelop;, odprite orodje Konsole (če je potrebno, ga dodajte na obrobje glavnega okna z uporabo menija Windows Dodaj orodni pogled), ki vam ponuja lupinski pogled okna in zaženite `./configure` iz ukazne vrstice v tem pogledu.

Prvi korak je naučiti &kdevelop; o ciljih v vaših datotekah Makefiles. To lahko storite na dva načina: z izbiro posameznih ciljev Makefile in z izbiro nabora ciljev, ki jih boste morda želeli pogosto graditi. Za oba pristopa odprite orodje Projekti s klikom na gumb Projekti na obodu glavnega okna &kdevelop; (če tega gumba nimate, glejte zgoraj, kako da tam dodate gumb za orodje). Okno orodja Projekti ima dva dela: zgornjo polovico — z naslovom Projekti — navaja vse vaše projekte in vam omogoča, da razširite osnovna drevesa imenikov. Spodnja polovica — z naslovom Izbor projekta — navaja podmnožico tistih projektov, ki bodo izdelani, če izberete element menija Projekt Izbira gradnje ali pritisnete F8; k temu delu se bomo vrnili spodaj.

### Gradnja posameznih ciljev Makefile

V zgornjem delu pogleda projekta razširite poddrevo za en projekt, recimo tistega, za katerega želite zagnati določen cilj Makefile. To vam bo dalo ikone za (i) imenike v tem projektu, (ii) datoteke v imeniku najvišje ravni za ta projekt, (iii) Makefile cilja na &kdevelop; lahko identificira. Te kategorije so prikazane na desni sliki. Upoštevajte, da &kdevelop; razume sintakso datoteke Makefile do določene stopnje in vam zato lahko ponudi cilje, definirane v tej datoteki Makefile (čeprav ima to razumevanje svoje omejitve, če so cilji sestavljeni ali implicitni).

Če želite zgraditi katerega koli od tam navedenih ciljev, kliknite nanj z desnim gumbom miške in izberite Zgradi. Na primer, če to storite s ciljem clean, boste preprosto izvedli make clean. To lahko vidite v podoknu z naslovom Build, ki se odpre in prikazuje ukaz in izhod. (To okno ustreza orodju Build, tako da lahko okno zaprete in pozneje znova odprete z gumbom orodja Build na obodu glavnega okna. Prikazano je v spodnjem desnem kotu slike.)

### Izbiranje zbirke ciljev Makefile za ponovljeno gradnjo

Desni klik na posamezne cilje Makefile vsakič, ko želite nekaj zgraditi, bo hitro postaral. Namesto tega bi radi imeli posamezne cilje za enega ali več projektov v seji, ki jih lahko večkrat zgradimo brez veliko dela z miško. Tu nastopi koncept Izdelava ciljnih izbir: to je zbirka ciljev Makefile, ki so zgrajeni drug za drugim, kadar koli pritisnete gumb Izgradi izbor na seznamu gumbov na vrhu izberite element menija Projekt Izbira gradnje ali pritisnite funkcijsko tipko F8 .

Seznam izbranih ciljev Makefile je prikazan v spodnji polovici pogleda orodja Projekti.

Privzeto izbor vsebuje vse projekte, vendar lahko to spremenite. Na primer, če vaš seznam projektov vsebuje tri projekte (osnovno knjižnico L in dve aplikaciji A in B), vendar trenutno delate samo na projektu A, potem boste morda želeli projekt B odstraniti iz izbora tako, da ga označite v izbiro in pritisnite gumb . Poleg tega se verjetno želite prepričati, da je knjižnica L zgrajena pred projektom A, tako da premikate vnose v izboru gor in dol z uporabo gumbov na desni strani seznama. Določen cilj Makefile lahko dodate tudi v izbor tako, da ga kliknete z desno tipko miške in izberete Dodaj v buildset ali pa ga samo označite in pritisnete gumb tik nad seznamom izbranih ciljev.

&kdevelop; vam omogoča, da konfigurirate, kaj storiti, ko sestavite izbor. V ta namen uporabite menijsko postavko Projekt Odpri konfiguracijo. Tam lahko na primer izberete število sočasnih opravil, ki jih mora make izvesti — če ima vaš računalnik recimo 8 procesorskih jeder, bi bila koristna izbira, če bi v to polje vnesli 8. V tem pogovornem oknu je Privzeti cilj cilj Makefile, ki se uporablja za vse cilje v izboru.

### Kaj storiti s sporočili o napakah

Če prevajalnik naleti na sporočilo o napaki, preprosto kliknite vrstico s sporočilom o napaki in urejevalnik bo skočil na vrstico (in če je na voljo stolpec), kjer je bila sporočena napaka. Odvisno od sporočila o napaki, &kdevelop; vam lahko ponudi tudi več možnih dejanj za odpravo napake, na primer z razglasitvijo predhodno nedeklarirane spremenljivke, če je bil najden neznan simbol.

## Izvajanje programov v &kdevelop;

Ko sestavite program, ga boste želeli zagnati. Če želite to narediti, morate za svoje projekte konfigurirati Zagone. Zagon je sestavljen iz imena izvršljive datoteke, nabora parametrov ukazne vrstice in izvajalnega okolja (kot je zaženi ta program v lupini ali zaženi ta program v razhroščevalniku).

### Nastavitev zagonov v &kdevelop;

Če želite to nastaviti, pojdite na menijski element Zaženi Konfiguriraj zagone, označite projekt, za katerega želite dodati zagon, in kliknite gumb. Nato vnesite ime izvedljive datoteke in pot, kjer želite zagnati program. Če je zagon izvedljive datoteke odvisen od izdelave izvršljive datoteke in/ali drugih knjižnic, potem jih boste morda želeli dodati na seznam na dnu: v spustnem meniju izberite Build, nato pritisnite simbol na desni strani besedilnega polja in izberite cilj, ki ga želite ustvariti. V zgornjem primeru sem izbral cilj all iz projekta `1.deal.II` in `step-32` iz projekta `1. step-32`, da zagotovite, da sta osnovna knjižnica in aplikacijski program prevedena in posodobljena, preden se program dejansko izvede. Medtem ko ste že tam, lahko konfigurirate tudi zagon odpravljanja napak, tako da kliknete simbol Odpravljanje napak in dodate ime programa za odpravljanje napak; če je to sistemski privzeti razhroščevalnik (⪚ gdb v &Linux;u), vam tega koraka ni treba izvesti.

Zdaj lahko poskusite zagnati program: izberite Zaženi Izvedi zagon v meniju glavnega okna &kdevelop; (ali pritisnite &Shift; F9) in vaš program bi se moral izvajati v ločenem podoknu &kdevelop;. Zgornja slika prikazuje rezultat: novo podokno orodja Zaženi na dnu prikazuje izhod programa, ki se izvaja, v tem primeru programa `step-32`.

Če ste konfigurirali več zagonov, lahko izberete, kateri naj se zažene, ko pritisnete &Shift;F9 tako, da izberete Zaženi Trenutna konfiguracija zagona. Obstaja pa neočiten način za urejanje imena konfiguracije: v pogovornem oknu, ki se prikaže, ko izberete Zaženi Trenutna konfiguracija zagona dvokliknite ime konfiguracije v drevesnem pogledu na levi, kar vam bo omogočilo urejanje imena konfiguracije.

### Nekaj uporabnih bližnjic na tipkovnici

Izvajanje programa
F8 | Zgradi (izvedi klic)
&Shift;F9 | Zaženi
&Alt;F9 | Zaženite program v razhroščevalniku; morda boste želeli predhodno nastaviti prekinitvene točke, na primer z desnim klikom miške na določeno vrstico v izvorni kodi

## Razhroščevanje programov v &kdevelop;

### Zagon programa v razhroščevalniku

Ko imate konfiguriran zagon (glejte Izvajanje programov), ga lahko zaženete tudi v razhroščevalniku: izberite menijski element Zaženi Zagon za odpravljanje napak ali pritisnite &Alt;F9. Če poznate gdb, je učinek enak, kot če bi zagnali gdb z izvršljivo datoteko, navedeno v konfiguraciji zagona, in nato rekli `Zaženi`. To pomeni, da če program nekje pokliče `abort()` (⪚ ko naletite na neuspešno trditev) ali če pride do napake segmentacije, se bo razhroščevalnik ustavil. Po drugi strani pa, če se program izvaja do konca (z ali brez pravilne stvari), potem se razhroščevalnik ne bo sam ustavil, preden se program konča. V slednjem primeru boste želeli nastaviti prekinitveno točko na vseh tistih vrsticah vaše baze kode, kjer želite, da se razhroščevalnik ustavi, preden zaženete zagon odpravljanja napak. To lahko storite tako, da premaknete kazalec na takšno vrstico in izberete menijsko postavko Zaženi Preklopi prekinitveno točko ali z desnim klikom na vrstico in izbiro Preklopi prekinitveno točko v kontekstnem meniju.

Zagon programa v razhroščevalniku bo &kdevelop; v drugačnem načinu: zamenjal bo vse gumbe Orodja na obodu glavnega okna s tistimi, ki so primernejši za odpravljanje napak in ne za urejanje. Če pogledate zgornji desni del okna, lahko vidite, v katerem načinu ste: tam so zavihki z imenom Pregled, Odpravljanje napak in Koda; s klikom na njih lahko preklapljate naprej in nazaj med tremi načini; vsak način ima svoj niz pogledov orodij, ki jih lahko konfigurirate na enak način, kot smo konfigurirali orodja Koda v razdelku Orodja in pogledi.

Ko se razhroščevalnik ustavi (na prelomni točki ali točki, kjer se kliče `abort()`), lahko pregledate različne informacije o svojem programu. Na zgornji sliki smo na primer izbrali orodje Frame Stack na dnu (približno enakovredno backtrace in gdb >info threads ukazi), ki prikazuje različne niti, ki se trenutno izvajajo v vašem programu na levi (tukaj jih je skupaj 8) in kako je izvajanje prišlo do trenutne ustavitvene točke na desni (tukaj: `main ()`, ki se imenuje `run()`; seznam bi bil daljši, če bi se ustavili v funkciji, ki jo kliče sam `run()`). Na levi strani lahko pregledamo lokalne spremenljivke, vključno s trenutnim objektom (objekt, na katerega kaže spremenljivka `this`).

Od tu lahko naredite različne možnosti: Izvedete lahko trenutno vrstico (F10, gdb ukaz next), stopite v funkcije (F11, ukaz step gdb) ali zaženite do konca funkcije (F12 , ukaz gdb finish). Na vsaki stopnji &kdevelop; posodobi spremenljivke, prikazane na levi, na njihove trenutne vrednosti. Z miško se lahko tudi pomaknete nad simbol v kodi, npr. spremenljivka; &kdevelop; bo nato prikazal trenutno vrednost tega simbola in ponudil zaustavitev programa med izvajanjem, ko se vrednost te spremenljivke naslednjič spremeni. Če poznate gdb, lahko tudi kliknete na gumb orodja GDB na dnu in imate možnost vnašanja ukazov gdb, na primer v da spremenite vrednost spremenljivke (za kar se trenutno zdi, da ne obstaja drug način).

### Priključitev razhroščevalnika delujočemu procesu

Včasih želimo odpraviti napake v programu, ki se že izvaja. En scenarij za to je odpravljanje napak v vzporednih programih z uporabo MPI ali za odpravljanje napak v dolgotrajnem procesu v ozadju. Če želite to narediti, pojdite na menijski vnos Zaženi Pripni procesu, ki bo odprl okno, podobno zgornjemu. Izbrati boste želeli program, ki ustreza vašemu trenutno odprtemu projektu v &kdevelop; - v mojem primeru bi bil to program step-32.

Ta seznam programov je lahko zmeden, ker je pogosto dolg, kot je prikazano tukaj. Življenje si lahko nekoliko olajšate tako, da odprete spustno polje v zgornjem desnem kotu okna. Privzeta vrednost je Uporabniški procesi, &ie; vsi programi, ki jih poganja kateri koli uporabnik, ki je trenutno prijavljen v ta računalnik (če je to vaš namizni ali prenosni računalnik, ste verjetno edini tak uporabnik, razen root in različnih servisnih računov); seznam pa ne vključuje procesov, ki jih izvaja root uporabnik. Seznam lahko omejite tako, da izberete Lastni procesi, s čimer odstranite vse programe, ki jih izvajajo drugi uporabniki. Ali še bolje: izberite Samo programi, kar odstrani veliko procesov, ki se uradno izvajajo pod vašim imenom, vendar s katerimi običajno ne komunicirate, kot so upravitelj oken, opravila v ozadju in tako naprej. niso verjetni kandidati za odpravljanje napak.

Ko izberete proces, vas pripenjanje k njemu pripelje v način za odpravljanje napak &kdevelop;, odprete vse običajne poglede orodij za odpravljanje napak in ustavite program na mestu, kjer je bil, ko ste ga priključili. Nato boste morda želeli nastaviti prekinitvene točke, točke pogleda ali kar koli drugega, kar je potrebno, in nadaljevati izvajanje programa tako, da obiščete postavko menija Zaženi Nadaljuj.

### Nekaj uporabnih bližnjic na tipkovnici

Odpravljanje napak
F10 | Stopi čez (gdb-jev naslednji)
F11 | Stopite v (gdb-jev korak)
F12 | Izstopite iz (gdb-jev finish)

## Delo s sistemi za nadzor različic

Če delate z večjimi projekti, je verjetno, da izvorno kodo upravlja sistem za nadzor različic, kot je subversion ali git. Naslednji opis je napisan s pogledom na subversion, vendar bo enako resničen, če uporabljate git ali kateri koli drug podprt sistem za nadzor različic.

Prvič ne, če je imenik, v katerem je projekt, pod nadzorom različic, &kdevelop; bo samodejno opazil. Z drugimi besedami: Ni nujno, da &kdevelop; da preverite samo kopijo, ko nastavite svoj projekt; v redu je, da &kdevelop; v imeniku, v katerega ste predhodno odjavili kopijo iz repozitorija. Če imate tak imenik pod nadzorom različic, odprite pogled orodja Projekti. Nato lahko storite več stvari:

- Če je vaš imenik zastarel, ga lahko posodobite iz repozitorija: kliknite na ime projekta z desnim gumbom miške, pojdite v meni Subversion in izberite Posodobi. S tem bodo vse datoteke, ki pripadajo temu projektu, posodobljene glede na repozitorij.

- Če želite to dejanje omejiti na posamezne podimenike ali datoteke, razširite drevesni pogled tega projekta na želeno raven in z desno miškino tipko kliknite ime podimenika ali datoteke, nato pa storite enako kot zgoraj.

- Če ste uredili eno ali več datotek, razširite pogled tega projekta na imenik, v katerem so te datoteke, in z desnim klikom na imenik. To vam daje menijsko postavko Subversion, ki vam ponuja različne izbire. Izberite Primerjaj z osnovo, da vidite razlike med različico, ki ste jo uredili, in različico v repozitoriju, ki ste jo predhodno odjavili (revizija osnova). Nastali pogled bo pokazal razlike za vse datoteke v tem imeniku.

- Če ste urejali samo eno datoteko, lahko dobite tudi meni Subversion za to datoteko tako, da enostavno z desnim klikom kliknete ustrezno ime datoteke v pogledu projekta. Še preprosteje, z desnim klikom na pogled Urejevalnik, v katerem ste odprli to datoteko, boste dobili tudi to menijsko možnost.

- Če želite preveriti eno ali več urejenih datotek, z desno miškino tipko kliknite posamezno datoteko, podimenik ali celoten projekt in izberite Subversion Commit . S tem boste prešli v način Pregled, tretji način poleg Kode in Odpravljanja napak, kot lahko vidite v zgornjem desnem kotu okna &kdevelop; glavno okno. Slika na desni prikazuje, kako to izgleda. V načinu Pregled vam zgornji del prikazuje razlike za celoten podimenik/projekt in vsako posamezno spremenjeno datoteko z označenimi spremembami (glejte različne zavihke v tem delu okna). Privzeto so vse spremenjene datoteke v naboru sprememb, ki ga boste objavili, vendar lahko prekličete izbor nekaterih datotek, če njihove spremembe niso povezane s tem, kar želite potrditi. Na primer, v primeru na desni sem preklical izbiro `step-32.cc` in `step-32.prm`, ker spremembe v teh datotekah nimajo nobene zveze z drugimi tiste, ki sem jih naredil za ta projekt in jih še ne želim prijaviti (morda bom pozneje želel to narediti v ločeni objavi). Ko pregledate spremembe, lahko v besedilno polje vnesete sporočilo o potrditvi in pritisnete Potrdi na desni, da stvari pošljete.

- Tako kot pri ogledu razlik, če želite preveriti eno samo datoteko, lahko z desno miškino tipko kliknete okno urejevalnika, da dobite Subversion Commit element menija.

## Prilagajanje &kdevelop;

Včasih želite spremeniti privzeti videz ali vedenje &kdevelop;, na primer, ker ste navajeni na drugačne bližnjice na tipkovnici ali ker vaš projekt zahteva drugačen slog zamikov za izvorno kodo. V naslednjih razdelkih na kratko obravnavamo različne načine, kako &kdevelop; lahko prilagodite tem potrebam.

### Prilagajanje urejevalnika

V vgrajenem urejevalniku &kdevelop; in okoli njega lahko konfigurirate številne uporabne stvari. Bolj univerzalna uporaba je vklop oštevilčevanja vrstic z uporabo menijskega vnosa Urejevalnik Pogled Prikaži številke vrstic, kar omogoča lažje ujemanje sporočil o napakah prevajalnika ali sporočil o odpravljanju napak z lokacijami v kodi. V istem podmeniju boste morda želeli vklopiti tudi Obrobo ikone – stolpec na levi strani kode, v katerem &kdevelop; bo prikazal ikone, na primer, ali je v trenutni vrstici prelomna točka.

### Prilagajanje zamika kode

Mnogi od nas imajo radi kodo, oblikovano na poseben način. Številni projekti prav tako uveljavljajo določen slog zamika. Nobeden se ne sme ujemati s privzetim slogom zamika &kdevelop;. Vendar pa je to mogoče prilagoditi: pojdite na menijski element Nastavitve Prilagodi &kdevelop;, nato kliknite Izvorni format na levi. Izberete lahko enega od vnaprej določenih slogov zamikov, ki so pogosto v uporabi, ali pa določite svojega tako, da dodate nov slog in ga nato uredite. Morda ne obstaja način, da natančno ponovno ustvarite slog, v katerem so bili izvori vašega projekta zamaknjeni v preteklosti, vendar se lahko približate z uporabo nastavitev za nov slog; primer je prikazan na spodnjih slikah.

Z &kdevelop; 4.2.2, lahko ustvarite nov slog za določen tip mime (⪚ za datoteke glave C++), vendar ta slog ni prikazan na seznamu možnih slogov za druge tipe mime (⪚ za izvorne datoteke C++) čeprav bi bilo seveda koristno uporabiti isti slog za obe vrsti datotek. Zato boste morali slog definirati dvakrat, enkrat za glavo in enkrat za izvorne datoteke. To je bilo prijavljeno kot &kdevelop; napaka 272335.

### Prilagajanje bližnjic na tipkovnici

&kdevelop; ima skoraj neomejen seznam bližnjic na tipkovnici (nekatere so navedene v razdelkih z uporabnimi bližnjicami na tipkovnici več poglavij tega priročnika), ki jih lahko spremenite po svojem okusu v meniju Nastavitve Konfiguriraj bližnjice. Na vrhu pogovornega okna lahko vnesete iskalno besedo in prikaže samo tiste ukaze, ki se ujemajo; nato lahko uredite, katera kombinacija tipk je vezana na ta ukaz.

Dve, ki se ju je izkazalo za zelo koristno spremeniti, sta nastavitev Poravnaj na tipka (mnogi ljudje običajno ne vnašajo zavihkov ročno in imajo raje, če urejevalnik izbere postavitev kode; s spremenjeno bližnjico pritisnete naredi &kdevelop; zamik/zamik/poravnavo kode). Drugi je postavitev Preklopi prekinitveno točko na &Ctrl;B, ker je to precej pogosta operacija.

### Prilagajanje samodokončanja kode

Dopolnjevanje kode je obravnavano v razdelku tega priročnika o pisanju izvorne kode. V &kdevelop; prihaja iz dveh virov: urejevalnika in mehanizma za razčlenjevanje. Urejevalnik (&kate;) je komponenta večjega okolja KDE in ponuja samodejno dokončanje na podlagi besed, ki jih je že videl v drugih delih istega dokumenta. Takšna samodokončanja lahko v opisu orodja prepoznate po ikoni pred njim:

Dopolnjevanje kode urejevalnika je mogoče prilagoditi prek Nastavitve Konfiguriraj urejevalnik Urejanje Samodejno dokončanje. Zlasti lahko izberete, koliko znakov morate vnesti v besedo, preden se začne samodejno dokončanje.

Po drugi strani pa je lastno samodejno dokončanje &kdevelop; veliko močnejše, saj upošteva semantične informacije o kontekstu. Na primer, ve, katere članske funkcije ponuditi, ko vnesete `object.` itd., kot je prikazano tukaj:

Te informacije o kontekstu prihajajo iz različnih vtičnikov za jezikovno podporo, ki jih je mogoče uporabiti, potem ko je bila dana datoteka shranjena (tako da lahko preveri vrsto datoteke in uporabi pravilno jezikovno podporo).

Dokončanje &kdevelop; je nastavljeno tako, da se prikaže med tipkanjem, takoj, skoraj povsod, kjer bi lahko nekaj dokončal. To je mogoče konfigurirati v Nastavitve Konfiguriraj &kdevelop;Jezikovna podpora. Če še ni nastavljen (kot bi moral biti privzeto), se prepričajte, da je Omogoči samodejni priklic nastavljen.

&kdevelop; ima dva načina za prikaz dokončanja: Minimalno samodejno dokončanje prikaže samo osnovne informacije v opisih orodij za dokončanje (&ie; imenski prostor, razred, funkcija ali ime spremenljivke). To bo videti podobno kot &kate; dokončanje (razen ikon).

Po drugi strani bo Popolno dokončanje dodatno prikazalo vrsto za vsak vnos in v primeru funkcij tudi argumente, ki jih sprejmejo. Poleg tega, če trenutno izpolnjujete argumente za funkcijo, bo popolno dokončanje imelo dodatno informacijsko polje nad kazalcem, ki vam bo pokazalo trenutni argument, na katerem delate.

Dokončanje kode &kdevelop; bi moralo prav tako postaviti na vrh in zeleno označiti vse elemente dokončanja, ki se ujemajo s trenutno pričakovanim tipom pri minimalnem in polnem dokončanju, znano kot najboljša ujemanja.

Tri možne izbire za stopnjo dokončanja v konfiguracijskem pogovornem oknu so:

- Vedno minimalno dokončanje: Nikoli ne prikaži Popolnega dokončanja

- Minimalno samodejno dokončanje: Prikaži samo Popolno dokončanje, ko je bilo samodejno dokončanje sproženo ročno (&ie; ko pritisnete &Ctrl;Preslednica )

- Vedno popolno dokončanje: Vedno prikaži Popolno dokončanje

## Zasluge in licenca

Avtorske pravice za dokumentacijo si oglejte zgodovino strani KDevelop4/Manual

Prevod: Matjaž Jeran matjaz.jeran@amis.net

&underFDL;
&documentation.index;