<chapter id="advanced-editing-tools">
<chapterinfo>
<authorgroup>
<author
>&Anders.Lund; &Anders.Lund.mail;</author>
<author
>&Dominik.Haumann; &Dominik.Haumann.mail;</author>
&Tom.Albers;&Natalie.Koning;&Freek.de.Kruijf; 
</authorgroup>
</chapterinfo>
<title
>Geavanceerde hulpmiddelen voor bewerking</title>

<sect1 id="advanced-editing-tools-comment">

<title
>Commentaar toevoegen/verwijderen</title>

<para
>Met de commando's "Commentaar" en "Commentaar verwijderen" in het menu <guimenu
>Hulpmiddelen</guimenu
> kunt u commentaarmarkering aan geselecteerde regels toevoegen of eruit verwijderen, mits commentaren door het bestandsformaat waar u aan werkt worden ondersteund. Als er geen tekst geselecteerd is wordt de huidige regel gebruikt.</para>

<para
>De regels over de wijze waarop commentaar ingevoegd wordt, zijn vastgelegd in de syntaxisdefinities. Als syntaxisaccentuering niet gedefinieerd is, zal commentaar invoegen/verwijderen niet mogelijk zijn. </para>

<para
>Sommige syntaxisdefinities definiëren commentaarmarkeringen per regel, sommige definiëren markeringen die over meedere regels kunnen lopen, en sommige definiëren beide. Indien er per regel gemarkeerd wordt, is het niet mogelijk om een selectie te markeren waarvan de laatste regel niet volledig is geselecteerd.</para>

<para
>Wanneer commentaarmarkering per regel mogelijk is, dan zal dit de voorkeur hebben. Het voorkomt namelijk problemen met genest commentaar (commentaar binnen commentaar).</para>

<para
>Wanneer commentaar verwijderd wordt, mogen er geen regels geselecteerd zijn die geen commentaar bevatten. Wanneer er commentaar dat over meerdere regels loopt verwijderd wordt, zullen eventuele spaties aan het begin en einde genegeerd worden.</para>

<para
><indexterm
><primary
>commentaar toevoegen</primary
></indexterm
> Om een gedeelte te markeren als commentaar kiest u het menu <menuchoice
><guimenu
>Hulpmiddelen</guimenu
> <guimenuitem
>Commentaar</guimenuitem
></menuchoice
>. U kunt ook de sneltoetsen <keycombo action="simul"
>&Ctrl;<keycap
>D</keycap
></keycombo
> gebruiken.</para>

<para
><indexterm
><primary
>commentaar verwijderen</primary
></indexterm
> Om commentaar te verwijderen kiest u het menu <menuchoice
><guimenu
>Hulpmiddelen</guimenu
><guimenuitem
>Commentaar verwijderen</guimenuitem
></menuchoice
>. U kunt ook de sneltoetsen <keycombo action="simul"
>&Ctrl;&Shift;<keycap
> D</keycap
></keycombo
> gebruiken.</para>

</sect1>

<sect1 id="advanced-editing-tools-commandline">
<title
>De commandoregel in de editor</title>

<para
>De editor-component van &kappname; beschikt over een interne commandoregel, zodat u diverse commando's direct, zonder uitgebreide GUI, kunt uitvoeren. De commandoregel bevindt zich onder het editor-gedeelte. Om hiermee te werken gebruikt u het menu <menuchoice
><guimenu
>Beeld</guimenu
> <guimenuitem
>Overschakelen naar commandoregel</guimenuitem
></menuchoice
> of drukt u op <keycombo action="simul"
><keycap
>F7</keycap
></keycombo
>. De commando's van de editor worden hieronder beschreven, extra commando's kunnen door plugins geleverd worden.</para>

<para
>Om een commando uit te voeren, typt u het commando en daarna drukt u op de Enter-toets. Op de commandoregel verschijnt een melding over het al dan niet slagen van de opdracht. Als u de commandoregel via <keycap
>F7</keycap
> geopend hebt, zal deze automatisch na een paar seconden verdwijnen. Om de melding te verwijderen en een nieuw commando te typen drukt u nogmaals op <keycap
>F7</keycap
>.</para>

<para
>Typ <command
>help</command
> om de ingebouwde help van de commandoregel te zien. Typ <command
>help list</command
> om een lijst met beschikbare commando's te zien. Om de help voor een specifiek commando te zien, typt u <command
>help <replaceable
>commando</replaceable
></command
>.</para>

<para
>De commandoregel houdt de geschiedenis van ingetypte commando's bij in een lijst, zodat u eerder getypte commando's opnieuw kunt gebruiken. Gebruik de toetsen <keycap
>Pijl omhoog</keycap
> en <keycap
>Pijl omlaag</keycap
> om door de lijst te navigeren. Wanneer een commando uit de lijst getoond wordt, is het argument-gedeelte geselecteerd, zodat u dit gemakkelijk kunt overschrijven.</para>

<sect2 id="advanced-editing-tools-commandline-commands">
<title
>Standaard commandoregel opdrachten</title>

<variablelist>
<title
>Argumenttypen</title>

<varlistentry>
<term
>BOOLEAN</term>
<listitem
><para
>Dit wordt gebruikt met commando's die iets aan- of uitzetten. Toegestane waarden zijn <userinput
>on</userinput
>, <userinput
>off</userinput
>, <userinput
>true</userinput
>, <userinput
>false</userinput
>, <userinput
>1</userinput
> of <userinput
>0</userinput
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
>INTEGER</term>
<listitem
><para
>Een geheel getal.</para
></listitem>
</varlistentry>

