Navigera i källkod

I det föregående avsnittet, har vi beskrivit hur källkod utforskas, dvs. få information om symboler, filer och projekt. Nästa steg är sedan att flytta sig i kodbasen, dvs. navigera i den. Det finns återigen olika nivåer där det är möjligt: lokalt, inom en fil, och inom ett projekt.

Notera

Många av sätten att navigera genom koden kan kommas åt via menyn Navigera i KDevelops huvudfönster.

Lokal navigering

KDevelop är mycket mer än en editor, men den är också en källkodseditor. Som sådan, kan du förstås flytta markören uppåt, neråt, åt vänster och åt höger i en källkodsfil. Du kan också använda tangenterna PageUp och PageDown, och alla andra kommandon som du är van vid från vilken användbar editor som helst.

Navigering på filnivå och översiktsläge

På filnivå erbjuder KDevelop många möjliga sätt att navigera igenom källkoden. Exempelvis:

  • Översikt: Du kan få en översikt av vad som finns i den aktuella filen på åtminstone tre olika sätt:

    • Att klicka på textrutan Översikt längst upp till höger i huvudfönstret, eller trycka på Alt+Ctrl+N, visar en kombinationsmeny som listar alla funktioner och klassdeklarationer:

      Därefter kan du helt enkelt välja vilken du vill gå till, eller (om det finns många) börja skriva vilken text som helst som ingår i namnen som visas. I detta fall, medan du fortsätter skriva, blir listan mindre och mindre medan namn som inte motsvarar texten som redan har skrivits tills du är klar att välja ett av de som visas.

    • Placera markören på filnivå (dvs. utanför någon funktion eller klassdeklarationer eller definitioner) och ha verktyget Kodbläddrare öppet:

      Det tillhandahåller en översikt av vad som händer i den aktuella filen, och låter dig välja vart du vill gå.

    • Att hålla musen över fliken för en av de öppna filerna ger också en översikt av filen under den fliken.

  • Källkodsfilerna är organiserade som en lista över funktionsdeklarationer eller definitioner. Alt+Ctrl+Page Up eller Alt+Ctrl+Page Down går till föregående eller nästa funktionsdefinition i filen.

Navigering på projekt- och sessionsnivå: semantisk navigering

Som nämnts på andra ställen, betraktar KDevelop inte oftast individuella källkodsfiler utan tittar istället på projektet som en helhet (eller snarare på alla projekt som ingår i den aktuella sessionen). Som en konsekvens, erbjuder det många möjligheter att navigera igenom hela projekt. Vissa av dem härleds från vad vi redan beskrivit i avsnittet Utforska källkod medan andra är genuint annorlunda. Det gemensamma temat är att navigeringsfunktionerna är baserade på en semantisk förståelse av koden, dvs. de erbjuder någonting som kräver tolkning av hela projekt och anslutande data. Följande lista visar några sätt att navigera igenom källkod som är utspridda över ett potentiellt mycket stor antal filer:

  • Som syns i avsnittet Utforska källkod, kan du få ett verktygstips som förklarar individuella namnrymder, funktions- eller variabelnamn genom att hålla musen över dem eller hålla tangenten Alt nedtryckt en stund. Här är ett exempel:

    Att klicka på länkarna för deklarationen av en symbol eller expandera listan av användningar låter dig gå till positionerna, och öppnar respektive fil om nödvändigt och placerar markören på motsvarande position. En liknande effekt kan åstadkommas genom att använda verktygsvyn Kodbläddrare som också beskrivits tidigare.

  • Ett snabbare sätt att gå till deklarationen av en symbol utan att behöva klicka på länkarna i verktygstipset är att tillfälligt aktivera Bläddringsläge för källkod genom att hålla nere tangenten Alt eller Ctrl. I det läget är det möjligt att direkt klicka på vilken symbol som helst i editorn för att gå till dess deklaration.

  • Snabböppna: Ett mycket kraftfullt sätt att gå till andra filer eller platser är att använda de olika metoderna för att snabböppna i KDevelop. Det finns fyra versioner av dem:

    • Snabböppna klass (NavigeraSnabböppna plats eller Alt+Ctrl+C): Du får en lista över alla klasser i sessionen. Börja skriva (en del av) namnet på en klass så fortsätter listan att skäras ner till bara de som verkligen motsvarar vad du hittills har skrivit in. Om listan är kort nog, välj ett element genom att använda tangenterna uppåt- eller neråtpil så tar KDevelop dig till positionen där klassen är deklarerad.

    • Snabböppna funktion (NavigeraSnabböppna funktion eller Alt+Ctrl+M): Du får en lista över alla (medlems) funktioner som ingår i projekten i den aktuella sessionen, och du kan välja dem i den på samma sätt som ovan. Observera att listan kan innehålla både funktionsdeklarationer och definitioner.

    • Snabböppna fil (NavigeraSnabböppna fil eller Alt+Ctrl+O): Du får en lista över alla filer som ingår i projekten i den aktuella sessionen, och du kan välja från den på samma sätt som ovan.

    • Generell snabböppna (NavigeraSnabböppna eller Alt+Ctrl+Q): Om du glömmer bort vilken tangentkombination hör ihop med vilket av de ovanstående kommandona, är det den generella lösningen. Det visar helt enkelt en kombinerad lista över alla filer, funktioner, klasser, och andra saker som du kan välja bland.

  • Gå till deklaration/definition: När en (medlems) funktion implementeras, behöver man ofta gå tillbaka till stället där funktionen är deklarerad, för att exempelvis hålla listan med funktionsargument synkroniserad mellan deklarationen och definitionen, eller för att uppdatera dokumentationen. För att göra det, placera markören på funktionsnamnet och välj NavigeraGå till deklaration (eller tryck på Ctrl+.) för att gå till positionen där funktionen deklareras. Det finns många olika sätt att komma tillbaka till den ursprungliga positionen:

    • Välja NavigeringGå till definition (eller tryck på Ctrl+,).

    • Välja NavigeringFöregående besökta sammanhang (eller tryck på Meta+Vänster), som beskrivs nedan.

