<chapter id="editing">
<title
>Redigeringsverktyg</title>

<sect1 id="editing-snippets">
<title
>Kodsnuttar</title>

<itemizedlist>
  <title
>Funktioner (inledande översikt)</title>
  <listitem
><para
>Delprogrammet för kodsnuttar lägger till en verktygsvy som normalt dockas till höger </para
></listitem>
  <listitem
><para
>Tillägg, redigering och borttagning av kodsnuttar är tillgängligt via en sammanhangsberoende meny. </para
></listitem>
  <listitem
><para
>Ett dubbelklick på en kodsnutt i listan infogar den i den aktiva vyn på markörens plats </para
></listitem>
  <listitem
><para
>Verktygstips visar innehållet i en kodsnutt </para
></listitem>
  <listitem
><para
>Kodsnuttar lagras i användarens hemkatalog, så varje användare kan ha sina egna kodsnuttar </para
></listitem>
  <listitem
><para
>Kodsnuttar kan innehålla variabler på formen $<varname
>VARNAMN</varname
>$. När kodsnutten används, frågas användaren efter ersättningsvärden för variablerna </para
></listitem>
</itemizedlist>
</sect1
> <!-- editing-snippets -->

<sect1 id="keyboardmapping">
<title
>Tangentanvändning</title>
<indexterm zone="keyboardmapping"
><primary
>tangentbindningar</primary
></indexterm>

<para
>I det följande listar vi normala tangentbindningar för standardeditorn. Du kan anpassa dem som du vill (hur då?). </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Vänster </keycap
></para
></entry>
<entry
><para
>Flyttar ett tecken åt vänster </para
></entry
></row>

<row
><entry
><para
><keycap
>Höger </keycap
></para
></entry>
<entry
><para
>Flyttar ett tecken åt höger </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Vänster </keycap
></keycombo
></para
></entry>
<entry
><para
>Flyttar ett ord åt vänster </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Höger </keycap
></keycombo
></para
></entry>
<entry
><para
>Flyttar ett ord åt höger </para
></entry
></row>

<row
><entry
><para
><keycap
>Upp </keycap
></para
></entry>
<entry
><para
>Flyttar upp en rad </para
></entry
></row>

<row
><entry
><para
><keycap
>Ner </keycap
></para
></entry>
<entry
><para
>Flyttar ner en rad </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Up </keycap
></para
></entry>
<entry
><para
>Flyttar upp en sida </para
></entry
></row>

<row
><entry
><para
><keycap
>Page Down </keycap
></para
></entry>
<entry
><para
>Flyttar ner en sida </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Page Up </keycap
></keycombo
></para
></entry>
<entry
><para
>Går till början av filen </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Page Down </keycap
></keycombo
></para
></entry>
<entry
><para
>Går till slutet av filen </para
></entry
></row>

<row
><entry
><para
><keycap
>Home </keycap
></para
></entry>
<entry
><para
>Går till början av raden </para
></entry
></row>

<row
><entry
><para
><keycap
>End </keycap
></para
></entry>
<entry
><para
>Går till slutet av raden </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>För alla tangenter ovan, kan dessutom skifttangenten tryckas ner, för att markera text från markörens nuvarande position till den nya. </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry
><para
><keycap
>Backsteg </keycap
></para
></entry>
<entry
><para
>Tar bort ett tecken åt vänster </para
></entry
></row>

<row
><entry
><para
><keycap
>Delete </keycap
></para
></entry>
<entry
><para
>Tar bort tecknet under markören </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> C </keycap
></keycombo
></para
></entry>
<entry
><para
>Kopierar den markerade texten till klippbordet </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> V </keycap
></keycombo
></para
></entry>
<entry
><para
>Klistrar in den markerade texten från klippbordet </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> X </keycap
></keycombo
></para
></entry>
<entry
><para
>Tar bort den markerade texten och lägger den på klippbordet </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Ctrl;<keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Ångra </para
></entry
></row>

<row
><entry
><para
><keycombo
>&Shift;&Ctrl;<keycap
> Z </keycap
></keycombo
></para
></entry>
<entry
><para
>Gör om </para
></entry
></row>

</tbody>
</tgroup>
</informaltable>

</sect1
> <!-- keyboardmapping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="editing-reporter">
<title
>Problemrapporter</title>

<para
>(...ännu inte skrivet...) </para>
</sect1
> <!-- editing-reporter -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="searchinggrepping">
<title
>Sökning och flerfilssökning</title>
<indexterm zone="searchinggrepping"
><primary
>sökning</primary
></indexterm>
<indexterm zone="searchinggrepping"
><primary
>hitta</primary
></indexterm>

<sect2 id="searching">
<title
>Söka efter text</title>

<para
><keycombo
><keycap
>Ctrl</keycap
><keycap
>F</keycap
></keycombo
>- Sök, <keycombo
><keycap
>Ctrl</keycap
><keycap
>R</keycap
></keycombo
>- Ersätt </para>

</sect2
> <!-- searching -->


<sect2 id="isearch">
<title
>I-sök</title>
<indexterm zone="isearch"
><primary
>i-sök</primary
></indexterm>
<indexterm zone="isearch"
><primary
>inkrementell sökning</primary
></indexterm>
<indexterm zone="isearch"
><primary
>sök</primary
><secondary
>inkrementell</secondary
></indexterm>