<varlistentry>
<term
>STRING</term>
<listitem
><para
>Een tekenreeks, omgeven door quotes (') of aanhalingstekens (") wanneer deze spaties bevat.</para
></listitem>
</varlistentry>

</variablelist>



<sect3 id="advanced-editing-tools-commandline-commands-configure">
<title
>commando's om de editor in te stellen</title>

<para
>Deze commando's worden door de editor-component geleverd en maken het mogelijk om instellingen voor het actieve document en het beeld te maken. Dit kan nuttig zijn als u andere dan de standaardinstellingen wilt gebruiken, bijvoorbeeld voor het inspringen. </para>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>set-tab-width</command
><arg choice="req"
>INTEGER width</arg
></cmdsynopsis
></term>
<listitem
><para
>Stelt de tablengte in op <userinput
>width</userinput
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-width</command
><arg choice="req"
>INTEGER width</arg
></cmdsynopsis
></term>
<listitem
><para
>Stelt de breedte voor het inspringen in op <userinput
>width</userinput
>. Gebruik dit alleen als u met spaties inspringt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-word-wrap-column</command
><arg choice="req"
>INTEGER width</arg
></cmdsynopsis
></term>
<listitem
><para
>Stelt de regellengte in op <userinput
>width</userinput
>. Dit wordt gebruikt als u tekst automatisch laat afbreken.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-icon-border</command
><arg choice="req"
>BOOLEAN enable</arg
> </cmdsynopsis
></term>
<listitem
><para
>Toont of verbergt de pictogramrand.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-folding-markers</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Toont of verbergt de vouwmarkeringen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-line-numbers</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Toont of verbergt de regelnummering.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-replace-tabs</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, worden tabs door spaties vervangen terwijl u typt. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-remove-trailing-space</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, worden spaties aan het einde van de egel verwijderd als de cursor naar een andere regel gaat.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-show-tabs</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, worden tabs en spaties aan het einde van de regel zichtbaar gemaakt door middel van een punt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-show-indent</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, wordt inspringen zichtbaar gemaakt door middel van een verticale lijn van puntjes.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-spaces</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, zal de editor elk inspringniveau met <option
>indent-width</option
> spaties laten inspringen in plaats van met tabs.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-mixed-indent</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, zal &kappname; tabs en spaties gebruiken voor het inspringen. Elk inspringniveau zal het aantal spaties hebben dat bij <option
>indent-width</option
> is ingesteld en meerdere inspringniveaus zullen geoptimaliseerd worden door zoveel mogelijk tabs te gebruiken.</para>
<para
>Wanneer dit commando uitgevoerd wordt, zal ook het inspringen met spaties ingeschakeld worden. Als de inspringbreedte niet gespecificeerd is, zal deze op de helft van <option
>tab-width</option
> voor het document ingesteld worden.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-word-wrap</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Schakelt dynamische regelafbreking in of uit, afhankelijk van <userinput
>enable</userinput
>.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-replace-tabs-save</command
><arg choice="req"
>BOOLEAN enable </arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, zullen tabs vervangen worden door spaties zodra het document opgeslagen wordt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-remove-trailing-space-save</command
><arg choice="req"
>BOOLEAN enable</arg
></cmdsynopsis
></term>
<listitem
><para
>Als deze optie ingeschakeld is, zullen spaties aan het einde van elke regel verwijderd worden zodra het document opgeslagen wordt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-indent-mode</command
><arg choice="req"
>STRING name</arg
></cmdsynopsis
></term>
<listitem
><para
>Stelt de automatische inspringmodus in op <userinput
>naam</userinput
>. Als <userinput
>naam</userinput
> onbekend is, wordt "none" (geen) gebruikt. Geldige modi zijn 'none', 'normal', 'cstyle', 'haskell', 'lilypond', 'lisp', 'python', 'ruby' en 'xml'.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-auto-ident</command
><arg choice="req"
>BOOLEAN script</arg
></cmdsynopsis
></term>
<listitem
><para
>Automatisch inspringen in- of uitschakelen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-highlight</command
><arg choice="req"
>STRING highlight</arg
></cmdsynopsis
></term>
<listitem
><para
>Stelt de accentuering van syntaxis in voor het document. Het argument moet een geldige naam zijn, zoals die in het menu <menuchoice
><guimenu
>Hulpmiddelen</guimenu
> <guisubmenu
>Accentueringmodus</guisubmenu
></menuchoice
> staat. Bij dit commando is automatische aanvulling beschikbaar voor het argument.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>reload-scripts</command
></cmdsynopsis
></term>
<listitem
><para
>Alle door Kate gebruikte <link linkend="advanced-editing-tools-scripting"
>JavaScript-scripts</link
> herladen, inclusief indenteerders en commandoregelscripts.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>set-mode</command
><arg choice="req"
>STRING modus</arg
></cmdsynopsis
></term>
<listitem
><para
>Het bestandstypeschema voor het huidige document kiezen. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>nn[oremap]</command
><arg choice="req"
>STRING original</arg
> <arg choice="req"
>STRING mapped</arg
></cmdsynopsis
></term>
<listitem
><para
>Laat de <userinput
>originele</userinput
> toetsenreeks overeenkomen met de <userinput
>overeenkomstige</userinput
>.</para
></listitem>
</varlistentry>

</variablelist>

</sect3>

<sect3 id="advanced-editing-tools-commandline-commands-edit">
<title
>Bewerkcommando's</title>

<para
>Deze commando's wijzigen het huidige document.</para>

<variablelist>
<varlistentry>
<term
><cmdsynopsis
><command
>indent</command
></cmdsynopsis
></term>
<listitem
><para
>Laat de geselecteerde regels of de huidige regel inspringen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>unindent</command
></cmdsynopsis
></term>
<listitem
><para
>Verwijdert de inspringing van de geselecteerde regels of van de huidige regel.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>cleanindent</command
></cmdsynopsis
></term>
<listitem
><para
>Schoont de inspringing van de geselecteerde regels of van de huidige regels op, in overeenstemming met de instellingen in het document. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>comment</command
></cmdsynopsis
></term>
<listitem
><para
>Voegt commentaarmarkeringen aan de geselecteerde regels of aan de huidige regel toe, in overeenstemming met de tekstopmaak zoals die gedefinieerd is voor de syntaxisaccentuering van het document.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>uncomment</command
></cmdsynopsis
></term>
<listitem
><para
>Verwijdert commentaarmarkeringen van de geselecteerde regels of van de huidige regel, in overeenstemming met de tekstopmaak zoals die gedefinieerd is voor de syntaxisaccentuering van het document.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>kill-line</command
></cmdsynopsis
></term>
<listitem
><para
>Verwijdert de huidige regel.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>replace</command
><arg choice="req"
> STRING pattern</arg
> <arg choice="req"
>STRING replacement</arg
></cmdsynopsis
></term>
<listitem
><para
>Vervangt tekst die overeenkomt met <userinput
>pattern</userinput
> door <userinput
>replacement</userinput
>. Als u spaties in <userinput
>pattern</userinput
> wilt gebruiken, moet u om <userinput
>pattern</userinput
> en om <userinput
>replacement</userinput
> enkele of dubbele aanhalingstekens zetten. Als er geen aanhalingstekens om de argumenten staan, wordt het eerste woord als <userinput
>pattern</userinput
> gebruikt en de rest als <userinput
>replacement</userinput
>. Als <userinput
>replacement</userinput
> geen tekens bevat, wordt elk gevonden <userinput
>pattern</userinput
> verwijderd.</para>
<para
>U kunt extra opties aan de zoekopdracht meegeven door een dubbele punt toe te voegen, gevolgd door één of meer letters die elk een optie vertegenwoordigen. De zoekopdracht krijgt de vorm <userinput
>replace:options pattern replacement</userinput
>. Beschikbare opties zijn: <variablelist>

<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Zoek achterwaarts.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Zoek vanaf de cursorpositie.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>e</userinput
></term>
<listitem
><para
>Zoek alleen in de geselecteerde tekst.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Gebruik een reguliere expressie in de zoekopdracht. In dit geval kunt u ook <userinput
>N</userinput
> gebruiken, N is een getal dat het aantal overeenkomsten in de vervangende tekenreeks vertegenwoordigt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>De zoekopdracht is hoofdlettergevoelig.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>p</userinput
></term>
<listitem
><para
>Vraag om toestemming om de volgende overeenkomst te vervangen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>w</userinput
></term>
<listitem
><para
>Zoek alleen naar hele woorden.</para
></listitem>
</varlistentry>

</variablelist>

</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>date</command
><arg choice="req"
>STRING format</arg
></cmdsynopsis
></term>
<listitem
><para
>Voegt een datum/tijd in volgens de gespecificeerde <userinput
>format</userinput
>, of in de opmaak <quote
>yyyy-MM-dd hh:mm:ss</quote
> als er geen opmaak gespecificeerd is. De mogelijke vormen van <userinput
>format</userinput
> en de resulterende interpretatie: <informaltable
> <tgroup cols="2"
> <tbody>
<row
><entry
><literal
>d</literal
></entry
><entry
>De dag als een getal zonder voorloopnul (1-31).</entry
></row>
<row
><entry
><literal
>dd</literal
></entry
><entry
>De dag als een getal met voorloopnul (01-31).</entry
></row>
<row
><entry
><literal
>ddd</literal
></entry
><entry
>De verkorte gelokaliseerde dagnaam ('Ma'..'Zo').</entry
></row>
<row
><entry
><literal
>dddd</literal
></entry
><entry
>De lange gelokaliseerde dagnaam ('Maandag'..'Zondag').</entry
></row>
<row
><entry
><literal
>M</literal
></entry
><entry
>De maand als een getal zonder voorloopnul (1-12).</entry
></row>
<row
><entry
><literal
>MM</literal
></entry
><entry
>De maand als een getal met voorloopnul (01-12).</entry
></row>
<row
><entry
><literal
>MMMM</literal
></entry
><entry
>De lange gelokaliseerde maandnaam (bijv. 'januari'..'december').</entry
></row>
<row
><entry
><literal
>MMM</literal
></entry
><entry
>De verkorte gelokaliseerde maandnaam ('Jan'..'Dec').</entry
></row>
<row
><entry
><literal
>yy</literal
></entry
><entry
>Het jaar als een getal van twee cijfers (00-99).</entry
></row>
<row
><entry
><literal
>yyyy</literal
></entry
><entry
>Het jaar als een getal van vier cijfers (1752-8000).</entry
></row>
<row
><entry
><literal
>h</literal
></entry
><entry
>Het uur zonder voorloopnul (0..23 of 1..12 als AM/PM gebruikt wordt).</entry
></row>
<row
><entry
><literal
>hh</literal
></entry
><entry
>Het uur met voorloopnul (00..23 of 01..12 als AM/PM gebruikt wordt).</entry
></row>
<row
><entry
><literal
>m</literal
></entry
><entry
>De minuut zonder voorloopnul (0..59).</entry
></row>
<row
><entry
><literal
>mm</literal
></entry
><entry
>De minuut met voorloopnul (00..59).</entry
></row>
<row
><entry
><literal
>s</literal
></entry
><entry
>De seconde zonder voorloopnul (0..59).</entry
></row>
<row
><entry
><literal
>ss</literal
></entry
><entry
>De seconde met voorloopnul (00..59).</entry
></row>
<row
><entry
><literal
>z</literal
></entry
><entry
>De milliseconden zonder voorloopnul (0..999).</entry
></row>
<row
><entry
><literal
>zzz</literal
></entry
><entry
>De milliseconden met voorloopnul (000..999).</entry
></row>
<row
><entry
><literal
>AP</literal
></entry
><entry
>Gebruik AM/PM. AP wordt vervangen door "AM" of "PM".</entry
></row>
<row
><entry
><literal
>ap</literal
></entry
><entry
>Gebruik am/pm. ap wordt vervangen door "am" of "pm".</entry
></row>
</tbody>
</tgroup>
</informaltable>

</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>char</command
><arg choice="req"
>STRING identifier</arg
></cmdsynopsis
></term>
<listitem>
<para
>Met behulp van dit commando kunt u tekens invoegen door het intypen van een decimaal, octaal of hexadecimaal getal. Open het dialoogvenster "Bewerkcommando's" en typ <userinput
>char: [number]</userinput
> in het invoerveld, klik daarna op <guibutton
>OK</guibutton
>.</para>

<example>
<title
><command
>char</command
> voorbeelden</title>

<para
>Invoer: <userinput
>char:234</userinput
></para>
<para
>Uitvoer: <computeroutput
>&#234;</computeroutput
></para>
<para
>Invoer: <userinput
>char:0x1234</userinput
></para>
<para
>Uitvoer: <computeroutput
>&#x1234;</computeroutput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term>
<indexterm
><primary
>vervangen, sed-stijl</primary>
<secondary
>zoeken, sed-stijl</secondary
></indexterm>
<command
>s///[ig]</command
> <command
>%s///[ig]</command
></term>

<listitem>
<para
>Dit commando voert een zoeken/vervangen-opdracht op de manier van sed uit op de huidige regel of in het gehele bestand (<command
>%s///</command
>).</para>

<para
>Kort gezegd gebeurt er het volgende: In de tekst wordt naar de eerstvolgende overeenkomst met de <emphasis
>search pattern</emphasis
> gezocht, de reguliere expressie tussen de eerste en de tweede slash, en wanneer een overeenkomst gevonden is, wordt het overeenkomende gedeelte van de tekst vervangen door de expressie tussen het middelste en het laatste gedeelte van de tekenreeks. Haakjes in het zoekpatroon (search pattern) vertegenwoordigen <emphasis
>terugverwijzingen</emphasis
>, dit betekent dat het commando onthoudt welk gedeelte overeenkomt met het gedeelte tussen de haakjes; deze tekenreeksen kunnen opnieuw in de vervangende tekst gebruikt worden, <userinput
>\1</userinput
> verwijst naar het eerste set haakjes, <userinput
>\2</userinput
> naar het tweede set, enzovoort.</para>

<para
>Om naar een <literal
>(</literal
> of <literal
>)</literal
> te zoeken moet u het teken vooraf laten gaan door een backslash: <userinput
>\(\)</userinput
></para>

<para
>Als u een <userinput
>i</userinput
> aan het einde van de expressie toevoegt, maakt de zoekopdracht geen verschil tussen hoofd- en kleine letters. Als u een <userinput
>g</userinput
> aan het einde toevoegt, worden alle overeenkomsten met het zoekpatroon vervangen, anders wordt alleen de eerste overeenkomst in een regel vervangen.</para>

<example>

<title
>Tekst vervangen in de huidige regel</title>

<para
>Uw aardige compiler is zojuist gestopt met de mededeling dat de class <classname
>myClass</classname
> in regel 3902 in uw bronbestand niet gedefinieerd is.</para>

<para
>&quot;Kreukels nog an toe!&quot; denkt u, het is natuurlijk <classname
>MyClass</classname
>. U gaat naar regel 3902 en in plaats van te proberen het woord in de tekst te vinden, opent u het dialoogvenster "Bewerkcommando's", u typt <userinput
>s/myclass/MyClass/i</userinput
>, klikt op <guibutton
>OK</guibutton
>, slaat het bestand op en compileert &ndash; ditmaal zonder fouten.</para>

</example>

<example>
<title
>Tekst vervangen in het gehele bestand</title>

<para
>Stel dat u aan een bestand werkt waarin de naam <quote
>Anna Jensen</quote
> verscheidene keren voorkomt. Dan hoort u van iemand dat ze pasgeleden getrouwd is met <quote
>Harry Jones</quote
>. U wilt natuurlijk overal in het bestand <quote
>Anna Jensen</quote
> vervangen door <quote
>Anna Jones-Jensen</quote
>.</para>

<para
>Open de commandoregel en typ <userinput
>%s/Anna Jensen/Anna Jones-Jensen/</userinput
> en druk op de Enter-toets; dat was alles.</para>

</example>

<example>
<title
>Een iets ingewikkelder voorbeeld</title>

<para
>In dit voorbeeld gebruiken we zowel <emphasis
>terugverwijzingen</emphasis
> als <emphasis
>teken-class</emphasis
> (als u niet weet wat dit is, lees dan de uitleg hieronder).</para>

<para
>Stel dat u de volgende regel hebt: <programlisting
>void MyClass::DoStringOps( String      &amp;foo, String &amp;bar, String *p, int  &amp;a, int &amp;b )</programlisting>
</para>
<para
>U bedenkt dat dit geen nette code is en besluit dat u het sleutelwoord <constant
>const</constant
> wilt gebruiken voor alle <quote
>adressen van</quote
> argumenten, herkenbaar aan de operator &amp; voor de naam van het argument. U wilt ook de witruimte (de spaties of tabs) aanpassen, zodat er overal slechts één witruimteteken tussen de woorden staat.</para>

<para
>Open het dialoogvenster "Bewerkcommando's" en typ: <userinput
>s/\s+(\w+)\s+(&amp;)/ const \1 \2/g</userinput
>, klik daarna op <guibutton
>OK</guibutton
>. De <userinput
>g</userinput
> aan het einde van de expressie zorgt ervoor dat de reguliere expressie voor elke overeenkomst opnieuw opgebouwd wordt om de <emphasis
>terugverwijzingen</emphasis
> te behouden.</para>

<para
>Uitvoer: <computeroutput
>void MyClass::DoStringOps( const String &amp;foo, const String &amp;bar, String *p, const int &amp;a, const int &amp;b )</computeroutput
></para>

<para
>Taak volbracht! Wat is er nu gebeurd? We hebben gezocht naar witruimte (<literal
>\s+</literal
>) gevolgd door één of meer lettertekens (<literal
>\w+</literal
>) gevolgd door nog meer witruimte (<literal
>\s+</literal
>) gevolgd door een ampersand, en tegelijkertijd hebben we de lettertekens en de ampersand opgeslagen voor hergebruik bij het vervangen. Daarna hebben we het overeenkomende gedeelte van de regel vervangen door één spatie gevolgd door <quote
>const</quote
> gevolgd door één spatie gevolgd door de opgeslagen lettertekens (<literal
>\1</literal
>) gevolgd door één spatie gevolgd door de opgeslagen ampersand (<literal
>\2</literal
>).</para>

<para
>Nu waren de lettertekens op sommige plaatsen <quote
>String</quote
>, op andere plaatsen <quote
>int</quote
>, het gebruik van de tekenklasse <literal
>\w</literal
> en het bepalingsteken <literal
>+</literal
> bleek een handig hulpmiddel.</para>

</example>

</listitem>

</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>sort</command
></cmdsynopsis
></term>
<listitem
><para
>De geselecteerde tekst of het gehele document sorteren.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>natsort</command
></cmdsynopsis
></term>
<listitem
><para
>De geselecteerde regels of het gehele document op een natuurlijke manier sorteren.</para>

<example>
<title
><command
>sort</command
> vs. <command
>natsort</command
></title>
<para
><userinput
>sort(a10, a1, a2)</userinput
> resulteert in <computeroutput
>a1, a10, a2</computeroutput
></para>
<para
><command
>natsort(a10, a1, a2)</command
> resulteert in <computeroutput
>a1, a2, a10</computeroutput
></para>
</example
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>moveLinesDown</command
></cmdsynopsis
></term>
<listitem
><para
>Geselecteerde regels omlaag verplaatsen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>moveLinesUp</command
></cmdsynopsis
></term>
<listitem
><para
>Geselecteerde regels omhoog verplaatsen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>uniq</command
></cmdsynopsis
></term>
<listitem
><para
>Dubbele regels uit de geselecteerde tekst of het gehele document verwijderen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>rtrim</command
></cmdsynopsis
></term>
<listitem
><para
>Spaties aan het eind van de regel uit de geselecteerde tekst of het gehele document verwijderen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>ltrim</command
></cmdsynopsis
></term>
<listitem
><para
>Spaties aan het begin van de regel uit de geselecteerde tekst of het gehele document verwijderen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>join</command
><arg choice="opt"
>STRING separator</arg
></cmdsynopsis
></term>
<listitem
><para
>Geselecteerde regels of het gehele document samenvoegen. Neemt optioneel een parameter die een scheidingsteken definieert, bijvoorbeeld: <userinput
><command
>join</command
> ', '</userinput
> </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>rmblank</command
></cmdsynopsis
></term>
<listitem
><para
>Alle spaties uit de geselecteerde tekst of het gehele document verwijderen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>unwrap</command
></cmdsynopsis
></term>
<listitem
><para
>Alle regelafbrekingen uit de geselecteerde tekst of het gehele document ongedaan maken.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>each</command
><arg choice="req"
>STRING script</arg
></cmdsynopsis
></term>
<listitem
><para
>Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en vervang ze met de terugkeerwaarde van die aanroep.</para>

<example>
<title
>Geselecteerde regels samenvoegen</title>
<para
><userinput
><command
>each</command
> 'function(lines){return lines.join(", ")}' </userinput
></para>

<para
>Of, korter:</para>
<para
><userinput
><command
>each</command
> 'lines.join(", ")'</userinput
></para>
</example>

</listitem>
</varlistentry>



<varlistentry>
<term
><cmdsynopsis
><command
>filter</command
><arg choice="req"
>STRING script</arg
></cmdsynopsis
></term>
<listitem
><para
>Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en verwijder ze als de terugkeerwaarde van die aanroep 'false' is.</para>

<example>
<title
>Blanco regels verwijderen</title>
<para
><userinput
><command
>filter</command
> 'function(1){return 1.length 
> 0;}' </userinput
></para>