Notera

Att gå till deklarationen av en symbol är något som inte bara fungerar när markören placeras på funktionsnamnet som du för närvarande håller på att implementera. Det fungerar dessutom på andra symboler: Att placera markören på en (lokal, global, eller medlems-) variabel och gå till dess deklaration tar dig också till deklarationens position. På liknande sätt kan du placera markören på ett klassnamn, exempelvis i en variabel- eller funktionsdeklaration, och gå till positionen för dess deklaration.

  • Byt mellan deklaration och definition: I exemplet ovan måste markören först placeras på funktionsnamnet för att gå till positionen för deklarationen av den aktuella funktionen. För att undvika steget, kan du välja NavigeraByt definition med deklaration (eller tryck på Skift+Ctrl+C) för att gå till funktionens deklaration som markören för närvarande befinner sig i. Att välja samma menyalternativ en gång till leder dig tillbaka till positionen där funktionen är definierad.

  • Föregående/Nästa användning: Att placera markören på en lokal variabels namn och välja NavigeringNästa användning (eller trycka på Meta+Skift+Högerpil) tar dig till nästa användning av variabeln i koden. (Observera att inte bara söker efter nästa förekomst av variabelnamnet utan tar i själva verket hänsyn till att variabler med samma namn men på olika nivåer är olika.) Samma sak fungerar för användning av funktionsnamn. Att välja NavigeringFöregående användning (eller trycka på Meta+Skift+Vänsterpil) tar dig till föregående användning av symbolen.

Notera

För att se listan över alla användningar av ett namn som kommandona går igenom, placera markören på det och öppna verktygsvyn Kodbläddrare eller tryck och håll nere tangenten Alt. Det förklaras mer detaljerat i avsnittet Utforska kod.

  • Sammanhangslistan: Webbläsare har funktionen så att man kan gå bakåt och framåt i listan med senast besökta webbsidor. KDevelop har samma sorts funktioner, utom att istället för webbsidor du besökt är det sammanhang. Ett sammanhang är markörens nuvarande plats, och du kan ändra den genom att navigera från den genom att använda vad som helst utom markörkommandon, till exempel genom att klicka på en plats som tillhandahålls av ett verktygstips, i verktygsvyn Kodbläddrare, ett av alternativen som ges av menyn Navigera, eller något annat navigeringskommando. Genom att använda NavigeraFöregående besöka sammanhang (Meta+Vänsterpil) och NavigeraNästa besökta sammanhang (Meta+Högerpil) tar dig till sammanhang precis som knapparna bakåt och framåt i en bläddrare tar dig till föregående eller nästa webbsida i listan med besökta sidor.

  • Slutligen finns det verktygsvyer som låter dig navigera till olika platser i din kodbas. Verktyget Klasser tillhandahåller exempelvis en lista med namnrymd och klasser för alla projekt i den aktuella sessionen, och låter dig expandera den för att se medlemsfunktioner och variabler i var och en av klasserna:

    Dubbelklicka på objektet (eller gå via den sammanhangsberoende menyn genom att använda höger musknapp), så tillhandahåller verktygsvyn Projekt en lista över filer som ingår i en session:

    Återigen, dubbelklicka på en fil öppnar den.