<para
>Den vanliga sökningen med <menuchoice
><guimenu
>Redigera</guimenu
><guimenuitem
>Sök</guimenuitem
></menuchoice
> kräver att du anger hela sökbegreppet innan du startar. Oftast är det mycket snabbare att söka inkrementellt. Om du klickar på sökfältet som heter <guilabel
>I-sök</guilabel
> i verktygsraden, sker sökningen medan du skriver. Du kommer att märka att det önskade resultatet ofta redan hittas när du har skrivit in 3 eller 4 tecken. </para>

</sect2
> <!-- isearch -->


<sect2 id="grep">
<title
>Flerfilsökning</title>
<indexterm zone="grep"
><primary
>sök</primary
><secondary
>i filer</secondary
></indexterm>

<para
>Båda sökmekanismerna som beskrivs ovan är begränsade till sökning i en källkodsfil. Ett ytterligare verktyg som låter dig söka igenom ett (möjligtvis stort) antal filer är tillgängligt via alternativet <guimenuitem
>Sök i filer...</guimenuitem
> i menyn <guimenu
>Redigera</guimenu
>. Det är i grunden ett gränssnitt för programmet &grep;(1). </para>

<para
>I dialogrutan kan du ange vilka filer som ska sökas i. Det finns ett antal jokertecken tillgängliga i en kombinationsruta. Genom att använda dem kan du enkelt begränsa sökmekanismen till exempel för deklarationsfiler. Dessutom kan du också ange en katalog där sökningen startas. Om du markerar rutan <guibutton
>Rekursiv</guibutton
>, går sökningen igenom alla kataloger i hierarkin under den angivna. </para>

<para
>Sökbegreppet är i grunden ett reguljärt uttryck som följer POSIX-syntax. Du kan till exempel använda begreppet <literal
>"\&lt;K.*"</literal
>, om du vill hitta alla ord som börjar med bokstaven K. Följande tecken tolkas på ett särskilt sätt: </para>

<informaltable>
<tgroup cols="2">
<tbody>

<row
><entry>
  <literal
>.</literal>
</entry
><entry
>Matchar alla tecken </entry
></row>
<row
><entry>
  <literal
>^</literal>
</entry
><entry
>Matchar början av en rad </entry
></row>
<row
><entry>
  <literal
>$</literal>
</entry
><entry
>Matchar slutet av en rad </entry
></row>
<row
><entry>
  <literal
>\&lt;</literal>
</entry
><entry
>Matchar början av ett ord </entry
></row>
<row
><entry>
  <literal
>\&gt;</literal>
</entry
><entry
>Matchar slutet av ett ord </entry
></row>
<row
><entry>
  <literal
>?</literal>
</entry
><entry
>Föregående objekt matchas mindre än en gång </entry
></row>
<row
><entry>
  <literal
>*</literal>
</entry
><entry
>Föregående objekt matchas noll eller flera gånger </entry
></row>
<row
><entry>
  <literal
>+</literal>
</entry
><entry
>Föregående objekt matchas en eller flera gånger </entry
></row>
<row
><entry>
  <literal
>{n}</literal>
</entry
><entry
>Föregående objekt matchas exakt n gånger </entry
></row>
<row
><entry>
  <literal
>{n,}</literal>
</entry
><entry
>Föregående objekt matchas n eller flera gånger </entry
></row>
<row
><entry>
  <literal
>{,n}</literal>
</entry
><entry
>Föregående objekt matchas mindre än n gånger </entry
></row>
<row
><entry>
  <literal
>{n,m}</literal>
</entry
><entry
>Föregående objekt matchas minst <literal
>n</literal
> gånger, men mindre än <literal
>m</literal
> gånger </entry
></row>

</tbody>
</tgroup>
</informaltable>

<para
>Bakåtreferenser till deluttryck inom parenteser är också tillgängliga med notationen <literal
>\n</literal
>. </para>

<para
>Som en särskild bonus för C++ programmerare, finns några sökmallar tillgängliga för typiska mönster. De låter dig till exempel söka efter alla anrop av medlemsfunktioner för ett visst objekt. </para>

<para
>När du väl har startat sökningen genom att klicka på knappen <guibutton
>Sök</guibutton
>, utförs den av en yttre, asynkron process. Alla objekt som hittas syns i vyn som heter <guilabel
>Flerfilsökning</guilabel
>. Därefter kan du hoppa till objekt som hittas genom att klicka på dem. Observera att grep söker igenom filerna som är lagrade i filsystemet. Om du har ändrade versioner av dem i editorn, kan du få felaktiga radnummer, eller vissa ogiltiga hittade objekt. Du kan undvika detta genom att spara alla filer innan. </para>

</sect2
> <!-- grep -->

</sect1
> <!-- searchinggrepping -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="code-completion">
<title
>Kodkomplettering</title>

<para
>(...ännu inte skrivet...) </para>
</sect1
> <!-- code-completion -->

<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->

<sect1 id="newfiles">
<title
>Skapa nya filer och klasser</title>

<para
>(...ännu inte skrivet...) </para>

<sect2 id="newfiles-edittemplates">
<title
>Redigera mallarna</title>

<para
>(...ännu inte skrivet...) </para>
</sect2
> <!-- newfiles-edittemplates -->

</sect1
> <!-- newfiles -->

</chapter
> <!-- editing -->
<!-- ====================================================================== -->