<para
>Of, korter:</para>
<para
><userinput
><command
>filter</command
> 'line.length 
> 0'</userinput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>map</command
><arg choice="req"
>STRING script</arg
></cmdsynopsis
></term>
<listitem
><para
>Met een JavaScript-functie als argument, roep die aan voor de lijst met geselecteerde regels en vervang de regel met de terugkeerwaarde van die aanroep.</para>

<example>
<title
>Blanco regels verwijderen</title>
<para
><userinput
><command
>map</command
> 'function(line){return line.replace(/^s+/,"");}' </userinput
></para>

<para
>Of, korter:</para>
<para
><userinput
><command
>map</command
> 'line.replace(/^s+/,"")'</userinput
></para>
</example>

</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>duplicateLinesUp</command
></cmdsynopsis
></term>
<listitem
><para
>De geselecteerde regels boven de huidige selectie dupliceren.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>duplicateLinesDown</command
></cmdsynopsis
></term>
<listitem
><para
>De geselecteerde regels onder de huidige selectie dupliceren.</para>
</listitem>
</varlistentry>

</variablelist>

</sect3>

<sect3 id="advanced-editing-tools-commandline-commands-navigation">
<title
>Navigatiecommando's</title>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>goto</command
><arg choice="req"
>INT line</arg
></cmdsynopsis
></term>
<listitem
><para
>Dit commando plaatst de cursor op de gespecificeerde regel.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>grep</command
> <arg choice="req"
>STRING pattern</arg
> </cmdsynopsis
></term>
<listitem
><para
>Doorzoek het document met de reguliere expressie <userinput
>patroon</userinput
>. Voor meer informatie, zie <xref linkend="regular-expressions"/></para>
</listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>find</command
><arg choice="req"
>STRING pattern</arg
></cmdsynopsis
></term>
<listitem
><para
>Dit commando plaatst de cursor bij de eerstgevonden overeenkost met <userinput
>pattern</userinput
>, afhankelijk van de eventuele opties. Volgende overeenkomsten kunnen gevonden worden door het menu <menuchoice
><guimenu
>Bewerken</guimenu
> <guimenuitem
>Volgende zoeken</guimenuitem
></menuchoice
> te gebruiken of door op <keycap
>F3</keycap
> te drukken.</para>
<para
>Het gedrag van de zoekopdracht kan ingesteld worden door een dubbele punt gevolgd door één of meer opties aan het commando toe te voegen: <userinput
>find:options pattern</userinput
>. De volgende opties kunnen gebruikt worden:</para>

<variablelist>

<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Zoek achterwaarts.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Zoek vanaf de cursorpositie.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>e</userinput
></term>
<listitem
><para
>Zoek alleen in de geselecteerde tekst.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Gebruik een reguliere expressie in de zoekopdracht. In dit geval kunt u ook <userinput
>N</userinput
> gebruiken, N is een getal dat het aantal overeenkomsten in de vervangende tekenreeks vertegenwoordigt.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>De zoekopdracht is hoofdlettergevoelig.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>w</userinput
></term>
<listitem
><para
>Zoek alleen naar hele woorden.</para
></listitem>
</varlistentry>

</variablelist>
</listitem>

</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>ifind</command
><arg choice="req"
>STRING pattern</arg
></cmdsynopsis
></term>
<listitem
><para
>Met behulp van dit commando kunt u zoeken <quote
>terwijl-u-typt</quote
>. Het gedrag van de zoekopdracht kan ingesteld worden door een dubbele punt gevolgd door één of meer opties aan het commando toe te voegen: <userinput
>ifind:options patroon</userinput
>. De volgende opties kunnen gebruikt worden: <variablelist>
<varlistentry>
<term
><userinput
>b</userinput
></term>
<listitem
><para
>Zoek achterwaarts.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>r</userinput
></term>
<listitem
><para
>Gebruik een reguliere expressie in de zoekopdracht.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>s</userinput
></term>
<listitem
><para
>De zoekopdracht is hoofdlettergevoelig.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>c</userinput
></term>
<listitem
><para
>Zoek vanaf de cursorpositie.</para
></listitem>
</varlistentry>

</variablelist>
</para
></listitem>
</varlistentry>

</variablelist>

</sect3>


<sect3 id="advanced-editing-tools-commandline-commands-basic">
<title
>Opdrachten voor basis functies van de Editor (Deze hangen af van de toepassing waarin de editorcomponent gebruikt wordt)</title>

<variablelist>

<varlistentry>
<term
><cmdsynopsis
><command
>w</command
></cmdsynopsis
></term>
<listitem
><para
>Het huidige document opslaan.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wa</command
></cmdsynopsis
></term>
<listitem
><para
>Alle huidige geopende documenten opslaan.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>q</command
></cmdsynopsis
></term>
<listitem
><para
>Het huidige document sluiten.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>qa</command
></cmdsynopsis
></term>
<listitem
><para
>Sluit alle geopende documenten.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wq</command
></cmdsynopsis
></term>
<listitem
><para
>Het huidige document opslaan en sluiten.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>wqa</command
></cmdsynopsis
></term>
<listitem
><para
>Alle huidige open documenten opslaan en sluiten.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>x</command
></cmdsynopsis
></term>
<listitem
><para
>Het huidige document alleen opslaan en sluiten als het is gewijzigd. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>x</command
></cmdsynopsis
></term>
<listitem
><para
>Alleen alle huidige geopende documenten opslaan en sluiten als ze zijn gewijzigd.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>bp</command
></cmdsynopsis
></term>
<listitem
><para
>Naar het vorige document in de documentenlijst gaan. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>bn</command
></cmdsynopsis
></term>
<listitem
><para
>Naar het volgende document in de documentenlijst gaan. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>new</command
></cmdsynopsis
></term>
<listitem
><para
>Een nieuw document openen in horizontaal gesplitste weergave. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>vnew</command
></cmdsynopsis
></term>
<listitem
><para
>Een nieuw document openen in verticaal gesplitste weergave. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>e</command
></cmdsynopsis
></term>
<listitem
><para
>Het huidige document herladen als het op de schijf is gewijzigd. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>enew</command
></cmdsynopsis
></term>
<listitem
><para
>Een nieuw document bewerken. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><cmdsynopsis
><command
>print</command
></cmdsynopsis
></term>
<listitem
><para
>Het printerdialoogvenster openen om het huidige document af te drukken. </para
></listitem>
</varlistentry>

</variablelist>

</sect3>


</sect2>

</sect1>

<sect1 id="advanced-editing-tools-code-folding">
<title
>Code-invouwing gebruiken</title>

<para
>Code invouwen stelt u in staat om delen van een document in de editor te verbergen, waarmee het gemakkelijker is om overzicht te houden over grote documenten. In &kappname; worden de invouwbare gebieden berekend met regels gedefinieerd in de definities van syntaxis accentuering en zijn daarom alleen beschikbaar in sommige formaten - typisch broncode van programma's, XML-markup en vergelijkbaar. De meeste definities voor accentuering met ondersteuning van code invouwen laten u ook handmatig invouwbare gebieden definiëren, typisch met de <userinput
>BEGIN</userinput
> en <userinput
>END</userinput
> sleutelwoorden.</para>

<para
>Om de functie codeinvouwen te gebruiken, activeert u de invouwmarkering met het menu-item <menuchoice
><guimenu
>Beeld</guimenu
><guimenuitem
>Invouwmarkeringen tonen</guimenuitem
></menuchoice
> als ze nog niet zichtbaar zijn. Het paneel voor invouwmarkeringen links op het scherm toont een grafische weergave van de invouwgebieden, met driehoekssymbolen om de mogelijke bewerking op een gegeven gebied aan te geven: een naar beneden gerichte driehoek geeft aan dat het gebied niet is ingevouwen, erop klikken zal het gebied invouwen en een naar rechts wijzende driehoek zal in plaats daarvan worden getoond.</para>

<para
>Er zijn elf commando's die de status van invouwgebieden veranderen, zie de <link linkend="view-code-folding"
>menudocumentatie</link
>. </para>

<para
>De ingevouwen regels worden herinnerd wanneer een bestand wordt gesloten, dus bij het opnieuw openen van het bestand zullen de ingevouwen nodes nog steeds ingevouwen zijn. Dit is ook van toepassing bij herladen.</para>

<para
>Als u geen gebruik wilt maken van code invouwen, dan kunt u de optie <guilabel
>Invouwmarkering tonen (indien beschikbaar)</guilabel
> in de pagina <link linkend="appearance"
>Uiterlijk</link
> van de editorconfiguratie.</para>

</sect1>

<sect1 id="advanced-editing-tools-scripting">
<title
>&kappname; met scripts uitbreiden</title>

<para
>Sinds &kappname; 3.4 in KDE 4.4 is de &kappname; editor-component eenvoudig uit te breiden met scripts. De scripttaal is ECMAScript (breed bekend als JavaScript). &kappname; ondersteunt twee soorten scripts: inspringen en commandoregelscripts. </para>

<sect2 id="advanced-editing-tools-scripting-indentation">
<title
>Inspringscripts</title>

<para
>Inspringscripts - ook genoemd indenteerders - laten de broncode inspringen bij het typen van tekst. Na het indrukken van de Enter-toets zal bij code het inspringniveau vaak toenemen. </para>

<para
>De volgende secties beschrijven stap voor stap hoe het skelet voor een eenvoudige indenteerder te maken. Als eerste stap, maak een nieuw <filename
>*.js</filename
> bestand aan bijv. met de naam <filename
>javascript.js</filename
> in de lokale thuismap aan <filename
>$KDEHOME/share/apps/katepart/script/indentation</filename
>. </para>

<sect3 id="advanced-editing-tools-scripting-indentation-header">
<title
>De kop van het inspringscript</title>
<para
>De kop van het bestand <filename
>javascript.js</filename
> is ingebed in commentaar en heeft de volgende vorm <programlisting>
/* kate-script
 * name: JavaScript
 * author: Voorbeeldnaam &lt;voorbeeld.naam@een.adres.org&gt;
 * license: BSD
 * revision: 1
 * kate-version: 3.4
 * required-syntax-style: javascript
 * indent-languages: javascript
 * priority: 0
 * i18n-catalog: mycatalog
 *
 * Een regel zonder dubbelepunt ':' stopt het ontleden van de kop. Dwz. u kunt
 * hier optioneel tekst zoals een gedetailleerde licentie toevoegen.
 */
</programlisting
> Elk item wordt nu in detail uitgelegd: <itemizedlist>
<listitem
><para
><literal
>kate-script</literal
> [vereist]: Deze tekenreeks moet in de eerste regel van het <filename
>*.js</filename
> bestand staan, anders slaat &kappname; het script over. </para
></listitem>
<listitem
><para
><literal
>name</literal
> [vereist]: Dit is de naam van de indenteerder die in het menu <menuchoice
><guimenu
>Hulpmiddelen</guimenu
><guimenuitem
>Inspringen</guimenuitem
></menuchoice
> verschijnt en in de configuratiedialoog. </para
></listitem>
<listitem
><para
><literal
>author</literal
> [optioneel]: De naam van de auteur en contactinformatie. </para
></listitem>
<listitem
><para
><literal
>license</literal
> [optioneel]: Korte vorm van de licentie, zoals BSD of LGPLv3. </para
></listitem>
<listitem
><para
><literal
>revision</literal
> [vereist]: De revisie van het script. Dit getal moet verhoogd worden wanneer het script wordt gewijzigd. </para
></listitem>
<listitem
><para
><literal
>kate-version</literal
> [vereist]: Minimaal vereiste versie van &kappname;. </para
></listitem>
<listitem
><para
><literal
>required-syntax-style</literal
> [optioneel]: Komma-gescheiden lijst met vereiste stijlen voor accentuering van de syntaxis. Dit is belangrijk voor indenteerders die vertrouwen op specifieke informatie voor accentuering in het document. Als een vereiste syntaxisstijl is gespecificeerd, zal de indenteerder alleen beschikbaar zijn wanneer het juiste programma voor accentuering actief is. Dit voorkomt <quote
>ongedefinieerd gedrag</quote
> veroorzaakt door de indenteerder te gebruiken zonder het verwachte schema voor accentuering. De Ruby indenteerder, bijvoorbeeld, maakt hier gebruik van in de bestanden <filename
>ruby.js</filename
> en <filename
>ruby.xml</filename
>. </para
></listitem>
<listitem
><para
><literal
>indent-languages</literal
> [optioneel]: Kommagescheidenlijst van syntaxis stijlen die de indenteerder correct kan laten inspringen, bijv.: c++, java. </para
></listitem>
<listitem
><para
><literal
>priority</literal
> [optioneel]: Als verschillende indenteerders geschikt zij voor een bepaald bestand om te accentueren, dan bepaalt de prioriteit welke indenteerder als standaard wordt gekozen. </para
></listitem>
<listitem
><para
><literal
>i18n-catalog</literal
> [optioneel]: Extra catalogus voor berichten (<literal
>po</literal
> bestand) geladen voor vertaling van indenteerders van derden.</para
></listitem>
</itemizedlist>
</para>

<para
>&kappname; leest alle paren van de vorm <quote
><replaceable
>sleutelwoord</replaceable
>:<replaceable
>waarde</replaceable
></quote
> totdat het geen dubbelepunt meer kan vinden. Dit houdt in dat de kop willekeurige tekst, zoals een licentie kan bevatten zoals in het voorbeeld getoond. </para>

</sect3>

<sect3 id="advanced-editing-tools-scripting-indentation-body">
<title
>De broncode van de indenteerder</title>
<para
>Nadat de header is gespecificeerd, legt deze sectie uit hoe het script voor inspringen zelf werkt. Het basis sjabloon van de inhoud ziet er uit als volgt: <programlisting>
// vereiste js-bibliotheken van katepart, bijv. range.js als u Range gebruikt
require ("range.js");
triggerCharacters = "{}/:;";
function indent(line, indentWidth, ch)
{
    // aangeroepen voor elk teken nieuwe-regel (ch == '\n') en alle tekens gespecificeerd in
    // de globale variabele triggerCharacters. Bij het aanroepen van <menuchoice
><guimenu
>Hulpmiddelen</guimenu
><guimenuitem
>Uitlijnen</guimenuitem
></menuchoice>
    // is de variabele ch leeg, i.e. ch == ''.
    //
    // zie ook: Scripting API
    return -2;
}
</programlisting
> De functie <function
>indent()</function
> heeft drie parameters: <itemizedlist
> <listitem
><para
><literal
>line</literal
>: de regel die moet inspringen</para
></listitem
> <listitem
><para
><literal
>indentWidth</literal
>: de inspringbreedte in aantal spaties</para
></listitem
> <listitem
><para
><literal
>ch</literal
>: of een teken nieuwe-regel (<literal
>ch == '\n'</literal
>), het activeringsteken gespecificeerd in <literal
>triggerCharacters</literal
> of leeg als de gebruiker de actie <menuchoice
><guimenu
>Hulpmiddelen</guimenu
><guimenuitem
>Uitlijnen</guimenuitem
></menuchoice
> heeft gestart.</para
></listitem
> </itemizedlist
> De terugkeerwaarde van de functie <function
>indent()</function
> specificeert hoe de regel zal worden ingesprongen. Als de terugkeerwaarde een eenvoudig geheel getal is, wordt deze geïnterpreteerd als volgt: <itemizedlist
> <listitem
><para
>terugkeerwaarde <literal
>-2</literal
>: niets doen</para
></listitem
> <listitem
><para
>terugkeerwaarde <literal
>-1</literal
>: behoudthet inspringen (zoekt naar voorgaande niet-blanko regel)</para
></listitem
> <listitem
><para
>terugkeerwaarde <literal
> 0</literal
>: getallen &gt;= 0 specificeer de insringdiepte in spaties</para
></listitem
> </itemizedlist
> Alternatief, een reeks van twee elementen kan worden teruggegeven: <itemizedlist
> <listitem
><para
><literal
>geef [ indent, align ] terug;</literal
></para
></listitem
> </itemizedlist
> In dit geval is het eerste element de inspringdiepte zoals hierboven met dezelfde betekenis van de speciale waarden. Het tweede element is een absolute waarde die een kolom aangeeft voor <quote
>uitlijning</quote
>. Als deze waarde groter is dan de inspringwaarde, dan is het verschil een aantal spaties dat na het inspringen van de eerste parameter moet worden toegevoegd. Anders wordt het tweede getal genegeerd. Tabs en spaties voor inspringen gebruiken wordt vaak <quote
>gemengde modus</quote
> genoemd. </para>

<para
>beschouw het volgende voorbeeld: Neem aan dat tabs worden gebruikt voor inspringen en tabbreedte is ingesteld op 4. &lt;tab&gt; vertegenwoordigt hier een tab-teken en '.' een spatie: <programlisting>
1: &lt;tab&gt;&lt;tab&gt;foobar("hello",
2: &lt;tab&gt;&lt;tab&gt;......."world");
</programlisting
> Bij inspringen van regel 2 zal de functie <function
>indent()</function
> [8, 15] als terugkeerwaarde geven. Als resultaat worden hier twee tabs ingevoegd om in te springen tot kolom 8 en worden 7 spaties toegevoegd om de tweede parameter uit te lijnen onder de eerste, zodat het uitgelijnd blijft als het bestand wordt bekeken met een andere tabbreedte. </para>

<para
>Een standaard KDE installatie levert bij &kappname; verschillende indenteerders. De overeenkomstige JavaScript broncode kan worden gevonden in <filename
>$KDEDIR/share/apps/katepart/script/indentation</filename
>. </para>

<para
>Ontwikkeling van een indenteerder vereist herladen van de scripts om te zien of de wijzigingen zich netjes gedragen. In plaats van het opnieuw opstarten van de toepassing, schakel eenvoudig om naar de commandoregel en start het commando <command
>reload-scripts</command
>. </para>

<para
>Als u bruikbare scripts ontwikkeld overweeg dan deze aan het &kappname;-project bij te dragen door <ulink url="mailto:kwrite-devel@kde.org"
>kontact op te nemen via de e-maillijst</ulink
>. </para>

</sect3>
</sect2>

<sect2 id="advanced-editing-tools-scripting-command-line">
<title
>Commandoregelscripts</title>

<para
>Omdat het moeilijk is om aan de noden van iedereen te voldoen, ondersteunt &kappname; kleine hulpmiddelen voor snelle tekstmanipulatie via de <link linkend="advanced-editing-tools-commandline"
>ingebouwde commandoregel</link
>. Het commando <command
>sort</command
> is bijvoorbeeld geïmplementeerd als script. Deze sectie legt uit hoe <filename
>*.js</filename
> bestanden aan te maken om &kappname; uit te breiden met willekeurige hulpscripts. </para>

<para
>Commandoregelscripts staan in dezelfde map als inspringscripts. Dus als eerste stap maakt u een nieuw <filename
>*.js</filename
> bestand aan genaamd <filename
>myutils.js</filename
> in de lokale map <filename
>$KDEHOME/share/apps/katepart/script/commands</filename
>. </para>

<sect3 id="advanced-editing-tools-scripting-command-line-header">
<title
>De kop van het commandoregelscript</title>
<para
>De kop van elk commandoreglscript is ingebed in commentaar en heeft de volgende vorm <programlisting>
/* kate-script
 * author: Example Name &lt;example.name@some.address.org&gt;
 * license: BSD
 * revision: 1
 * kate-version: 3.4
 * functions: sort, format-paragraph
 * i18n-catalog: mycatalog
 *
 * Een regel zonder dubbelepunt ':' stopt het ontleden van de kop. Dat
 * betekent dat u hier optioneel tekst kan toevoegen, zoals een
 * gedetailleerde licentie.
 */
</programlisting
> Elk item wordt nu in detail verklaard: <itemizedlist>
<listitem
><para
><literal
>kate-script</literal
> [vereist]: Deze tekenreeks moet in de eerste regel van het <filename
>*.js</filename
> bestand staan, anders slaat &kappname; het script over.</para
></listitem>
<listitem
><para
><literal
>author</literal
> [optioneel]: De naam van de auteur en contactinformatie.</para
></listitem>
<listitem
><para
><literal
>license</literal
> [optioneel]: Korte vorm van de licentie, zoals BSD of LGPLv3.</para
></listitem>
<listitem
><para
><literal
>revision</literal
> [vereist]: De revisie van het script. Dit getal moet verhoogd worden wanneer het script wordt gewijzigd.</para
></listitem>
<listitem
><para
><literal
>kate-version</literal
> [vereist]: Minimaal vereiste versie van &kappname;.</para
></listitem>
<listitem
><para
><literal
>functions</literal
> [vereist]: Komma-gescheiden lijst met commando's in het script.</para
></listitem>
<listitem
><para
><literal
>i18n-catalog</literal
> [optioneel]: Extra catalogus met meldingen (<literal
>po</literal
> bestand) dat wordt geladen voor vertaling van scripts van derden.</para
></listitem>
</itemizedlist>
</para>

<para
>&kappname; leest alle paren van de vorm <quote
><replaceable
>sleutel</replaceable
>:<replaceable
>waarde</replaceable
></quote
> totdat het geen dubbelepunt meer kan vinden. Dit betekent dat de kop willekeurige tekst kan bevatten zoals een licentie, zoals in het voorbeeld is te zien. De waarde van de sleutel functions is een komma-gescheiden lijst met commandoregel-commando's. Dit betekent dat een enkel script een willekeurig aantal command0regel-commando's kan bevatten. Elke functie is beschikbaar via de <link linkend="advanced-editing-tools-commandline"
>ingebouwde commandoregel</link
> van &kappname;. </para>
</sect3>

<sect3 id="advanced-editing-tools-scripting-command-line-body">
<title
>De broncode van het script</title>

<para
>Alle in de kop gespecificeerde functies moeten worden geïmplementeerd in het script. Het script-bestand uit het bovenstaande voorbeeld moet de twee functies <command
>sort</command
> en <command
>format-paragraph</command
> implementeren. Alle functies hebben de volgende syntaxis: <programlisting
>// vereiste js-bibliotheken van katepart, bijv. range.js als u Range gebruikt
require ("range.js");

function &lt;naam&gt;(arg1, arg2, ...)
{
    // ... implementatie, zie ook: Scripting API
}
</programlisting>
</para>

<para
>De argumenten in de commandoregel worden doorgegeven naar de functie als <parameter
>arg1</parameter
>, <parameter
>arg2</parameter
>, etc. Om documentatie voor elk commando te leveren, implementeert u eenvoudig de functie '<function
>help</function
>' als volgt: <programlisting>
function help(cmd)
{
    if (cmd == "sort") {
        return i18n("Sort the selected text.");
    } else if (cmd == "...") {
        // ...
    }
}
</programlisting
> uitvoeren van <command
>help sort</command
> in de commandoregel roept deze help-functie op met het argument <parameter
>cmd</parameter
> ingesteld op het gegeven commando, i.e. <parameter
>cmd == "sort"</parameter
>. &kappname; laat dan de teruggeleverde tekst zien als documentatie voor de gebruiker. Zorg er voor dat <link linkend="advanced-editing-tools-scripting-api-i18n"
>de tekenreeksen vertaald zijn</link
>. </para>

<sect4 id="advanced-editing-tools-scripting-command-line-shortcuts">
<title
>Koppelen van sneltoetsen</title>
<para
>Om in staat te zijn sneltoetsen toe te kennen, moet het script een functie genaamd <literal
>action</literal
> als volgt leveren: <programlisting>
function action(cmd)
{
    var a = new Object();
    if (cmd == "sort") {
        a.text = i18n("Sort Selected Text");
        a.icon = "";
        a.category = "";
        a.interactive = false;
        a.shortcut = "";
    } else if (cmd == "moveLinesDown") {
        // hetzelfde voor de volgende actie
    }
    return a;
}
</programlisting
> De parameter <literal
>cmd</literal
> van de functie specificeert het commando waarvoor een sneltoets wordt gevraagd. Er zijn verschillende velden die u moet specificeren in het teruggegeven javascript-object: <itemizedlist>
<listitem
><para
><literal
>a.text</literal
> [vereist]: De tekst verschijnt in het menu <menuchoice
><guimenu
>Hulpmiddelen</guimenu
> <guisubmenu
>Scripts</guisubmenu
></menuchoice
>. Zorg er voor om <literal
>i18n</literal
> voor vertaling te gebruiken.</para
></listitem>
<listitem
><para
><literal
>a.icon</literal
> [optioneel]: Het pictogram verschijnt naast de tekst in het menu. Alle pictogramnamen van KDE kunnen hier worden gebruikt.</para
></listitem>
<listitem
><para
><literal
>a.category</literal
> [optioneel]: Als een categorie wordt gespecificeerd, verschijnt het script in een submenu. Zorg er voor om <literal
>i18n</literal
> voor vertaling te gebruiken.</para
></listitem>
<listitem
><para
><literal
>a.interactive</literal
> [optioneel]: Als het script invoer van de gebruiker nodig heeft, zet dit dan op <literal
>true</literal
>.</para
></listitem>
<listitem
><para
><literal
>a.shortcut</literal
> [optioneel]: De hier gegeven sneltoets is de standaard sneltoets. Voorbeeld: Ctrl+Alt+t. Zie de <ulink url="http://doc.qt.nokia.com/latest/qt.html#Key-enum"
>Qt documentatie</ulink
> voor verdere details.</para
></listitem>
</itemizedlist>
</para>


<para
>Ontwikkeling van een commandoregelscript vereist herladen van de scripts om te zien of de wijzigingen zich netjes gedragen. In plaats van het opnieuw opstarten van de toepassing, schakel eenvoudig om naar de commandoregel en start het commando <command
>reload-scripts</command
>. </para>

<para
>Als u bruikbare scripts ontwikkeld overweeg dan deze aan het &kappname;-project bij te dragen door <ulink url="mailto:kwrite-devel@kde.org"
>kontact op te nemen via de e-maillijst</ulink
>. </para>

</sect4>
</sect3>
</sect2>

<sect2 id="advanced-editing-tools-scripting-api">
<title
>API voor scripts</title>

<para
>De API voor scripts hier aanwezig is beschikbaar in alle scripts, bijv. scripts voor inspringen en opdrachtregels. De <classname
>Cursor</classname
> en <classname
>Range</classname
> worden geleverd door biblitheekbestanden in <filename
>$KDEDIR/share/apps/katepart/libraries</filename
>. Als u ze in uw script wilt gebruiken, wat vereist is om bepaalde <classname
>Document</classname
> of <classname
>View</classname
> functies te gebruiken, voeg dan de benodigde bibliotheek in met: <programlisting
>// vereiste js-bibliotheken van katepart, bijv. range.js als u Range gebruikt
require ("range.js");
</programlisting>
</para>

<para
>Om de standaard API voor scripting uit te breiden met eigen functies en prototypen, maak gewoon een nieuw bestand aan in de lokale configuratiemap van KDE <filename
>$KDEHOME/share/apps/katepart/libraries</filename
> en voeg deze in in uw script met: <programlisting
>require ("mijnscriptnaamhier.js");
</programlisting>

</para>

<para
>Om bestaande prototypes zoals <classname
>Cursor</classname
> of <classname
>Reeks</classname
> uit te breiden, os de aanbevolen manier om <emphasis
>niet</emphasis
> de globale <filename
>*.js</filename
> bestanden te wijzigen. In plaats daarvan wijzigt u het prototype <classname
>Cursor</classname
> in JavaScript nadat <filename
>cursor.js</filename
> is ingevoegd in uw script via <literal
>require</literal
>. </para>

<sect3 id="advanced-editing-tools-scripting-api-prototypes">
<title
>Cursors en bereiken</title>

<para
>Omdat &kappname; is een tekstbewerker is, is alles voor de API voor scripting, waar mogelijk, gebaseerd op cursors en reeksen. Een cursor is een eenvoudig een paar <literal
>(regel, kolom)</literal
> die een tekstpositie in het document weergeeft. Een reeks omspant tekst van een begincursorpositie tot een eincursorpositie. De API wordt in de volgende secties in detail uitgelegd. </para>

<sect4 id="advanced-editing-tools-scripting-api-cursors">
<title
>Het prototype van cursor</title>

<variablelist
><varlistentry>
<term
><synopsis
>Cursor();
</synopsis
></term>
<listitem
><para
>Constructor. Levert een cursor terug op positie <literal
>(0, 0)</literal
>.</para>
<para
>Voorbeeld: <function
>var cursor = new Cursor();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Constructor. Levert een cursor terug op positie (regel, kolom). </para>
<para
>Voorbeeld: <function
>var cursor = new Cursor(3, 42);</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor(<parameter
>Cursor <replaceable
>andere</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Constructor kopiëren. Geeft een kopie van de cursor <replaceable
>andere</replaceable
>.  </para>
<para
>Voorbeeld:<function
>var copy = nieuwe cursor(andere);</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor Cursor.clone();
</synopsis
></term>
<listitem
><para
>Geeft een kloon van de cursor terug.</para>
<para
>Voorbeeld: <function
>var clone = cursor.clone();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Cursor.isValid();
</synopsis
></term>
<listitem
><para
>Controleert of de cursor geldig is. De cursor is ongeldig indien lijn en/of kolom ingesteld zijn op <literal
>-1</literal
>. </para>
<para
>Voorbeeld: <function
>var valid = cursor.isValid();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor Cursor.invalid();
</synopsis
></term>
<listitem
><para
>Geeft een nieuwe ongeldige cursor op locatie <literal
>(-1, -1)</literal
>. </para>
<para
>Voorbeeld:<function
>var invalidCursor = cursor.invalid();</function
> </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>int Cursor.compareTo(<parameter
>Cursor <replaceable
>andere</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Vergelijkt deze cursor met de cursor <replaceable
>andere</replaceable
>. Geeft terug <itemizedlist>
<listitem
><para
><literal
>-1</literal
>, indien deze cursor zich bevindt voor de cursor <replaceable
>andere</replaceable
>,</para
></listitem>
<listitem
><para
><literal
>0</literal
>, indien beide cursors gelijk zijn</para
></listitem>
<listitem
><para
><literal
>+1</literal
>, als deze cursor gelokaliseerd is na de cursor <replaceable
>andere</replaceable
>.</para
></listitem>
</itemizedlist>
</para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Cursor.equals(<parameter
>Cursor <replaceable
>andere</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als deze cursor en de cursor <replaceable
>andere</replaceable
> gelijk zijn, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String Cursor.toString();
</synopsis
></term>
<listitem
><para
>Geeft de cursor terug als een tekenreeks met de vorm <quote
><literal
>Cursor(regel, kolom)</literal
></quote
>. </para
></listitem>
</varlistentry
></variablelist>

</sect4>


<sect4 id="advanced-editing-tools-scripting-api-ranges">
<title
>Het prototype bereik</title>

<variablelist
><varlistentry>
<term
><synopsis
>Range();
</synopsis
></term>
<listitem
><para
>Constructor. Aanroepen van <literal
>new Range()</literal
> geeft een Reeks op (0, 0) - (0, 0) terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>Cursor <replaceable
>begin</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>eind</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Constructor. Aanropen van <literal
>new Range(<replaceable
>begin</replaceable
>, <replaceable
>eind</replaceable
>)</literal
> geeft de Reeks (<replaceable
>begin</replaceable
>, <replaceable
>eind</replaceable
>) terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>int <replaceable
>beginRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>beginKolom</replaceable
></parameter
>, <parameter
>int <replaceable
>eindRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>eindKolom</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Constructor. Aanroepen van <literal
>new Range(<replaceable
>beginRegel</replaceable
>, <replaceable
>beginKolom</replaceable
>, <replaceable
>eindeRegel</replaceable
>, <replaceable
>eindKolom</replaceable
>)</literal
> geeft de Reeks van (<replaceable
>beginRegel</replaceable
>, <replaceable
>beginKolom</replaceable
>) tot (<replaceable
>eindeRegel</replaceable
>, <replaceable
>eindKolom</replaceable
>). </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>Range <replaceable
>andere</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Constructor kopiëren. Geeft een kopie terug van Range <replaceable
>andere</replaceable
>.  </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Reeks Range.clone();
</synopsis
></term>
<listitem
><para
>Geeft een kloon van de reeks terug. </para>
<para
>Voorbeeld: <function
>var clone = range.clone();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.isValid();
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als zowel begin als einde cursor geldig zijn, anders <literal
>false</literal
>. </para>
<para
>Voorbeeld: <function
>var valid = range.isValid();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.invalid();
</synopsis
></term>
<listitem
><para
>Geeft de Reeks van (-1, -1) tot (-1, -1) terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.contains(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als de reeks de cursorpositie bevat, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.contains(<parameter
>Range <replaceable
>andere</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als deze reeks de Reeks<replaceable
>andere</replaceable
> bevat, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.containsColumn(<parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als <replaceable
>kolom</replaceable
> zich in het half open interval <literal
>[start.column, end.column)</literal
> bevindt, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.containsLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als <replaceable
>regel</replaceable
> zich in het half open interval <literal
>[start.line, end.line)</literal
> bevindt, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlaps(<parameter
>Range <replaceable
>overig</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als deze reeks en de reeks<replaceable
>overig</replaceable
> een gebied delen, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlapsLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als <replaceable
>regel</replaceable
> zich in het interval <literal
>[start.line, end.line)</literal
> bevindt, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlapsColumn(<parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als <replaceable
>kolom</replaceable
> zich in het interval <literal
>[start.column, end.column)</literal
> bevindt, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.onSingleLine();
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als zowel begin als einde van de reeks op dezelfde regel, d.w.z. als <replaceable
>Range.start.line == Range.end.line</replaceable
>. </para>
<para
>Sinds: KDE 4.9 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.equals(<parameter
>Range <replaceable
>overig</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als deze reeks de Reeks <replaceable
>andere</replaceable
> gelijk zijn, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String Range.toString();
</synopsis
></term>
<listitem
><para
>Geeft de reeks terug als een tekenreeks van de vorm <quote
><literal
>Range(Cursor(line, column), Cursor(line, column))</literal
></quote
>. </para
></listitem>
</varlistentry
></variablelist>

</sect4>
</sect3>

<sect3 id="advanced-editing-tools-scripting-api-global">
<title
>Globale functies</title>
<para
>Deze sectie geeft een lijst met alle globale functies.</para>


<sect4 id="advanced-editing-tools-scripting-api-includes">
<title
>Lezen &amp; invoegen van bestanden</title>

<variablelist
><varlistentry>
<term
><synopsis
>String read(<parameter
>String <replaceable
>bestand</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Zal het gegeven <replaceable
>bestand</replaceable
> zoeken relatief ten opzichte van de map <literal
>katepart/script/files</literal
> en en de inhoud teruggeven als een tekenreeks. </para
></listitem>
</varlistentry
></variablelist>

<variablelist
><varlistentry>
<term
><synopsis
>void require(<parameter
>String <replaceable
>bestand</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Zal het gegeven <replaceable
>bestand</replaceable
> zoeken relatief ten opzichte van de map <literal
>katepart/script/libraries</literal
> en het evalueren. <literal
>require</literal
> is intern beschermd tegen meervoudig invoegen van hetzelfde <replaceable
>bestand</replaceable
>. </para>
<para
>Sinds: KDE 4.10 </para>
</listitem>
</varlistentry
></variablelist>

</sect4>

<sect4 id="advanced-editing-tools-scripting-api-debug">
<title
>Foutopsporing</title>

<variablelist
><varlistentry>
<term
><synopsis
>void debug(<parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stuurt <replaceable
>tekst</replaceable
> naar <literal
>stdout</literal
> in de console na het starten van de toepassing. </para
></listitem>
</varlistentry
></variablelist>

</sect4>

<sect4 id="advanced-editing-tools-scripting-api-i18n">
<title
>Vertaling</title>

<para
>Om to volledige localisatie te ondersteunen zijn er verschillende functies om tekenreeksen in scripts te vertalen, namelijk <literal
>i18n</literal
>, <literal
>i18nc</literal
>, <literal
>i18np</literal
> en <literal
>i18ncp</literal
>. Deze functies gedragen zich op precies dezelfde manier zoals in <ulink url="http://techbase.kde.org/Development/Tutorials/Localization/i18n"
> Vertalingsfuncties van KDE</ulink
>. </para>

<para
>De vertalingfuncties vertalen de omwikkelde tekenreeksen via het vertalingssysteem van KDE naar de in de toepassing gebruikte taal. Tekenreeksen in scripts die worden ontwikkeld in de officiële broncode van &kappname; worden automatisch geëxtraheerd en vertaalbaar gemaakt. Met andere woorden, als ontwikkelaar van &kappname; hoeft u zich niet bezig te houden met extraheren en vertalen. Voor derden echter, met scripts ontwikkeld buiten KDE, moet u zelf berichten extraheren en vertalen. Samen met uw scripts moet u ook een vertalingsbestand distribueren, die alle vertaalde tekenreeksen bevat. Verder moet de scriptkop dan expliciet het te laden bestand aangeven door <literal
>i18n-catalog</literal
> te specificeren. </para>

<variablelist
><varlistentry>
<term
><synopsis
>void i18n(<parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, ...);
</synopsis
></term>
<listitem
><para
>Vertaalt <replaceable
>text</replaceable
> in de taal die wordt gebruikt door de toepassing. De argumenten <replaceable
>arg1</replaceable
>, ..., zijn optioneel en worden gebruikt om plaatshouders <literal
>%1</literal
>, <literal
>%2</literal
>, etc. te vervangen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18nc(<parameter
>String <replaceable
>context</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, ...);
</synopsis
></term>
<listitem
><para
>Vertaalt <replaceable
>text</replaceable
> in de taal die wordt gebruikt door de toepassing. Bovendien is de tekenreeks <replaceable
>context</replaceable
> zichtbaar voor de vertalers, zodat zij een betere vertaling kunnen produceren. De argumenten <replaceable
>arg1</replaceable
>, ..., zijn optioneel en worden gebruikt om plaatshouders <literal
>%1</literal
>, <literal
>%2</literal
>, etc. te vervangen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18np(<parameter
>String <replaceable
>enkelvoud</replaceable
></parameter
>, <parameter
>String <replaceable
>meervoud</replaceable
></parameter
>, <parameter
>int <replaceable
>nummer</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, ...);
</synopsis
></term>
<listitem
><para
>Vertaalt ofwel <replaceable
>enkelvoud</replaceable
> of <replaceable
>meervoud</replaceable
> in de taal die wordt gebruikt door de toepassing, afhankelijk van het gegeven <replaceable
>nummer</replaceable
>. De argumenten <replaceable
>arg1</replaceable
>, ..., zijn optioneel en worden gebruikt om plaatshouders <literal
>%1</literal
>, <literal
>%2</literal
>, etc. te vervangen.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18ncp(<parameter
>String <replaceable
>context</replaceable
></parameter
>, <parameter
>String <replaceable
>eenvoud</replaceable
></parameter
>, <parameter
>String <replaceable
>meervoud</replaceable
></parameter
>, <parameter
>int <replaceable
>nummer</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, ...);
</synopsis
></term>
<listitem
><para
>Vertaalt <replaceable
>enkelvoud</replaceable
> of<replaceable
>meervoud</replaceable
> in de taal die wordt gebruikt door de toepassing, afhankelijk van het gegeven nummer. Bovendien is de tekenreeks <replaceable
>context</replaceable
> zichtbaar voor de vertalers, zodat zij een betere vertaling kunnen produceren. De argumenten <replaceable
>arg1</replaceable
>, ..., zijn optioneel en worden gebruikt om plaatshouders <literal
>%1</literal
>, <literal
>%2</literal
>, etc. te vervangen.</para
></listitem>
</varlistentry
></variablelist>

</sect4>
</sect3>

<sect3 id="advanced-editing-tools-scripting-api-view">
<title
>De API voor weergave</title>
<para
>Wanneer een script wordt uitgevoerd, dan is er een globale variabele <quote
><literal
>view</literal
></quote
> die de huidige actieve editor-view representeert. Het volgende is een lijst met alle beschikbare weergavefuncties. <variablelist
><varlistentry>
<term
><synopsis
><function
>Cursor view.cursorPosition()</function
>
</synopsis
></term>
<listitem
><para
>Geeft de huidige cursorpositie in het beeld terug.</para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setCursorPosition(<parameter
>int <replaceable
>line</replaceable
></parameter
>, <parameter
>int <replaceable
>column</replaceable
></parameter
>);
void view.setCursorPosition(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stelt de huidige cursorpositie in op ofwel (regel, kolom) of op de gegeven cursor. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor view.virtualCursorPosition();
</synopsis
></term>
<listitem
><para
>Geeft de virtuele cursorpositie terug waarin elke tab telt voor de overeenkomstige hoeveelheid spaties afhankelijk van de huidige tabbreedte. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setVirtualCursorPosition(<parameter
>int <replaceable
>line</replaceable
></parameter
>, <parameter
>int <replaceable
>column</replaceable
></parameter
>);
void view.setVirtualCursorPosition(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stelt de huidige virtuele cursorpositie in op (regel, kolom) of op de gegeven cursor. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String view.selectedText();
</synopsis
></term>
<listitem
><para
>Geeft de geselecteerde tekst terug. Als er geen tekst is geselecteerd dan is de tekenreeks leeg. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool view.hasSelection();
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het beeld geselecteerde tekst heeft, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range view.selection();
</synopsis
></term>
<listitem
><para
>Geeft de geselecteerde tekstreeks terug. Als er geen tekst is geselecteerd dan is de tekenreeks ongeldig. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setSelection(<parameter
>Range <replaceable
>reeks</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stelt de geselecteerde tekst in op de gegeven reeks. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.removeSelectedText();
</synopsis
></term>
<listitem
><para
>Verwijder de geselecteerde tekst. Als het beeld geen geselecteerde tekst bevat, dan doet dit niets. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.selectAll();
</synopsis
></term>
<listitem
><para
>Selecteert de gehele tekst in het document. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.clearSelection();
</synopsis
></term>
<listitem
><para
>Wist de tekstselectie zonder de tekst te verwijderen. </para
></listitem>
</varlistentry
></variablelist>
</para>
</sect3>

<sect3 id="advanced-editing-tools-scripting-api-document">
<title
>De API van Document</title>
<para
>Wanneer een script uitgevoerd wordt is er een globale variabele <quote
><literal
>document</literal
></quote
> die het huidige actieve document representeert. Het volgende is een lijst met alle beschikbare documentfuncties. <variablelist
><varlistentry>
<term
><synopsis
>String document.fileName();
</synopsis
></term>
<listitem
><para
>Geeft de bestandsnaam van het document terug of een lege tekenreeks voor niet opgeslagen tekstbuffers. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.url();
</synopsis
></term>
<listitem
><para
>Geeft de volledige url van het document terug of een lege tekenreeks voor niet opgeslagen tekstbuffers. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.mimeType();
</synopsis
></term>
<listitem
><para
>Geeft het mime-type van het document terug of het mime-type <literal
>application/octet-stream</literal
> als er geen toepasselijk mime-type gevonden kan worden. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.encoding();
</synopsis
></term>
<listitem
><para
>Geeft de nu gebruikte codering terug om het bestand op te slaan. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>String document.highlightingMode();
</synopsis
></term>
<listitem
><para
>Geeft de gebruikte globale accentueringmodus terug voor het gehele document. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>String document.highlightingModeAt(<parameter
>Cursor <replaceable
>pos</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de gebruikte accentueringmodus terug op de gegeven positie in het document. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>Array document.embeddedHighlightingModes();
</synopsis
></term>
<listitem
><para
>Geeft een reeks van accentueringmodi terug ingebed in dit document. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>bool document.isModified();
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het document niet opgeslagen wijzigingen heeft(gemodificeerd), anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.text();
</synopsis
></term>
<listitem
><para
>Geef de gehele inhoud van het document terug in een enkele tekenreeks. Nieuwe regels zijn gemarkeerd met het teken nieuw-regel <quote
><literal
>\n</literal
></quote
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.text(<parameter
>int <replaceable
>vanafRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>vanafKolom</replaceable
></parameter
>, <parameter
>int <replaceable
>totRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>totKolom</replaceable
></parameter
>);
String document.text(<parameter
>Cursor <replaceable
>vanaf</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>tot</replaceable
></parameter
>);
String document.text(<parameter
>Range <replaceable
>bereik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de tekst terug in het gegeven bereik. Het is aanbevolen de cursor te gebruiken en een versie gebaseerd op bereik voor betere leesbaarheid van de broncode. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.line(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de gegeven tekstregel terug als tekenreeks. De tekenreeks is leeg als de gevraagde regel buiten het bereik ligt. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.wordAt(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
String document.wordAt(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft het woord terug op de gegeven cursorpositie. </para
></listitem>
</varlistentry>


<varlistentry>
<term>
<synopsis
>Range document.wordRangeAt(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
Range document.wordRangeAt(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis>
</term>
<listitem
><para
>Geeft de reeks van het woord op de gegeven cursorpositie terug. De teruggeven reeks is ongeldig (zie Range.isValid()), als de tekstpositie zich na het eind van een regel bevindt. Als er geen woord is op de gegeven cursorpositie, zal een lege reeks worden teruggegeven. </para>
<para
>Sinds: KDE 4.9 </para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.charAt(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
String document.charAt(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft het teken terug op de gegeven cursorpositie. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.firstChar(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft het eerste teken in de gegeven <replaceable
>regel</replaceable
> terug die geen witruimte is. Het eerste teken is in kolom 0. Als de regel leeg of alleen witruimte bevat, dan is de teruggegeven tekenreeks leeg. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.lastChar(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft het laatste teken in de gegeven <replaceable
>regel</replaceable
> terug die geen witruimte is. Als de regel leeg of alleen witruimte bevat, dan is de teruggegeven tekenreeks leeg. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isSpace(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isSpace(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het teken op de gegeven cursorpositie gelijk is aan een witruimte, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.matchesAt(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
bool document.matchesAt(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als de gegeven <replaceable
>tekst</replaceable
> overeenkomt met de overeenkomstige cursorpositie, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.startsWith(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <parameter
>bool <replaceable
>witRuimteOverslaan</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug als de regel begint met <replaceable
>tekst</replaceable
>, anders <literal
>false</literal
>. Het argument <replaceable
>witRuimteOverslaan</replaceable
> bepaalt of voorloopwitruimte genegeerd worden. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.endsWith(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <parameter
>bool <replaceable
>witRuimteOverslaan</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug als de regel eindigt met <replaceable
>tekst</replaceable
>, anders <literal
>false</literal
>. Het argument <replaceable
>witRuimteOverslaan</replaceable
> bepaalt of witruimte achteraan genegeerd wordt. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.setText(<parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stelt de gehele documenttekst in. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.clear();
</synopsis
></term>
<listitem
><para
>Verwijdert de gehele tekst uit het document. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.truncate(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.truncate(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>kap de gegeven regel op de gegeven kolom of cursorpositie af. Geeft <literal
>true</literal
> terug bij succes of <literal
>false</literal
> als de gegeven regel geen deel is van het documentbereik. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.insertText(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
bool document.insertText(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Voeg de <replaceable
>tekst</replaceable
> op de cursorpositie in. Geeft <literal
>true</literal
> terug bij succes of <literal
>false</literal
>, als het document alleen-lezen is. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.removeText(<parameter
>int <replaceable
>vanafRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>vanafKolom</replaceable
></parameter
>, <parameter
>int <replaceable
>totRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>totKolom</replaceable
></parameter
>);
bool document.removeText(<parameter
>Cursor <replaceable
>vanaf</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>tot</replaceable
></parameter
>);
bool document.removeText(<parameter
>Range <replaceable
>bereik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verwijdert de tekst in het gegeven bereik. Geeft <literal
>true</literal
> terug bij succes of <literal
>false</literal
>, als het document alleen-lezen is. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.insertLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Voegt tekst in de gegeven regel in. Geeft <literal
>true</literal
> terug bij succes of <literal
>false</literal
>, als het document alleen-lezen is of de regel niet in het documentbereik ligt. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.removeLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verwijdert de gegeven tekstregel. Geeft <literal
>true</literal
> terug bij succes of <literal
>false</literal
>, als het document alleen-lezen is of de regel niet in het documentbereik ligt. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.wrapLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.wrapLine(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Breekt de regel op de gegeven cursorpositie op. Geeft <literal
>true</literal
> terug bij succes, anders <literal
>false</literal
>, bijv. als regel &lt; 0. </para>
<para
>Sinds: KDE 4.9 </para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.joinLines(<parameter
>int <replaceable
>beginRegel</replaceable
></parameter
>, <parameter
>int <replaceable
>eindRegel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Voegt de regels vanaf <replaceable
>beginRegel</replaceable
> tot <replaceable
>eindRegel</replaceable
> samen. Twee elkaar opvolgende tekstregels worden altijd gescheiden door een enkele spatie. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lines();
</synopsis
></term>
<listitem
><para
>Geeft het aantal regels in het document terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.length();
</synopsis
></term>
<listitem
><para
>Geeft het aantal tekens in het document terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lineLength(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de lengte van de <replaceable
>regel</replaceable
> terug. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.editBegin();
</synopsis
></term>
<listitem
><para
>Begint een bewerkingsgroep voor groepering van ongedaan maken/opnieuw doen. Controleer altijd of <function
>editEnd()</function
> is aangeroepen als u <function
>editBegin()</function
> aanroept. Aanroepen van <function
>editBegin()</function
> gebruikt intern een referentieteller, let op deze aanroep kan genest worden. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.editEnd();
</synopsis
></term>
<listitem
><para
>Beëindigt een bewerkingsgroep. De laatst aanroep van <function
>editEnd()</function
> (dwz. diegene voor de eerste aanroep van <function
>editBegin()</function
>) beëindigt de bewerkingsstap. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.firstColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de eerste niet-witruimte kolom in de gegeven <replaceable
>regel</replaceable
> terug. Als er alleen witruimte in de regel bevindt, dan is de terugkeerwaarde <literal
>-1</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lastColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de laatste niet-witruimte kolom in de gegeven <replaceable
>regel</replaceable
> terug. Als er alleen witruimte in de regel bevindt, dan is de terugkeerwaarde <literal
>-1</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.prevNonSpaceColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
int document.prevNonSpaceColumn(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de kolom terug met een niet-witruimte teken beginnend bij de gegeven cursorpositie en achterwaarts zoeken. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.nextNonSpaceColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
int document.nextNonSpaceColumn(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de kolom terug met een niet-witruimte teken beginnend bij de gegeven cursorpositie en voorwaarts zoeken. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.prevNonEmptyLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de volgende niet-lege regel terug met een niet-witruimte teken en achterwaarts zoeken. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.nextNonEmptyLine(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de volgende niet-lege regel terug met een niet-witruimte teken en voorwaarts zoeken. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isInWord(<parameter
>String <replaceable
>teken</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het gegeven <replaceable
>teken</replaceable
> met het gegeven <replaceable
>attribuut</replaceable
> deel van een woord kan zijn, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.canBreakAt(<parameter
>String <replaceable
>teken</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het gegeven <replaceable
>teken</replaceable
> met het gegeven <replaceable
>attribuut</replaceable
> geschikt is om een regel af te breken, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.canComment(<parameter
>int <replaceable
>beginAttribuut</replaceable
></parameter
>, <parameter
>int <replaceable
>eindAttribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als een bereik beginnend en eindigend met de gegeven attributen geschikt is om als commentaar te worden aangemerkt, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentMarker(<parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de markeerder voor commentaar terug voor commentaar op een enkele regel voor een gegeven <replaceable
>attribuut</replaceable
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentStart(<parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de markeerder voor commentaar terug voor begin van commentaar over meerdere regels voor een gegeven <replaceable
>attribuut</replaceable
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentEnd(<parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de markeerder voor commentaar terug voor het einde van commentaar over meerdere regels voor een gegeven <replaceable
>attribuut</replaceable
>. </para
></listitem>
</varlistentry>



<varlistentry>
<term
><synopsis
>int document.attribute(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
int document.attribute(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft het attribuut terug op de gegeven cursorpositie. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isAttribute(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
bool document.isAttribute(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut op de gegeven cursorpositie gelijk is aan <replaceable
>attribuut</replaceable
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.attributeName(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
String document.attributeName(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de attribuutnaam terug als leesbare tekst. Dit is gelijk aan de <literal
>itemData</literal
>-naam in de syntaxis-accentuering-bestanden. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isAttributeName(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>String <replaceable
>naam</replaceable
></parameter
>);
bool document.isAttributeName(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>String <replaceable
>naam</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als de attribuutnaam op een bepaalde cursorpositie overeenkomt met de gegeven <replaceable
>naam</replaceable
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.variable(<parameter
>String <replaceable
>sleutel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de waarde terug van de gevraagde documentvariabele <replaceable
>sleutel</replaceable
>. Als de documentvariabele niet bestaat, wordt een lege tekenreeks teruggegeven. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.setVariable(<parameter
>String <replaceable
>sleutel</replaceable
></parameter
>, <parameter
>String <replaceable
>waarde</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Stelt de waarde in van de gevraagde documentvariabele <replaceable
>sleutel</replaceable
>. Geeft de ingestelde waarde van de variabele terug. </para>
<para
>Zie ook: <link linkend="config-variables"
>Documentvariabelen van Kate</link
> </para>
<para
>Sinds: KDE 4.8 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.firstVirtualColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de virtuele kolom terug van het eerste niet-witruimte-teken in de gegeven regel of <literal
>-1</literal
>, als de regel leeg is of alleen witruimte-tekens bevat. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lastVirtualColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de virtuele kolom terug van het laatste niet-witruimte-teken in de gegeven regel of <literal
>-1</literal
>, als de regel leeg is of alleen witruimte-tekens bevat. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.toVirtualColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
int document.toVirtualColumn(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
Cursor document.toVirtualCursor(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Converteert de gegeven <quote
>echte</quote
> cursorpositie naar een virtuele cursorpositie, geeft ofwel een int terug of een cursor-object. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.fromVirtualColumn(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>virtueleKolom</replaceable
></parameter
>);
int document.fromVirtualColumn(<parameter
>Cursor <replaceable
>virtueleCursor</replaceable
></parameter
>);
Cursor document.fromVirtualCursor(<parameter
>Cursor <replaceable
>virtueleCursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Converteert de gegeven virtuele cursorpositie naar een <quote
>echte</quote
> cursorpositie, geeft ofwel een int terug of een cursor-object. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor document.anchor(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>Char <replaceable
>teken</replaceable
></parameter
>);
Cursor document.anchor(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>Char <replaceable
>teken</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Zoekt achterwaarts naar het gegeven teken te beginnen vanaf de gegeven cursor. Als voorbeeld, als '(' als teken wordt meegegeven, dan geeft deze functie de positie terug van de openingings '('. Dit houdt rekening met aantallen, dwz. andere '(...)' worden genegeerd. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor document.rfind(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
> = -1</parameter
>);
Cursor document.rfind(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>, <parameter
>String <replaceable
>tekst</replaceable
></parameter
>, <parameter
>int <replaceable
>attribuut</replaceable
> = -1</parameter
>);
</synopsis
></term>
<listitem
><para
>Zoek de gegeven tekst achterwaarts met het juiste <replaceable
>attribuut</replaceable
>. Het argument <replaceable
>attribuut</replaceable
> wordt genegeerd als het is ingesteld op <literal
>-1</literal
>. De teruggegeven cursor is ongeldig, als de tekst niet is gevonden. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.defStyleNum(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
int document.defStyleNum(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft de standaard stijl terug op de gegeven cursorpositie. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isCode(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isCode(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut op de gegeven cursorpositie niet gelijk is aan alle volgende stijlen: <literal
>dsComment</literal
>, <literal
>dsString</literal
>, <literal
>dsRegionMarker</literal
>, <literal
>dsChar</literal
>, <literal
>dsOthers</literal
>. </para
></listitem>
</varlistentry>



<varlistentry>
<term
><synopsis
>bool document.isComment(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isComment(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut van het teken op de cursorpositie gelijk is aan <literal
>dsComment</literal
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isString(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isString(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut van het teken op de cursorpositie gelijk is aan <literal
>dsString</literal
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isRegionMarker(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isRegionMarker(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut van het teken op de cursorpositie gelijk is aan <literal
>dsRegionMarker</literal
>,anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isChar(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isChar(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut van het teken op de cursorpositie gelijk is aan <literal
>dsChar</literal
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isOthers(<parameter
>int <replaceable
>regel</replaceable
></parameter
>, <parameter
>int <replaceable
>kolom</replaceable
></parameter
>);
bool document.isOthers(<parameter
>Cursor <replaceable
>cursor</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geeft <literal
>true</literal
> terug, als het attribuut van het teken op de cursorpositie gelijk is aan <literal
>dsOthers</literal
>, anders <literal
>false</literal
>. </para
></listitem>
</varlistentry
></variablelist>
</para>

</sect3>
</sect2>
</sect1>
</chapter>
