<chapter id="dev">
<chapterinfo>
<authorgroup>
<author
>&TC.Hollingsworth; &TC.Hollingsworth.mail;</author>
<othercredit role="translator"
><firstname
>Emir</firstname
><surname
>SARI</surname
><affiliation
><address
><email
>emir_sari@icloud.com</email
></address
></affiliation
><contrib
>Çeviri</contrib
></othercredit
> 
</authorgroup>
</chapterinfo>
<title
>&katepart;’ı genişletmek</title>

<sect1 id="dev-intro">
<title
>Giriş</title>

<para
>Herhangi bir gelişmiş metin düzenleyicisi bileşeni gibi &katepart; da işlevselliğini genişletmek için çeşitli yollar sunar. &javascript; ile <link linkend="dev-scripting"
>basit betikler yazarak</link
> yeni özellikler ekleyebilirsiniz. Son olarak, &katepart; için yeni özellikler yazdıktan sonra <ulink url="https://kate-editor.org/join-us/"
>bize katılın</ulink
> ve iyileştirmelerinizi dünyanın geri kalanıyla paylaşın!</para>

</sect1>

<sect1 id="highlight">
<title
>Sözdizim Vurgulama ile çalışmak</title>

<sect2 id="highlight-overview">

<title
>Genel Bakış</title>

<para
>Sözdizim Vurgulama, dosyanın amacına göre dizinin işlevine bağlı olarak düzenleyicinin metni kendiliğinden farklı biçemlerde/renklerde görüntülemesini sağlayan şeydir. Örneğin program kaynak kodunda, denetim ifadeleri kalın harflerle gösterilebilirken, veri türleri ve yorumlar metnin geri kalanından farklı renkler alır. Bu, metnin okunabilirliğini büyük ölçüde artırır ve böylece yazarın daha verimli ve üretken olmasına yardımcı olur.</para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="highlighted.png"/></imageobject>
<textobject
><phrase
>Sözdizim vurgulama ile gösterilen bir C++ işlevi.</phrase
></textobject>
<caption
><para
>Sözdizim vurgulama ile gösterilen bir C++ işlevi.</para>
</caption>
</mediaobject>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="unhighlighted.png"/></imageobject>
<textobject
><phrase
>Aynı C++ işlevi, vurgulama olmadan.</phrase
></textobject>
<caption
><para
>Aynı C++ işlevi, vurgulama olmadan.</para
></caption>
</mediaobject>

<para
>İki örnekten hangisini okuması daha kolay?</para>

<para
>&kappname;, sözdizim vurgulaması yapmak için esnek, yapılandırılabilir ve yetenekli bir sistemle birlikte gelir ve standart dağıtım, çok çeşitli programlama, komut dosyası yazma ve işaretleme dilleri ve diğer metin dosyası biçimleri için tanımlar sağlar. Ayrıca basit &XML; dosyalarında kendi tanımlarınızı da sağlayabilirsiniz.</para>

<para
>&kappname;, bir dosyayı açtığınızda onun doğru sözdizim kurallarını sırasıyla &MIME; türü, dosya uzantısı veya bunlardan ikisi de yoksa içeriğine bakarak algılayacaktır. Yanlış bir seçimle karşı karşıya kalırsanız <menuchoice
><guimenu
>Araçlar</guimenu
><guisubmenu
>Vurgulama</guisubmenu
></menuchoice
> menüsünden elle bir vurgulama türü seçebilirsiniz.</para>

<para
>Sözdizim vurgulamaları tarafından kullanılan biçemler ve renkler <link linkend="config-dialog"
>yapılandırma iletişim kutusunun</link
> <link linkend="prefcolors-highlighting-text-styles"
>Vurgulanan Metin Biçemleri</link
> sekmesinden düzenlenebilirken, &MIME; türleri ve kullanması gereken dosya uzantıları ise <link linkend="pref-open-save-modes-filetypes"
>Kipler ve Dosya Türleri</link
> sekmesinden ayarlanır.</para>

<note>
<para
>Sözdizim vurgulama, doğru metnin okunabilirliğini artırmak için vardır; ancak metninizi doğrulamak için ona güvenemezsiniz. Kullandığınız biçime bağlı olarak metni sözdizimi için işaretlemek zordur ve bazı durumlarda sözdizim kurallarının yazarları metnin %​98’i doğru şekilde oluşturulursa gurur duyacaktır; ancak çoğunlukla yanlış %​2’yi görmek için nadir bir biçeme gereksiniminiz vardır.</para>
</note>

</sect2>

<sect2 id="katehighlight-system">

<title
>&kappname; Sözdizim Vurgulama Sistemi</title>

<para
>Bu bölümde &kappname; sözdizim vurgulama mekanizmasını daha ayrıntılı olarak ele alacağız. Bu konuda bilgi sahibi olmak istiyor ve sözdizim tanımlarını değiştirmek veya yeni bir tane oluşturmak istiyorsanız tam size göre.</para>

<sect3 id="katehighlight-howitworks">

<title
>Nasıl Çalışır</title>

<para
>Bir dosyayı açtığınızda &kappname; düzenleyicisinin yaptığı ilk şeylerden biri, dosya için hangi sözdizim tanımının kullanılacağını algılamaktır. Dosya metnini okurken ve siz dosyaya bir şeyler yazarken, sözdizim vurgulama sistemi, sözdizim tanımıyla tanımlanan kuralları kullanarak metni çözümleyecek ve farklı bağlamların ve biçimlerin başladığı ve bittiği yerleri imleyecektir.</para>

<para
>Belgeye bir şeyler yazdığınızda, yeni metin anında çözümlenir ve imlenir; böylece, bir bağlamın başlangıcı veya sonu olarak imlenen bir karakteri silerseniz çevreleyen metnin biçemi buna göre değişir.</para>

<para
>&kappname; Sözdizim Vurgulama Sistemi tarafından kullanılan sözdizim tanımları &XML; dosyalarıdır ve şunları içerir: <itemizedlist>
<listitem
><para
>Bağlam blokları halinde düzenlenmiş metnin rolünü algılamaya yönelik kurallar</para
></listitem>
<listitem
><para
>Anahtar sözcük listeleri</para
></listitem>
<listitem
><para
>Biçem ögesi tanımları</para
></listitem>
</itemizedlist>
</para>

<para
>Metin çözümlenirken algılama kuralları tanımlandıkları sıraya göre değerlendirilir ve geçerli dizinin başlangıcı bir kuralla eşleşiyorsa ilgili bağlam kullanılır. Metindeki başlangıç noktası, kuralın eşleştiği son noktaya taşınır ve eşleşen kural tarafından belirlenen bağlamdan başlayarak yeni bir kurallar döngüsü başlar.</para>

</sect3>

<sect3 id="highlight-system-rules">
<title
>Kurallar</title>

<para
>Algılama kuralları, vurgulama algılama sisteminin kalbidir. Kural, çözümlenen metinle eşleştirilecek bir dizi, karakter veya <link linkend="regular-expressions"
>düzenli ifadedir</link
>. Metnin eşleşen kısmı için hangi biçemin kullanılacağı hakkında bilgi içerir. Sistemin çalışma bağlamını ya açıkça belirtilen bir bağlama ya da metin tarafından kullanılan önceki bağlama çevirebilir.</para>

<para
>Kurallar bağlam gruplarında düzenlenir. Bir bağlam grubu, biçim içindeki ana metin kavramları için kullanılır; örneğin, alıntılanan metin dizileri veya program kaynak kodundaki yorum blokları. Bu, vurgulama sisteminin gerekli olmadığında tüm kurallar arasında döngü yapmasına gerek kalmamasını ve metindeki bazı karakter dizilerinin geçerli bağlama bağlı olarak farklı şekilde ele alınabilmesini sağlar. </para>

<para
>Örneklere özgü verinin kurallarda kullanılmasına izin vermek için bağlamlar devingen olarak oluşturulabilir.</para>

</sect3>

<sect3 id="highlight-context-styles-keywords">
<title
>Bağlam Biçemleri ve Anahtar Sözcükler</title>

<para
>Bazı programlama dillerinde tamsayılar, derleyici (kaynak kodunu ikili yürütülebilir dosyaya dönüştüren program) tarafından kayan noktalı sayılardan farklı şekilde ele alınır ve tırnak içine alınan bir dizi içinde özel bir anlama sahip karakterler olabilir. Bu gibi durumlarda, metni okurken kolayca tespit edilebilmeleri için onları çevreden farklı kılmak mantıklıdır. Dolayısıyla, özel bağlamları temsil etmeseler bile sözdizim vurgulama sistemi tarafından bu şekilde görülebilirler, böylece farklı sunum için imlenebilirler.</para>

<para
>Bir sözdizim tanımı, kullanıldığı biçimin kavramlarını kapsayacak kadar çok sayıda biçem içerebilir.</para>

<para
>Pek çok biçimde belirli bir kavramı temsil eden sözcük listeleri bulunur. Örneğin, programlama dillerinde, denetim ifadeleri bir kavramdır, veri türü adları başka bir kavramdır ve dilin yerleşik işlevleri üçüncüsüdür. &kappname; Sözdizim Vurgulama Sistemi, metin biçimlerinin kavramlarını vurgulamak amacıyla metindeki sözcükleri tespit etmek ve imlemek için bu tür listeleri kullanabilir.</para>

</sect3>

<sect3 id="kate-highlight-system-default-styles">
<title
>Öntanımlı Biçemler</title>

<para
>&kappname;’de bir C++ kaynak dosyası, bir &Java; kaynak dosyası ve bir &HTML; belgesi açarsanız biçimler farklı olsa ve dolayısıyla özel işlem için farklı sözcükler seçilse bile, kullanılan renklerin aynı olduğunu göreceksiniz. Bunun nedeni, &kappname;’in ayrı ayrı sözdizimi tanımları tarafından kullanılan, önceden tanımlanmış bir Öntanımlı Biçemler listesine sahip olmasıdır.</para>

<para
>Bu, farklı metin biçimlerindeki benzer kavramların tanınmasını kolaylaştırır. Örneğin, yorumlar hemen hemen her programlama, komut dosyası veya biçimlendirme dilinde bulunur ve tüm dillerde aynı biçem kullanılarak oluşturulduklarında, bunları metin içinde bunların ne olduğunu tanımlamaya çalışmakla vakit kaybetmezsiniz.</para>

<tip>
<para
>Bir sözdizim tanımındaki tüm biçemler, öntanımlı biçemlerden birini kullanır. Birkaç sözdizim tanımı, öntanımlılardan daha çok biçem kullanır; bu nedenle, bir biçimi sık sık kullanıyorsanız bazı kavramların aynı biçemi kullanıp kullanmadığını görmek için yapılandırma iletişim kutusunu açmanız faydalı olabilir. Örneğin, diziler için yalnızca bir öntanımlı biçem vardır; ancak Perl programlama dili iki tür diziyle çalıştığından, bunları biraz farklı olacak şekilde yapılandırarak vurgulamayı geliştirebilirsiniz. Tüm <link linkend="kate-highlight-default-styles"
>kullanılabilir öntanımlı biçemler</link
> daha sonra açıklanacaktır.</para>
</tip>

</sect3>

</sect2>

<sect2 id="katehighlight-xml-format">
<title
>&XML; Vurgu Tanımı Biçimi</title>

<sect3>
<title
>Genel Bakış</title>

<para
>&kappname;, &kde-frameworks;’ten Syntax-Highlighting kitaplığını kullanır. &kappname; ile verilen öntanımlı &XML; vurgulama dosyaları, Syntax-Highlighting tarafından öntanımlı olarak derlenirler. </para>

<para
>Bu bölüm, &XML; Vurgu Tanımı biçimine genel bir bakış sunar. Küçük bir örneğe dayanarak ana bileşenleri, bunların anlamlarını ve kullanımlarını açıklayacağız. Bir sonraki bölümde vurgu algılama kurallarının ayrıntılarına girilecektir.</para>

<para
><acronym
>XSD</acronym
> olarak da bilinen resmi tanım, <ulink url="https://commits.kde.org/syntax-highlighting?path=data/schema"
>Sözdizim Vurgulama</ulink
> deposundaki <filename
>language.xsd</filename
> dosyasında bulunabilir </para>

<para
><filename class="extension"
>.xml</filename
> vurgu tanımlama dosyaları, kullanıcı klasörünüzde genelde <filename class="directory"
><envar
>$HOME</envar
>/.local/share/</filename
> ve <filename class="directory"
>/usr/share/</filename
> olan <userinput
><command
>qtpaths</command
><option
> --paths GenericDataLocation</option
></userinput
> ile <filename class="directory"
>org.kde.syntax-highlighting/syntax/</filename
> konumunda bulunur. </para>

<para
>Flatpak ve Snap paketlerinde, yukarıdaki dizin işe yaramaz; çünkü her bir uygulamanın veri konumları farklıdır. Bir Flatpak uygulamasında, özel &XML; dosyalarının konumu genellikle <filename class="directory"
><envar
>$HOME</envar
>/.var/app/<replaceable
>flatpak-package-name</replaceable
>/data/org.kde.syntax-highlighting/syntax/</filename
> olup Snap uygulamalarında ise <filename class="directory"
><envar
>$HOME</envar
>/snap/<replaceable
>snap-package-name</replaceable
>/current/.local/share/org.kde.syntax-highlighting/syntax/</filename
> olur. </para>

<para
>&Windows;’ta bu dosyalar genelde <filename
>C:&#92;Users&#92;<replaceable
>user</replaceable
></filename
> <filename
>%USERPROFILE%&#92;AppData&#92;Local&#92;org.kde.syntax-highlighting&#92;syntax</filename
> olarak genişleyen <replaceable
>%USERPROFILE%</replaceable
> konumundadır.</para>

<para
>Özetle, çoğu yapılandırma için özel &XML; dosyalarının dizini aşağıdaki gibidir:</para>

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
>Yerel kullanıcı için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/.local/share/org.kde.syntax-highlighting/syntax/</filename
></entry>
</row>
<row>
<entry
>Tüm kullanıcılar için</entry>
<entry
><filename class="directory"
>/usr/share/org.kde.syntax-highlighting/syntax/</filename
></entry>
</row>
<row>
<entry
>Flatpak paketleri için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/.var/app/<replaceable
>flatpak-package-name</replaceable
>/data/org.kde.syntax-highlighting/syntax/</filename
></entry>
</row>
<row>
<entry
>Snap paketleri için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/snap/<replaceable
>snap-package-name</replaceable
>/current/.local/share/org.kde.syntax-highlighting/syntax/</filename
></entry>
</row>
<row>
<entry
>&Windows; üzerinde</entry>
<entry
><filename class="directory"
>%USERPROFILE%&#92;AppData&#92;Local&#92;org.kde.syntax-highlighting&#92;syntax</filename
></entry>
</row>
<row>
<entry
>&macOS; üzerinde</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/Library/Application Support/org.kde.syntax-highlighting/syntax/</filename
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Aynı dil için birden çok dosya varsa <userinput
>language</userinput
> ögesindeki en yüksek <userinput
>version</userinput
> özniteliğine sahip dosya yüklenir.</para>

<variablelist>
<title
>&kappname; Vurgu Tanımı dosyalarının ana bölümleri</title>

<varlistentry>
<term
>Vurgulama dosyası, &XML; sürümünü ayarlayan bir üstbilgi içerir:</term>
<listitem>
<programlisting
>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term
>Tanım dosyasının kökü öge <userinput
>dilidir</userinput
>. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
>Zorunlu öznitelikler:</para>
<para
><userinput
>name</userinput
>, dilin adını ayarlar. Sonrasında menülerde ve iletişim kutularında görünür.</para>
<para
><userinput
>section</userinput
>, kategoriyi belirtir.</para>
<para
><userinput
>extensions</userinput
>, dosya uzantılarını tanımlar, &quot;*.cpp;*.h&quot; gibi</para>
<para
><userinput
>version</userinput
>, tanım dosyasının geçerli revizyonunu bir tamsayı türünden belirtir. Vurgu tanımı dosyasını değiştirdiğinizde bu sayıyı artırdığınızdan emin olun.</para>
<para
><userinput
>kateversion</userinput
>, en son desteklenen &kappname; sürümünü belirtir.</para>

<para
>İsteğe bağlı öznitelikler:</para>
<para
><userinput
>mimetype</userinput
>, dosyaların &MIME; türlerini ilişkilendirir.</para>
<para
><userinput
>casesensitive</userinput
>, anahtar sözcüklerin BÜYÜK/küçük harf duyarlı olup olmadığını tanımlar.</para>
<para
><userinput
>priority</userinput
>, başka bir vurgu tanım dosyası aynı uzantıları kullanıyorsa gereklidir. Daha yüksek öncelik kazanır.</para>
<para
><userinput
>author</userinput
>, yazarın adını ve e-posta adresini içerir.</para>
<para
><userinput
>license</userinput
>, lisansı içerir. Yeni sözdizim vurgulama dosyaları için genelde MIT lisansıdır.</para>
<para
><userinput
>style</userinput
>, sağlanan dili içerir ve <literal
>required-syntax-style</literal
> özniteliği için olan girintileyiciler tarafından kullanılır.</para>
<para
><userinput
>indenter</userinput
>, öntanımlı olarak hangi girintileyicinin kullanılacağını tanımlar. Kullanılabilir girintileyiciler: <emphasis
>ada, normal, cstyle, cmake, haskell, latex, lilypond, lisp, lua, pascal, python, replicode, ruby</emphasis
> ve <emphasis
>xml</emphasis
>.</para>
<para
><userinput
>hidden</userinput
>, adın &kappname; menülerinde görünüp görünmeyeceğini tanımlar.</para>
<para
>Böylece, bir sonraki satır böyle görünebilir:</para>
<programlisting
>&lt;language name=&quot;C++&quot; version=&quot;1&quot; kateversion=&quot;2.4&quot; section=&quot;Sources&quot; extensions=&quot;*.cpp;*.h&quot; /&gt;
</programlisting>
</listitem>
</varlistentry>


<varlistentry>
<term
>Sonrasında <userinput
>highlighting</userinput
> ögesi gelir. Bu öge, isteğe bağlı <userinput
>list</userinput
> ögesini ve zorunlu <userinput
>contexts</userinput
> ve <userinput
>itemDatas</userinput
> ögelerini içerir.</term>
<listitem>
<para
><userinput
>list</userinput
> ögeleri bir anahtar sözcükler listesi içerir. Bu durumda, anahtar sözcükler <emphasis
>class</emphasis
> ve <emphasis
>const</emphasis
> olur. İstediğiniz kadar liste ekleyebilirsiniz.</para>
<para
>&kde-frameworks; 5.53 sürümünden bu yana, bir liste, başka bir listeden ve/veya dilden/dosyadan <userinput
>include</userinput
> ögesini kullanarak anahtar sözcükler içerebilirler. <userinput
>IncludeRules</userinput
> kuralında olduğu gibi, <userinput
>##</userinput
>, liste adını ve dil tanımını ayırmak için kullanılır. Bu, başka bir dilin/dosyanın anahtar sözcüklerini içermeniz gerekiyorsa yinelenen anahtar sözcük listelerini önlemek için yararlıdır. Örneğin, <emphasis
>othername</emphasis
> listesi, <emphasis
>ISO C++</emphasis
> diline ait olan <emphasis
>str</emphasis
> anahtar sözcüğünü ve <emphasis
>types</emphasis
> listesinin tüm anahtar sözcüklerini içerir.</para>
<para
><userinput
>contexts</userinput
> ögesi tüm bağlamları içerir. İlk bağlam, öntanımlı olarak, vurgulamanın başlangıcıdır. <emphasis
>Normal Text</emphasis
> adlı bağlamda iki adet kural vardır: <emphasis
>somename</emphasis
> adındaki bir kuralla eşleşen anahtar sözcükler ve bir tırnağı algılayıp bağlamı <emphasis
>string</emphasis
> yapan başka bir tanesi. Kurallar hakkında daha fazla bilgi almak için sonraki fasılı okuyun.</para>
<para
>Üçüncü kısımsa <userinput
>itemDatas</userinput
> ögesidir. Bağlamlar ve kurallar tarafından gereksinim duyulan tüm renk ve yazıtipi biçemlerini içerir. Bu örnekte, <userinput
>itemData</userinput
> <emphasis
>Normal Text</emphasis
>, <emphasis
>String</emphasis
> ve <emphasis
>Keyword</emphasis
> kullanılmıştır. </para>
<programlisting
>&lt;highlighting&gt;
    &lt;list name=&quot;somename&quot;&gt;
      &lt;item&gt;class&lt;/item&gt;
      &lt;item&gt;const&lt;/item&gt;
    &lt;/list&gt;
    &lt;list name=&quot;othername&quot;&gt;
      &lt;item&gt;str&lt;/item&gt;
      &lt;include&gt;types##ISO C++&lt;/include&gt;
    &lt;/list&gt;
    &lt;contexts&gt;
      &lt;context attribute=&quot;Normal Text&quot; lineEndContext=&quot;#pop&quot; name=&quot;Normal Text&quot; &gt;
        &lt;keyword attribute=&quot;Keyword&quot; context=&quot;#stay&quot; String=&quot;somename&quot; /&gt;
        &lt;keyword attribute=&quot;Keyword&quot; context=&quot;#stay&quot; String=&quot;othername&quot; /&gt;
        &lt;DetectChar attribute=&quot;String&quot; context=&quot;string&quot; char=&quot;&amp;quot;&quot; /&gt;
      &lt;/context&gt;
      &lt;context attribute=&quot;String&quot; lineEndContext=&quot;#stay&quot; name=&quot;string&quot; &gt;
        &lt;DetectChar attribute=&quot;String&quot; context=&quot;#pop&quot; char=&quot;&amp;quot;&quot; /&gt;
      &lt;/context&gt;
    &lt;/contexts&gt;
    &lt;itemDatas&gt;
      &lt;itemData name=&quot;Normal Text&quot; defStyleNum=&quot;dsNormal&quot; /&gt;
      &lt;itemData name=&quot;Keyword&quot; defStyleNum=&quot;dsKeyword&quot; /&gt;
      &lt;itemData name=&quot;String&quot; defStyleNum=&quot;dsString&quot; /&gt;
    &lt;/itemDatas&gt;
  &lt;/highlighting&gt;
</programlisting>
</listitem>
</varlistentry>

<varlistentry>
<term
>Bir vurgu tanımının son kısmı ise isteğe bağlı olan <userinput
>general</userinput
> bölümüdür. Anahtar sözcükler, kod katlama, yorumlar, girintileme, boş satırlar ve yazım denetim üzerine bilgiler içerir.</term>

<listitem>
<para
><userinput
>comment</userinput
> bölümü, tek bir satırlık bir yorumun hangi diziye konulduğunu tanımlar. Ayrıca, ek <emphasis
>end</emphasis
> özniteliği ile <emphasis
>multiLine</emphasis
> kullanarak çok satırlı bir yorum da tanımlayabilirsiniz. Bu, kullanıcı <emphasis
>comment/uncomment</emphasis
> ile ilişkili kısayola bastığı zaman kullanılır.</para>
<para
><userinput
>keywords</userinput
> bölümü, anahtar sözcük listelerinin BÜYÜK/küçük harf duyarlı olup olmadığını tanımlar. Diğer öznitelikler daha sonra açıklanacaktır.</para>
<para
><userinput
>folding</userinput
>, <userinput
>emptyLines</userinput
> ve <userinput
>spellchecking</userinput
> bölümleri genelde gerekli değildir ve daha sonra açıklanacaklardır.</para>
<programlisting
>&lt;general&gt;
    &lt;comments&gt;
      &lt;comment name="singleLine" start="#"/&gt;
      &lt;comment name="multiLine" start="###" end="###" region="CommentFolding"/&gt;
    &lt;/comments&gt;
    &lt;keywords casesensitive="1"/&gt;
    &lt;folding indentationsensitive="0"/&gt;
    &lt;emptyLines&gt;
      &lt;emptyLine regexpr="\s+"/&gt;
      &lt;emptyLine regexpr="\s*#.*"/&gt;
    &lt;/emptyLines&gt;
    &lt;spellchecking&gt;
      &lt;encoding char="&#225;" string="\&#39;a"/&gt;
      &lt;encoding char="&#224;" string="\&#96;a"/&gt;
    &lt;/spellchecking&gt;
  &lt;/general&gt;
&lt;/language&gt;
</programlisting>
</listitem>
</varlistentry>

</variablelist>


</sect3>

<sect3 id="kate-highlight-sections">
<title
>Ayrıntılı Olarak Bölümler</title>
<para
>Bu kısım; bağlamlar, itemData’lar, anahtar sözcükler, yorumlar, kod katlama ve girintileme ile ilgili tüm öznitelikleri açıklar.</para>

<variablelist>
<varlistentry>
<term
><userinput
>context</userinput
> ögesi, <userinput
>contexts</userinput
> grubuna aittir. Bağlamın kendisi, vurgu sistemi bir satırın sonuna ulaştığında ne olması gerektiği gibi bağlama özgü kuralları tanımlar. Kullanılabilir özellikler şunlardır:</term>


<listitem>
<para
><userinput
>name</userinput
>, bağlam adını belirtir. Kurallar, kuralın eşleşmesi durumunda geçiş yapılacak bağlamı belirtmek için bu adı kullanır.</para>

<para
><userinput
>attribute</userinput
>, hiçbir kural eşleşmediğinde veya bir kural özniteliği belirtilmediğinde bir karakter için kullanılacak biçemi tanımlar. Sonraki durumda, kuralın <emphasis
>context</emphasis
>’inde belirtilen <emphasis
>attribute</emphasis
> kullanılır.</para>

<para
><userinput
>lineEndContext</userinput
>, vurgu sistemi satırın sonuna geldiğinde geçiş yapılacak bağlamı tanımlar. Bu, ya başka bir bağlam adı, bağlamı değiştirmemek (bir şey yapmamak) için <userinput
>#stay</userinput
> veya bağlamdan çıkış yapmak için <userinput
>#pop</userinput
> olabilir. Örneğin, üç kez <userinput
>#pop#pop#pop</userinput
> yapmak veya hatta iki kez <userinput
>#pop#pop!OtherContext</userinput
> ve <userinput
>OtherContext</userinput
> adlı başka bağlama geçiş yapmak da olabilir. Ayrıca başka bir dil tanımına ait olan başka bir bağlama geçiş yapmak da olanaklıdır. Bu, <userinput
>IncludeRules</userinput
> kuralları ile aynı tarzdadır; &eg;, <userinput
>SomeContext##JavaScript</userinput
>. Bağlam anahtarları ek olarak <xref linkend="kate-highlight-rules-detailled"/> içinde açıklanırlar. Öntanımlı: #stay.</para>
<para
><userinput
>lineEmptyContext</userinput
>, boş bir satıra rastlandığındaki bağlamı tanımlar. Bağlam anahtarlarının terminolojisi daha önce <emphasis
>lineEndContext</emphasis
>’te açıklananla aynıdır. Öntanımlı: #stay.</para>
<para
><userinput
>fallthroughContext</userinput
>, hiçbir kural eşleşmediğinde geçiş yapılacak sonraki bağlamı belirtir. Bağlam anahtarlarının terminolojisi daha önce <emphasis
>lineEndContext</emphasis
>’te açıklananla aynıdır. Öntanımlı: #stay.</para>
<para
><userinput
>fallthrough</userinput
>, hiçbir kural eşleşmediğinde sistemin <userinput
>fallthroughContext</userinput
> içinde belirtilen geçiş yapacağı bağlamı belirtir. &kde; &frameworks; 5.62 sürümünden bu yana bu özniteliğin <userinput
>fallthroughContext</userinput
> namına kullanımdan kaldırıldığını aklınızdan çıkarmayın. Özellikle, <userinput
>fallthroughContext</userinput
> özniteliği varsa örtük olarak <userinput
>fallthrough</userinput
> değerinin <emphasis
>true</emphasis
> olacağı anlaşılır. Öntanımlı: <emphasis
>false</emphasis
>.</para>
<para
><userinput
>noIndentationBasedFolding</userinput
>, bu bağlamdaki girintileme tabanlı katlamayı devre dışı bırakır. Girintileme tabanlı katlama etkinleştirilmemişse bu öznitelik bir işe yaramaz. Bu, <emphasis
>general</emphasis
> grubunun <emphasis
>folding</emphasis
> ögesinde tanımlanmıştır. Öntanımlı: <emphasis
>false</emphasis
>.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>itemData</userinput
> ögesi, <userinput
>itemDatas</userinput
> grubundadır. Yazıtipi biçemini ve renklerini tanımlar. Böylece, kendi biçemlerinizi ve renklerinizi tanımlamanız olanaklıdır. Ancak biz yine de öntanımlı biçemlere sadık kalmanızı öneririz; böyle yaparsanız kullanıcı farklı dillerde de aynı renkleri görür. Bazen başka bir şansınız olmaz ve yazıtipi/renk özniteliklerini değiştirmeniz gerekebilir. name ve defStyleNum öznitelikleri zorunludur, diğerleri isteğe bağlıdır. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>name</userinput
>, itemData’nın adını ayarlar. Bağlamlar ve kurallar, <emphasis
>attribute</emphasis
> özniteliğinde bir itemData’ya başvurmak için bu adı kullanırlar.</para>
<para
><userinput
>defStyleNum</userinput
>, hangi öntanımlı biçemin kullanılacağını tanımlar. Kullanılabilir öntanımlı biçemler ilerde daha ayrıntılı açıklanır.</para>
<para
><userinput
>color</userinput
>, bir renk tanımlar. Geçerli biçimler “#rrggbb” veya “#rgb”dir.</para>
<para
><userinput
>selColor</userinput
>, seçim rengini tanımlar.</para>
<para
><userinput
>italic</userinput
> <emphasis
>true</emphasis
> ise metin yatık olur.</para>
<para
><userinput
>bold</userinput
> <emphasis
>true</emphasis
> ise metin kalın olur.</para>
<para
><userinput
>underline</userinput
> <emphasis
>true</emphasis
> ise metnin altı çizili olur.</para>
<para
><userinput
>strikeOut</userinput
> <emphasis
>true</emphasis
> ise metnin üzeri çizili olur.</para>
<para
><userinput
>spellChecking</userinput
> <emphasis
>true</emphasis
> ise metnin yazımı denetlenir.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>general</userinput
> grubundaki <userinput
>keywords</userinput
> ögesi, anahtar sözcük özelliklerini tanımlar. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>casesensitive</userinput
>, <emphasis
>true</emphasis
> veya <emphasis
>false</emphasis
> olabilir. <emphasis
>true</emphasis
> ise tüm anahtar sözcükler BÜYÜK/küçük harf duyarlı olarak eşlenirler.</para>
<para
><userinput
>weakDeliminator</userinput
>, sözcük sınırlandırıcısı olarak davranmayan bir karakterler listesidir. Örneğin, <userinput
>'.'</userinput
> noktası bir sözcük sınırlandırıcısıdır. <userinput
>list</userinput
> içindeki bir anahtar sözcüğün bir nokta içerdiğini varsayalım; bu, noktayı eğer yalnızca bir zayıf sınırlandırıcı olarak tanımlarsanız eşleştirir.</para>
<para
><userinput
>additionalDeliminator</userinput
>, ek sınırlandırıcılar tanımlar.</para>
<para
><userinput
>wordWrapDeliminator</userinput
>, ardından bir satır kaydırma oluşabilecek karakterleri tanımlar.</para>
<para
>Öntanımlı sınırlandırıcılar ve sözcük kaydırma sınırlandırıcıları şunlardır: <userinput
>.():!+,-&lt;=&gt;%&amp;*/;?[]^{|}~\</userinput
>, boşluk (<userinput
>' '</userinput
>) ve sekmelendirici (<userinput
>'\t'</userinput
>).</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>comments</userinput
> grubundaki <userinput
>comment</userinput
> ögesi; <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Yorum</guimenuitem
></menuchoice
>, <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Yorumu Kapat</guimenuitem
></menuchoice
> ve <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Yorumu Aç/Kapat</guimenuitem
></menuchoice
> seçenekleri için kullanılan yorum özelliklerini tanımlar. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>name</userinput
>, ya <emphasis
>singleLine</emphasis
> ya da <emphasis
>multiLine</emphasis
> olabilir. <emphasis
>multiLine</emphasis
> seçerseniz <emphasis
>end</emphasis
> ve <emphasis
>region</emphasis
> öznitelikleri zorunludur. <emphasis
>singleLine</emphasis
> seçerseniz isteğe bağlı olan <emphasis
>position</emphasis
> özniteliğini ekleyebilirsiniz.</para>
<para
><userinput
>start</userinput
>, bir yorum başlatmak için kullanılan diziyi tanımlar. C++ için bu, çoklu satır yorumlarda &quot;/*&quot; olur. Bu öznitelik, <emphasis
>multiLine</emphasis
> ve <emphasis
>singleLine</emphasis
> türleri için zorunludur.</para>
<para
><userinput
>end</userinput
>, bir yorum kapatmak için kullanılan diziyi tanımlar. C++ için bu, çoklu satır yorumlarda &quot;*/&quot; olur. Bu öznitelik, yalnızca <emphasis
>multiLine</emphasis
> türü yorumlar için kullanılabilir ve onun için zorunludur.</para>
<para
><userinput
>region</userinput
>, katlanabilir çoklu satır yorumun adı olmalıdır. Kurallarınızda <emphasis
>beginRegion="Comment"</emphasis
> … <emphasis
>endRegion="Comment"</emphasis
> olduğunu varsayalım; o zaman <emphasis
>region="Comment"</emphasis
> kullanmalısınız. Böylece, çoklu satır yorumun tüm metnini seçmeseniz bile yorumu kapatmak çalışır. Yalnızca, imleç çoklu satır yorumun içerisinde olmalıdır. Bu öznitelik, yalnızca <emphasis
>multiLine</emphasis
> türü için kullanılabilirdir.</para>
<para
><userinput
>position</userinput
>, tek satırlık yorumun nereye eklendiğini tanımlar. Öntanımlı olarak, tek satırlık yorum satırın başında 0. sütuna koyulur; ancak <emphasis
>position="afterwhitespace"</emphasis
> kullanırsanız yorum, ilk boş olmayan karakterden sonra sağa doğru boşluk bırakılarak eklenir. Bu; örneğin, Python veya YAML gibi girintilemenin önemli olduğu diller için kullanışlıdır. Bu öznitelik isteğe bağlıdır ve tek olası değeri <emphasis
>afterwhitespace</emphasis
>’dir. Bu, yalnızca <emphasis
>singleLine</emphasis
> türü için kullanılabilirdir.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>general</userinput
> grubundaki <userinput
>folding</userinput
> ögesi, kod katlama özelliklerini tanımlar. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>indentationsensitive</userinput
> <emphasis
>true</emphasis
> ise kod katlama imleyicileri girintileme tabanlı olarak eklenir. Örnek olarak yine Python verilebilir. Genelde öntanımlı olarak <emphasis
>false</emphasis
> olduğundan pek ayarlamanıza gerek olmaz.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>emptyLines</userinput
> grubundaki <userinput
>emptyLine</userinput
> ögesi, hangi satırlara boş satır gibi davranılması gerektiğini tanımlar. Bu, <userinput
>context</userinput
> ögelerindeki <emphasis
>lineEmptyContext</emphasis
> özniteliğinin davranışının değiştirilmesine olanak tanır. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>regexpr</userinput
>, boş bir satır olarak davranılacak bir düzenli ifade tanımlar. Öntanımlı olarak, boş satırlar hiçbir karakter içermezler, dolayısıyla, bu ek boş satırlar ekler; örneğin, boşluklar içeren satırların da boş satırlar olarak kabul edilmesini istiyorsanız yararlıdır. Çoğu sözdizim tanımında bu özniteliği ayarlamanız gerekmez.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><userinput
>spellchecking</userinput
> grubundaki <userinput
>encoding</userinput
> ögesi, yazım denetimi için bir karakter kodlaması tanımlar. Kullanılabilir öznitelikler şunlardır:</term>

<listitem>
<para
><userinput
>char</userinput
>, bir kodlanmış karakterdir.</para>
<para
><userinput
>string</userinput
>, yazım denetimindeki <emphasis
>char</emphasis
> karakteri olarak kodlanacak karakterler dizisidir. Örneğin, LaTeX için <userinput
>\&quot;{A}</userinput
> dizisi <userinput
>&#196;</userinput
> karakterini temsil eder.</para>
</listitem>
</varlistentry>


</variablelist>


</sect3>

<sect3 id="kate-highlight-default-styles">
<title
>Kullanılabilir Öntanımlı Biçemler</title>
<para
>Öntanımlı Biçemler daha önce <link linkend="kate-highlight-system-default-styles"
>halihazırda kısa bir özet olarak</link
> açıklammıştı: Öntanımlı biçemler, önceden tanımlanan yazıtipi ve renk biçemleridir.</para>
<variablelist>
<varlistentry>
<term
>Genel öntanımlı biçemler:</term>
<listitem>
<para
>Özel bir vurgulama gerekmediğinde <userinput
>dsNormal</userinput
>.</para>
<para
><userinput
>dsKeyword</userinput
>, yerleşik dil anahtar sözcükleri.</para>
<para
><userinput
>dsFunction</userinput
>, işlev çağrıları ve tanımları.</para>
<para
><userinput
>dsVariable</userinput
>, kullanılabiliyorsa değişken adları (&eg;., PHP/Perl için $someVar).</para>
<para
><userinput
>dsControlFlow</userinput
>; if, else, switch, break, return, yield, vb. denetim akışı anahtar sözcükleri.</para>
<para
><userinput
>dsOperator</userinput
>, + - * / :: &lt; &gt; gibi işleçler.</para>
<para
><userinput
>dsBuiltIn</userinput
>, yerleşik işlevler, sınıflar ve nesneler.</para>
<para
><userinput
>dsExtension</userinput
>, ortak uzantılar; örneğin, C++ ve Python içindeki &Qt; sınıfları ve işlevler/makrolar.</para>
<para
><userinput
>dsPreprocessor</userinput
>, önişlemci ifadeleri veya makro tanımları.</para>
<para
><userinput
>dsAttribute</userinput
>, @override ve __declspec(…) gibi açıklamalar.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Dizi ile ilgili öntanımlı biçemler:</term>
<listitem>
<para
><userinput
>dsChar</userinput
>, “x” gibi tekli karakterler.</para>
<para
><userinput
>dsSpecialChar</userinput
>, kaçışlar, yer değiştirmeler, veya düzenli ifade işleçleri gibi özel anlama sahip diziler.</para>
<para
><userinput
>dsString</userinput
>, "merhaba dünya" gibi diziler.</para>
<para
><userinput
>dsVerbatimString</userinput
>, Perl, CoffeeScript ve kabuklardaki ’raw \backlash’ ve Python’daki r’\raw’ gibi gerçek veya ham diziler.</para>
<para
><userinput
>dsSpecialString</userinput
>, SQL, regex’ler, HERE belgeleri, &latex; matematik kipi, …</para>
<para
><userinput
>dsImport</userinput
>; modüllerin import, include, require ifadeleri.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Sayı ile ilgili öntanımlı biçemler:</term>
<listitem>
<para
><userinput
>dsDataType</userinput
>; int, void, u64 gibi yerleşik veri türleri.</para>
<para
><userinput
>dsDecVal</userinput
>, ondalık değerler.</para>
<para
><userinput
>dsBaseN</userinput
>, 10 dışında tabana sahip değerler.</para>
<para
><userinput
>dsFloat</userinput
>, kayan noktalı değerler.</para>
<para
><userinput
>dsConstant</userinput
>, Pİ gibi yerleşik ve kullanıcı tanımlı sabitler.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Yorum ve belgelendirmeyle ilgili öntanımlı biçemler:</term>
<listitem>
<para
><userinput
>dsComment</userinput
>, yorumlar.</para>
<para
><userinput
>dsDocumentation</userinput
>, /** Belgelendirme yorumları */ veya """docstrings""".</para>
<para
><userinput
>dsAnnotation</userinput
>, @param, @brief gibi belgelendirme komutları.</para>
<para
><userinput
>dsCommentVar</userinput
>, yukarıdaki komutlarda kullanılan değişken adları; @param foobar’daki "foobar" gibi.</para>
<para
><userinput
>dsRegionMarker</userinput
>; yorumlardaki //BEGIN, //END gibi bölge imleyicileri.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Diğer öntanımlı biçemler:</term>
<listitem>
<para
><userinput
>dsInformation</userinput
>, doxygen içindeki @note gibi notlar ve ipuçları.</para>
<para
><userinput
>dsWarning</userinput
>, doxygen’deki @warning gibi uyarılar.</para>
<para
><userinput
>dsAlert</userinput
>; TODO, FIXME, XXXX gibi özel sözcükler.</para>
<para
><userinput
>dsError</userinput
>, hata vurgulaması ve yanlış sözdizim.</para>
<para
><userinput
>dsOthers</userinput
>, başka hiçbir şey uymadığında kullanılır.</para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

</sect2>

<sect2 id="kate-highlight-rules-detailled">
<title
>Vurgu Algılama Kuralları</title>

<para
>Bu bölüm, sözdizim algılama kurallarını tanımlar.</para>

<para
>Her kural, sınandıkları dizinin başlangıcındaki sıfır veya daha fazla karakterle eşleşebilir. Kural eşleşirse eşleşen karakterlere kural tarafından tanımlanan biçem veya <emphasis
>öznitelik</emphasis
> atanır ve bir kural, geçerli bağlamın değiştirilmesini isteyebilir.</para>

<para
>Kural şuna benzer:</para>

<programlisting
>&lt;KuralAdı attribute=&quot;(tanımlayıcı)&quot; context=&quot;(tanımlayıcı)&quot; [kurala özel öznitelikler] /&gt;</programlisting>

<para
><emphasis
>attribute</emphasis
>, eşleşen karakterlerle kullanılacak biçemi ada göre tanımlar ve <emphasis
>context</emphasis
> ise buradan sonra kullanılacak bağlamı tanımlar.</para>

<para
><emphasis
>context</emphasis
>, şöyle tanımlanabilir:</para>

<itemizedlist>
<listitem>
<para
><emphasis
>identifier</emphasis
>, bu diğer bağlamın adıdır.</para>
</listitem>
<listitem>
<para
>Bir <emphasis
>order</emphasis
>, işletkeye geçerli bağlamda kalmasını  (<userinput
>#stay</userinput
>) veya dizide kullanılan bir önceki bağlama geri gitmesini (<userinput
>#pop</userinput
>) söyler. Boş veya var olmayan bir bağlam <userinput
>#stay</userinput
> ile eşdeğerdir.</para>
<para
>Daha çok adım geri gitmek için #pop anahtar sözcüğü yinelenebilir: <userinput
>#pop#pop#pop</userinput
></para>
</listitem>
<listitem>
<para
>Bir ünlem işareti (<emphasis
>!</emphasis
>) ve <emphasis
>tanımlayıcı</emphasis
> tarafından izlenen bir <emphasis
>sıra</emphasis
>, işletkenin ilk sırayı izlemesini ve başka bir bağlama geçmesini söyler; örneğin, <userinput
>#pop#pop!OtherContext</userinput
>.</para>
</listitem>
<listitem>
<para
>Bir bağlam adı olan, iki adet kare tarafından izlenen (<userinput
>##</userinput
>) ve sonrasında başka bir <emphasis
>tanımlayıcı</emphasis
> olan bir <emphasis
>tanımlayıcı</emphasis
>, bir dil tanımının adıdır. Bu adlandırma, <userinput
>IncludeRules</userinput
> kurallarında kullanılana benzerdir ve başka bir sözdizim vurgulama tanımında kullanılan bağlama geçiş yapmanıza olanak tanır; örneğin, <userinput
>SomeContext##JavaScript</userinput
>. </para>
</listitem>
</itemizedlist>

<para
>Kurala özgü öznitelikler farklılık gösterir ve aşağıdaki bölümlerde açıklanmaktadır.</para>

<itemizedlist>
<title
>Ortak öznitelikler</title>
<para
>Tüm kurallar aşağıdaki ortak özelliklere sahiptir ve <userinput
>(ortak özellikler)</userinput
> göründüğünde kullanılabilir. Tüm özellikler isteğe bağlıdır. </para>

<listitem>
<para
><emphasis
>attribute</emphasis
>: Bir tanımlı ile <emphasis
>itemData</emphasis
> eşlemlenen öznitelik. Öntanımlı: <emphasis
>context</emphasis
> özniteliğinde tanımlanan <emphasis
>attribute</emphasis
>.</para>
</listitem>
<listitem>
<para
><emphasis
>context</emphasis
>: Kural eşleşirse vurgulama sisteminin geçiş yapacağı bağlamı belirtir. Öntanımlı: #stay.</para>
</listitem>
<listitem>
<para
><emphasis
>beginRegion</emphasis
>: Bir kod katlama bloku başlatın. Öntanımlı: Ayarsız.</para>
</listitem>
<listitem>
<para
><emphasis
>endRegion</emphasis
>: Bir kod katlama blokunu kapatın. Öntanımlı: Ayarsız.</para>
</listitem>
<listitem>
<para
><emphasis
>lookAhead</emphasis
>: <emphasis
>true</emphasis
> ise vurgulama sistemi eşleşmelerin uzunluğunu dikkate almaz.Öntanımlı: <emphasis
>false</emphasis
>.</para>
</listitem>
<listitem>
<para
><emphasis
>firstNonSpace</emphasis
>: Dizi, satırdaki ilk boşluk olmayan karakterse eşleşir. Öntanımlı: <emphasis
>false</emphasis
>.</para>
</listitem>
<listitem>
<para
><emphasis
>column</emphasis
>: Yalnızca sütun eşleşirse eşleşir. Öntanımlı: Ayarsız.</para>
</listitem>
</itemizedlist>

<itemizedlist>
<title
>Devingen kurallar</title>
<para
>Bazı kurallar, öntanımlı olarak <emphasis
>false</emphasis
> olan isteğe bağlı Boole türündeki <userinput
>dynamic</userinput
> özniteliğine izin verirler. Dynamic <emphasis
>true</emphasis
> ise bir kural bir <emphasis
>regular expression</emphasis
> ile eşleşen metni temsil eden yer tutucular kullanabilir. Bunlar kendi <userinput
>string</userinput
> veya <userinput
>char</userinput
> özniteliklerinde geçerli bağlama geçiş yaparlar. Bir <userinput
>string</userinput
>’de, <replaceable
>%N</replaceable
> yer tutucusu (N bir sayıdır), çağırdığı düzenli ifadede ilişkili olduğu <replaceable
>N</replaceable
> ile değiştirilir. Bir <userinput
>char</userinput
>’da, yer tutucu bir <replaceable
>N</replaceable
> sayısı olmalıdır ve çağıran düzenli ifadedeki ilişkili olduğu <replaceable
>N</replaceable
> ile değiştirilir. Bir kural bu özniteliğe izin veriyorsa bir <emphasis
>(dynamic)</emphasis
> içerir.</para>

<listitem>
<para
><emphasis
>dynamic</emphasis
>: <emphasis
>(true|false)</emphasis
> olabilir.</para>
</listitem>
</itemizedlist>

<para
><userinput
>Nasıl çalışır:</userinput
></para>

<para
><userinput
>RegExpr</userinput
> kuallarının <link linkend="regular-expressions"
>düzenli ifadelerinde</link
>, basit süslü ayraçlar arasındaki tüm metin <userinput
>(PATTERN)</userinput
> yakalanır ve anımsanır. Bu yakalamalar, geçiş yapıldıkları bağlama göre kullanılabilirler. Bu, <userinput
>dynamic</userinput
> özniteliği <emphasis
>true</emphasis
> iken ve <replaceable
>%N</replaceable
> (<emphasis
>String</emphasis
> içinde) veya <replaceable
>N</replaceable
> (<emphasis
>char</emphasis
> içinde) iken geçerlidir.</para>

<para
>Bir <userinput
>RegExpr</userinput
> kuralında yakalanan metnin, <userinput
>context</userinput
> özniteliğinde belirtildiği üzere, yalnızca geçiş yapıldığı bağlam için depolandığını belirtmek önemlidir.</para>

<tip>
<itemizedlist>

<listitem>
<para
>Yakalamalar, hem devingen kurallar hem de düzenli ifadeler tarafından kullanılmayacaksa <userinput
>yakalamayan gruplar</userinput
> kullanılmalıdır: <userinput
>(?:PATTERN)</userinput
></para>
<para
><userinput
>(?=PATTERN)</userinput
>, <userinput
>(?!PATTERN)</userinput
> or <userinput
>(?&lt;=PATTERN)</userinput
> gibi <emphasis
>lookahead</emphasis
> veya <emphasis
>lookbehind</emphasis
> grupları yakalanmazlar. Daha fazla bilgi için <link linkend="regular-expressions"
>Düzenli İfadeler</link
> bölümüne bakın.</para>
</listitem>

<listitem>
<para
>Yakalama grupları, <replaceable
>%N</replaceable
> yerine <replaceable
>\N</replaceable
> kullanılarak aynı düzenli ifadede kullanılabilirler. Daha fazla bilgi için <link linkend="regular-expressions"
>Düzenli İfadeler</link
> içindeki <link linkend="regex-capturing"
>Eşleşen metni yakalamak (geriye başvurular)</link
> bölümüne bakın.</para>
</listitem>

</itemizedlist>
</tip>

<para
>Örnek 1:</para>
<para
>Bu basit örnekte, <userinput
>=*</userinput
> düzenli ifadesi ile eşleşen metin yakalanır ve devingen kuralda <replaceable
>%1</replaceable
> yerine yerleştirilir. Bu, yorumun başlangıçta aynı sayıda <userinput
>=</userinput
> ile bitmesine olanak tanır. Şu tür metinlerle eşleştirilir: <userinput
>[[ comment ]]</userinput
>, <userinput
>[=[ comment ]=]</userinput
>veya <userinput
>[=====[ comment ]=====]</userinput
>.</para>
<para
>Ek olarak, yakalamalar yalnızca geçilen <emphasis
>Multi-line Comment</emphasis
> bağlamında kullanılabilirdir.</para>

<programlisting
>&lt;context name="Normal" attribute="Normal Text" lineEndContext="#stay"&gt;
  &lt;RegExpr context="Multi-line Comment" attribute="Comment" String="\[(=*)\[" beginRegion="RegionComment"/&gt;
&lt;/context&gt;
&lt;context name="Multi-line Comment" attribute="Comment" lineEndContext="#stay"&gt;
  &lt;StringDetect context="#pop" attribute="Comment" String="]%1]" dynamic="true" endRegion="RegionComment"/&gt;
&lt;/context&gt;
</programlisting>

<para
>Örnek 2:</para>
<para
>Devingen kuralda; <replaceable
>%1</replaceable
>, <userinput
>#+</userinput
> ve <replaceable
>%2</replaceable
>, <userinput
>&amp;quot;+</userinput
> ile eşleşen yakalamalara karşılık gelir. Bu, şu tür metinlerle eşleşir: <userinput
>#etiket""""bağlamın içi""""#</userinput
>.</para>
<para
>Bu yakalamalar; <emphasis
>OtherContext</emphasis
>, <emphasis
>FindEscapes</emphasis
> veya <emphasis
>SomeContext</emphasis
> gibi başka bağlamlarda kullanılabilir olmayacaktır.</para>

<programlisting
>&lt;context name="SomeContext" attribute="Normal Text" lineEndContext="#stay"&gt;
  &lt;RegExpr context="#pop!NamedString" attribute="String" String="(#+)(?:[\w-]|[^[:ascii:]])(&amp;quot;+)"/&gt;
&lt;/context&gt;
&lt;context name="NamedString" attribute="String" lineEndContext="#stay"&gt;
  &lt;RegExpr context="#pop!OtherContext" attribute="String" String="%2(?:%1)?" dynamic="true"/&gt;
  &lt;DetectChar context="FindEscapes" attribute="Escape" char="\"/&gt;
&lt;/context&gt;
</programlisting>

<para
>Örnek 3:</para>
<para
>Bu, şunun gibi metinlerle eşleşir: <userinput
>Class::function&lt;T&gt;(…)</userinput
>.</para>

<programlisting
>&lt;context name="Normal" attribute="Normal Text" lineEndContext="#stay"&gt;
  &lt;RegExpr context="FunctionName" lookAhead="true"
              String="\b([a-zA-Z_][\w-]*)(::)([a-zA-Z_][\w-]*)(?:&amp;lt;[\w\-\s]*&amp;gt;)?(\()"/&gt;
&lt;/context&gt;
&lt;context name="FunctionName" attribute="Normal Text" lineEndContext="#pop"&gt;
  &lt;StringDetect context="#stay" attribute="Class" String="%1" dynamic="true"/&gt;
  &lt;StringDetect context="#stay" attribute="Operator" String="%2" dynamic="true"/&gt;
  &lt;StringDetect context="#stay" attribute="Function" String="%3" dynamic="true"/&gt;
  &lt;DetectChar context="#pop" attribute="Normal Text" char="4" dynamic="true"/&gt;
&lt;/context&gt;
</programlisting>

<itemizedlist>
<title
>Yerel sınırlandırıcılar</title>
<para
>Bazı kurallar, aynı adlı <userinput
>keywords</userinput
> etiketinin öznitelikleriyle birleştirilen <userinput
>weakDeliminator</userinput
> ve <userinput
>additionalDeliminator</userinput
> gibi isteğe bağlı özniteliklere izin verirler. Örneğin, <userinput
>'%'</userinput
>, <userinput
>keywords</userinput
>’ün zayıf bir sınırlandırıcısıysa yalnızca onun <userinput
>additionalDeliminator</userinput
> özniteliğine konularak bir sözcük sınırlandırıcısı olabilir. Ne zaman bir kural bu özniteliklere izin veriyorsa o bir <emphasis
>(local deliminators)</emphasis
> (yerel sınırlandırıcılar) içerir.</para>

<listitem>
<para
><emphasis
>weakDeliminator</emphasis
>: Sözcük sınırlandırıcısı olarak davranmayan karakterlerin listesi.</para>
</listitem>
<listitem>
<para
><emphasis
>additionalDeliminator</emphasis
>: Ek sınırlandırıcılar tanımlar.</para>
</listitem>
</itemizedlist>

<sect3 id="highlighting-rules-in-detail">
<title
>Ayrıntılı Olarak Kurallar</title>

<variablelist>
<varlistentry>
<term
>DetectChar</term>
<listitem>
<para
>Tek bir belirli karakteri algılar. Genellikle kapatma tırnaklarını bulmak için kullanılır.</para>
<programlisting
>&lt;DetectChar char=&quot;(karakter)&quot; (ortak öznitelikler) (devingen) /&gt;</programlisting>
<para
><userinput
>char</userinput
> özniteliği, eşleştirilecek karakteri tanımlar.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Detect2Chars</term>
<listitem>
<para
>Tanımlı bir sırada iki belirli karakteri algılar.</para>
<programlisting
>&lt;2KarakterAlgıla char=&quot;(karakter)&quot; char1=&quot;(karakter)&quot; (ortak öznitelikler) /&gt;</programlisting>
<para
><userinput
>char</userinput
> özniteliği, eşleştirilecek ilk karakteri, <userinput
>char1</userinput
> ise ikincisini tanımlar.</para>
<para
>Bu kural tarihsel nedenlerden dolayı buradadır; okunabilirlik açısından <userinput
>StringDetect</userinput
> kullanılması tercih nedenidir.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>AnyChar</term>
<listitem>
<para
>Belirli bir karakter kümesinden tek bir karakteri algılar.</para>
<programlisting
>&lt;AnyChar String=&quot;(dizi)&quot; (ortak öznitelikler) /&gt;</programlisting>
<para
><userinput
>String</userinput
> özniteliği, karakterlerin kümesini tanımlar.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>StringDetect</term>
<listitem>
<para
>Kesin bir diziyi algılar.</para>
<programlisting
>&lt;StringDetect String=&quot;(dizi)&quot; [insensitive=&quot;true|false&quot;] (ortak öznitelikler) (devingen) /&gt;</programlisting>
<para
><userinput
>String</userinput
> özniteliği, eşleştirilecek diziyi tanımlar. <userinput
>insensitive</userinput
> özniteliği öntanımlı olarak <emphasis
>false</emphasis
>’tur ve dizi karşılaştırma işlevine geçirilir. Değer <emphasis
>true</emphasis
> ise duyarsız karşılaştırma kullanılır.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>WordDetect</term>
<listitem>
<para
>Tam bir diziyi algılar; ancak sözcük başlangıcında ve sonunda <userinput
>'.'</userinput
> veya boşluk gibi sözcük sınırlarına gereksinim duyar. Bir düzenli ifade kapsamında <userinput
>\b&lt;string&gt;\b</userinput
> gibi düşünün; ancak <userinput
>RegExpr</userinput
> kuralından daha hızlıdır.</para>
<programlisting
>&lt;SözcükAlgıla String=&quot;(dizi)&quot; [insensitive=&quot;true|false&quot;] (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting>
<para
><userinput
>String</userinput
> özniteliği, eşleştirilecek diziyi tanımlar. <userinput
>insensitive</userinput
> özniteliği öntanımlı olarak <emphasis
>false</emphasis
>’tur ve dizi karşılaştırma işlevine geçirilir. Değer <emphasis
>true</emphasis
> ise duyarsız karşılaştırma kullanılır.</para>
<para
>&kate; 3.5 (&kde; 4.5) sürümünden bu yana</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>RegExpr</term>
<listitem>
<para
>Bir düzenli ifade ile eşleşir.</para>
<programlisting
>&lt;RegExpr String=&quot;(dizi)&quot; [insensitive=&quot;true|false&quot;] [minimal=&quot;true|false&quot;] (ortak öznitelikler) (devingen) /&gt;</programlisting>
<para
><userinput
>String</userinput
> özniteliği, düzenli ifadeyi tanımlar.</para>
<para
><userinput
>insensitive</userinput
> öntanımlı olarak <emphasis
>false</emphasis
>’tur ve düzenli ifade işletkesine geçirilir.</para>
<para
><userinput
>minimal</userinput
> öntanımlı olarak <emphasis
>false</emphasis
>’tur ve düzenli ifade işletkesine geçirilir.</para>
<para
>Kurallar her zaman geçerli dizinin başlangıcına göre eşleştirildiğinden, şapka (<literal
>^</literal
>) ile başlayan düzenli ifade, kuralın yalnızca satırın başlangıcına göre eşleştirilmesi gerektiğini belirtir.</para>
<para
>Bunlar hakkında daha fazla bilgi için <link linkend="regular-expressions"
>Düzenli İfadeler</link
> bağlantısına bakın.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>keyword</term>
<listitem>
<para
>Belirli bir listeden bir anahtar sözcüğü algılar.</para>
<programlisting
>&lt;anahtar sözcük String=&quot;(liste ado)&quot; (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting>
<para
><userinput
>String</userinput
> özniteliği, adıyla anahtar sözcük listesini tanımlar. Bu ada sahip bir liste var olmalıdır.</para>
<para
>Vurgulama sistemi, anahtar sözcük kurallarını oldukça eniyilenmiş bir biçimde işler. Bu, eşleştirilecek tüm anahtar sözcüklerin, örtük biçimde (öntanımlı sınırlandırıcılar) veya <emphasis
>keywords</emphasis
> etiketinin <emphasis
>additionalDeliminator</emphasis
> özelliğiyle açıkça belirtilmiş bir biçimde tanımlı sınırlandırıcılarla eşleştirilmiş olmasını bir gereklilik kılar.</para>
<para
>Eşleştirilecek bir anahtar sözcükte sınırlandırıcı bir karakter varsa bu ilgili karakter <emphasis
>keywords</emphasis
> etiketinin <emphasis
>weakDeliminator</emphasis
> özelliğine eklenmelidir. Sonrasında bu karakter tüm <emphasis
>keyword</emphasis
> kurallarında sınırlandırıcı kimliğini kaybeder. Aynı zamanda, <emphasis
>keyword</emphasis
>’ün <emphasis
>weakDeliminator</emphasis
> özniteliği de kullanılabilir; böylece bu değişiklik yalnızca bu kural için geçerli olur.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Int</term>
<listitem>
<para
>Bir tamsayıyı algılar (şu düzenli ifade gibi: <userinput
>\b[0-9]+</userinput
>).</para>
<para
><programlisting
>&lt;Int (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>Float</term>
<listitem>
<para
>Bir kayan noktalı sayıyı algılar (şu düzenli ifade gibi: <userinput
>(\b[0-9]+\.[0-9]*|\.[0-9]+)([eE][-+]?[0-9]+)?</userinput
>).</para>
<para
><programlisting
>&lt;Float (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>HlCOct</term>
<listitem>
<para
>Bir sekizlik noktalı sayı temsilini algılar (şu düzenli ifade gibi: <userinput
>\b0[0-7]+</userinput
>).</para>
<para
><programlisting
>&lt;HlCOct (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>HlCHex</term>
<listitem>
<para
>Bir onaltılık sayı temsilini algılar (şu düzenli ifade gibi: <userinput
>\b0[xX][0-9a-fA-F]+</userinput
>).</para>
<para
><programlisting
>&lt;HlCHex (ortak öznitelikler) (yerel sınırlandırıcılar) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>HlCStringChar</term>
<listitem>
<para
>Kaçırılan bir karakteri algılar.</para>
<para
><programlisting
>&lt;HlCStringChar (ortak öznitelikler) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>

<para
>Program kodunda sıkça kullanılan karakterlerin gerçek temsilleriyle eşleşir; örneğin, <userinput
>\n</userinput
> (yenisatır) veya <userinput
>\t</userinput
> (SEKME).</para>

<para
>Eğer bir ters eğik çizgi (<literal
>\</literal
>) sonrasında geliyorlarsa aşağıdaki karakterler eşleşir: <userinput
>abefnrtv&quot;'?\</userinput
>. Ek olarak, kaçırılan onaltılık (örneğin, <userinput
>\xff</userinput
>) ve sekizlik (örneğin, <userinput
>\033</userinput
>) karakterler de eşleşir.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
>HlCChar</term>
<listitem>
<para
>Bir C karakterini algılar.</para>
<para
><programlisting
>&lt;HlCChar (ortak öznitelikler) /&gt;</programlisting
></para>
<para
>Bu kuralın belirli bir özniteliği yoktur.</para>

<para
>Bir kesme işareti çifti içine alınmış C karakterleriyle eşleşir (Örnek: <userinput
>'c'</userinput
>). Kesme işaretleri normal bir karakter veya kaçırılmış bir karakter olabilir. Eşleştirilen kaçırılmış karakter dizileri hakkında daha fazla bilgi için  HlCStringChar bölümüne bakın.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
>RangeDetect</term>
<listitem>
<para
>Tanımlı bir başlangıç ve bitiş karakterleri olan bir diziyi algılar.</para>
<programlisting
>&lt;RangeDetect char=&quot;(karakter)&quot;  char1=&quot;(karakter)&quot; (ortak öznitelikler) /&gt;</programlisting>
<para
><userinput
>char</userinput
>, erimi başlatan karakteri, <userinput
>char1</userinput
> ise bitiren karakteri tanımlar.</para>
<para
>Örneğin küçük alıntılanmış dizileri ve benzerlerini algılamak için kullanışlıdır; ancak vurgulama işletkesi her kerede bir satır üzerinde çalıştığından, bunun bir satır sonu boyunca uzanan dizileri bulmayacağını unutmayın.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>LineContinue</term>
<listitem>
<para
>Satırın sonundaki belirli bir karakterle eşleşir.</para>
<programlisting
>&lt;LineContinue (ortak öznitelik) [char="\"] /&gt;</programlisting>
<para
><userinput
>char</userinput
> isteğe bağlı eşleştirilecek karakterdir, öntanımlısı ise ters eğik çizgidir (<userinput
>'\'</userinput
>). &kde; 4.13 sürümünden bu yana eklidir.</para>
<para
>Bu kural, satırın sonunda bağlamı değiştirmek için kullanışlıdır. Bu, örneğin C/C++’da makroları veya dizileri sürdürmek için gereklidir.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
>IncludeRules</term>
<listitem>
<para
>Başka bir bağlamdan, dilden veya dosyadan kuralları içerir.</para>
<programlisting
>&lt;IncludeRules context=&quot;contextlink&quot; [includeAttrib=&quot;true|false&quot;] /&gt;</programlisting>

<para
><userinput
>context</userinput
> özniteliği, hangi bağlamın içerileceğini tanımlar.</para>
<para
>Basit bir diziyse tanımlı tüm kuralları geçerli bağlama içerir; örneğin: <programlisting
>&lt;IncludeRules context=&quot;anotherContext&quot; /&gt;</programlisting
></para>

<para
>Dizi bir <userinput
>##</userinput
> içeriyorsa vurgu sistemi, verilen adda başka bir dilden bir bağlam arar; örneğin, <programlisting
>&lt;IncludeRules context=&quot;String##C++&quot; /&gt;</programlisting
>, <emphasis
>C++</emphasis
> vurgulama tanımından <emphasis
>String</emphasis
> bağlamını içerir.</para>
<para
><userinput
>includeAttrib</userinput
> özniteliği <emphasis
>true</emphasis
> ise hedef özniteliği kaynağın olanına değiştirin. Bu; örneğin dahil edilen bağlamla eşleşen metnin ana bilgisayar bağlamından farklı bir vurgu olması durumunda yorum yapma işleminin gerçekleştirilmesi için gereklidir. </para>
</listitem>
</varlistentry>


<varlistentry>
<term
>DetectSpaces</term>
<listitem>
<para
>Boşlukları algılar.</para>
<programlisting
>&lt;DetectSpaces (ortak öznitelikler) /&gt;</programlisting>

<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
<para
>İleride birkaç boşluk olabileceğini biliyorsanız; örneğin, girintili çizgilerin başında bu kuralı kullanın. Bu kural, birden fazla kuralı sınamak ve eşleşme olmaması nedeniyle birer birer atlamak yerine, tüm boşlukları tek kerede atlayacaktır.</para>
</listitem>
</varlistentry>


<varlistentry>
<term
>DetectIdentifier</term>
<listitem>
<para
>Tanımlayıcı dizilerini algılar (şu düzenli ifade gibi: <userinput
>[a-zA-Z_][a-zA-Z0-9_]*</userinput
>).</para>
<programlisting
>&lt;DetectIdentifier (ortak öznitelikler) /&gt;</programlisting>

<para
>Bu kuralın belirli bir özniteliği yoktur.</para>
<para
>Birden çok kuralla sınamak ve eşleşme olmaması nedeniyle birer birer atlamak yerine, bir dizi sözcük karakterini aynı anda atlamak için bu kuralı kullanın.</para>
</listitem>
</varlistentry>

</variablelist>
</sect3>

<sect3>
<title
>İpuçları ve Kolaylıklar</title>

<itemizedlist>
<para
>Bağlam değiştirmenin nasıl çalıştığını anladıktan sonra vurgu tanımlarını yazmak kolay olacaktır. Hangi durumda hangi kuralı seçtiğinizi dikkatlice denetlemelisiniz. Düzenli ifadeler çok güçlüdür; ancak diğer kurallara göre yavaştırlar. Bu nedenle aşağıdaki ipuçlarını dikkate alabilirsiniz. </para>

<listitem>
<para
>Düzenli ifadelerin kullanımı kolaydır ancak çoğu zaman aynı sonucu elde etmenin çok daha hızlı başka bir yolu vardır. Satırdaki ilk karakter ise <userinput
>'#'</userinput
> karakterini eşleştirmek istediğinizi varsayalım. Düzenli ifade tabanlı bir çözüm şöyle görünecektir: <programlisting
>&lt;RegExpr attribute=&quot;Macro&quot; context=&quot;macro&quot; String=&quot;^\s*#&quot; /&gt;</programlisting
> Aynısını çok daha hızlıca şunu kullanarak elde edebilirsiniz: <programlisting
>&lt;DetectChar attribute=&quot;Macro&quot; context=&quot;macro&quot; char=&quot;#&quot; firstNonSpace=&quot;true&quot; /&gt;</programlisting
>. <userinput
>'^#'</userinput
> düzenli ifadesini eşleştirmek istiyorsanız hâlâ <userinput
>column=&quot;0&quot;</userinput
> özniteliğiyle <userinput
>DetectChar</userinput
> kullanabilirsiniz. <userinput
>column</userinput
> özniteliği karakterleri sayar, bu nedenle, sekme karakteri yalnızca bir karakter olarak geçer. </para>
</listitem>
<listitem>
<para
><userinput
>RegExpr</userinput
> kurallarında, <userinput
>^PATTERN</userinput
> dizgisi satırın başındaki metni eşleştirmek için kullanılacaksa <userinput
>column="0"</userinput
> özniteliğini kullanın. Geri kalan sütunlarda arama yapmayacağından bu, başarımı önemli ölçüde iyileştirir.</para>
</listitem>
<listitem>
<para
>Düzenli ifadelerde, yakalamalar aynı düzenli ifadeler içinde veya devingen kurallarda kullanılmayacaklarsa <userinput
>(PATTERN)</userinput
> yakalayan grupları yerine yakalamayan <userinput
>(?:PATTERN)</userinput
> gruplarını kullanın. Bu, gereksiz yere yakalamaları depolamayı önler.</para>
</listitem>
<listitem>
<para
>Karakterleri işlemeden bağlamlar arasında geçiş yapabilirsiniz. <userinput
>*/</userinput
> dizisiyle karşılaştığınızda bağlamı değiştirmek istediğinizi; ancak bu diziyi bir sonraki bağlamda işlemeniz gerektiğini varsayalım. Aşağıdaki kural eşleşecektir ve <userinput
>lookAhead</userinput
> özelliği, vurgulayıcının eşleşen diziyi bir sonraki bağlam için tutmasını sağlar. <programlisting
>&lt;StringDetect attribute=&quot;Comment&quot; context=&quot;#pop&quot; String=&quot;*/&quot; lookAhead=&quot;true&quot; /&gt;</programlisting>
</para>
</listitem>
<listitem>
<para
>Çok sayıda boşluk oluşacağını biliyorsanız <userinput
>DetectSpaces</userinput
> kullanın.</para>
</listitem>
<listitem>
<para
><userinput
>'[a-zA-Z_]\w*'</userinput
> düzenli ifadesi yerine <userinput
>DetectIdentifier</userinput
> kullanın.</para>
</listitem>
<listitem>
<para
>Olabildiğince öntanımlı biçemleri kullanın. Böylece, kullanıcı tanıdık bir ortam bulacaktır.</para>
</listitem>
<listitem>
<para
>Başkalarının karmaşık kuralları nasıl uyguladıklarını görmek için diğer &XML; dosyalarına bakın.</para>
</listitem>
<listitem>
<para
><command
>validatehl.sh mySyntax.xml</command
> komutunu kullanarak tüm &XML; dosyalarını doğrulayabilirsiniz. <filename
>validatehl.sh</filename
> dosyası, her ikisi de <ulink url="https://commits.kde.org/syntax-highlighting?path=data/schema"
>Sözdizim Vurgulaması</ulink
> deposunda bulunabilen <filename
>language.xsd</filename
> dosyalarını kullanır. </para>
</listitem>
<listitem>
<para
>Karmaşık düzenli ifadeleri pek sık yineliyorsanız <emphasis
>ENTITIES</emphasis
> kullanabilirsiniz. Örnek:</para>
<programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE language
[
        &lt;!ENTITY myref    "[A-Za-z_:][\w.:_-]*"&gt;
]&gt;
</programlisting>
<para
>Şimdi, düzenli ifade yerine <emphasis
>&amp;myref;</emphasis
> kullanabilirsiniz.</para>
</listitem>
<listitem>
<para
>Kate’de, yerleşik komut satırını (öntanımlı kısayolu <userinput
>F7</userinput
>) ve <command
>reload-highlighting</command
> komutunu kullanarak sözdizimleri yenileyebilirsiniz.</para>
</listitem>
<listitem>
<para
>Bir sözdizimi sınamak ve biçemi ve metnin her bir kısmıyla ilgili bölgeleri görüntülemek için <userinput
>ksyntaxhighlighter6</userinput
> (eski sürümlerde <userinput
>kate-syntax-highlighter</userinput
>) adlı komut satırı izlencesini kullanabilirsiniz.</para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="ksyntaxhighlighter6-trace-format.png"/></imageobject>
<textobject
><phrase
><command
>ksyntaxhighlighter6 --output-format=ansi --syntax-trace=format test.cpp</command
> sonucu.</phrase
></textobject>
<caption
><para
><command
>ksyntaxhighlighter6 --output-format=ansi --syntax-trace=format test.cpp</command
> sonucu.</para>
</caption>
</mediaobject>

<para
>Daha çok seçenek için <command
>ksyntaxhighlighter6 -h</command
> kullanın.</para>
</listitem>
</itemizedlist>
</sect3>

</sect2>

</sect1>


<sect1 id="color-themes">
<title
>Renk Temalarıyla Çalışmak</title>

<sect2 id="color-themes-overview">

<title
>Genel Bakış</title>

<para
>Renk temaları, <link linkend="kate-part"
>metin düzenleme alanının</link
> ve <link linkend="highlight"
>sözdizim vurgulamanın</link
> renklerini tanımlar. Bir renk teması, aşağıdakileri içerir: <itemizedlist>
<listitem
><para
><emphasis
>Öntanımlı biçemler öznitelikleri</emphasis
> ile sözdizim vurgulamada kullanılan metin biçemi. Örneğin, metin rengi ve seçili metin rengi.</para
></listitem>
<listitem
><para
>Metin düzenleme alanının arka planı; metin seçimi ve geçerli satır içerilmek üzere.</para
></listitem>
<listitem
><para
>Metin alanının simge kenarlıkları: Arka planları, ayırıcı çizgisi, satır numaraları, satır sözcük kaydırma imleyicileri, değiştirilen satır imleri ve kod katlama.</para
></listitem>
<listitem
><para
>Arama imleyicileri, girintileme ve sekme/boşluk çizgisi imleri, ayraç eşleştirme ve yazım denetimi gibi metin dekorasyonları.</para
></listitem>
<listitem
><para
>Yer imleri ve parçacıklar.</para
></listitem>
</itemizedlist>
</para>

<para
>Kafa karışıklığını önlemek adına, aşağıdakiler kapsam dışında bırakılmıştır: <itemizedlist>
<listitem
><para
>Yazıtipi türü ve yazıtipi puntosu.</para
></listitem>
<listitem
><para
>Metin düzenleme uygulamasının renkleri; örneğin, sarma çubuğu haritası, menüler, sekme çubuğu, pencere rengi vb. &kate; veya &kdevelop; gibi &kde; uygulamalarında, bu renkler <userinput
>&kde; &plasma; global renk şemalarında</userinput
> tanımlıdır. Bu alana, &systemsettings; içindeki <ulink url="help:/kcontrol/colors/"
><quote
>Renkler</quote
> modülünde</ulink
> veya uygulamanın kendisinde <menuchoice
><guimenu
>Ayarlar</guimenu
><guisubmenu
>Renk Şeması</guisubmenu
></menuchoice
> ögesinden ulaşılabilir. </para
></listitem>
</itemizedlist>
</para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="breeze-color-theme-preview.png"/></imageobject>
<textobject
><phrase
><quote
>C++</quote
> sözdizim vurgulamasında <quote
>Esinti Açık</quote
> ve <quote
>Esinti Koyu</quote
> renk temaları.</phrase>
</textobject>
<caption
><para
><quote
>C++</quote
> sözdizim vurgulamasında <quote
>Esinti Açık</quote
> ve <quote
>Esinti Koyu</quote
> renk temaları.</para>
</caption>
</mediaobject>

</sect2>

<sect2 id="color-themes-ksyntaxhighlighting">

<title
>KSyntaxHighlighting Renk Temaları</title>

<para
><ulink url="https://api.kde.org/frameworks/syntax-highlighting/html/"
>KSyntaxHighlighting</ulink
> <link linkend="highlight"
>sözdizim vurgulaması</link
> işletkesi, <userinput
>renk temalarını sağlayan ve yöneten</userinput
> çatıdır. Bu, &kde; &frameworks;’ün bir parçasıdır ve <ulink url="https://apps.kde.org/en/kate"
>&kate;</ulink
>, <ulink url="https://apps.kde.org/en/kwrite"
>&kwrite;</ulink
>, <ulink url="https://apps.kde.org/en/kile"
>&kile;</ulink
> ve <ulink url="https://apps.kde.org/en/kdevelop"
>&kdevelop;</ulink
> gibi &kde; metin düzenleyicilerinde kullanılır. Bağımlılıkları aşağıdaki gibidir:</para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="kf5-ksyntaxhighlighting.png"/></imageobject>
<textobject
><phrase
>Metin düzenleyicilerinde &kde; &frameworks; 5 kitaplıkları.</phrase
></textobject>
<caption
><para
>Metin düzenleyicilerinde &kde; &frameworks; 5 kitaplıkları.</para>
</caption>
</mediaobject>

<para
>KSyntaxHighlighting içinde, <ulink url="https://kate-editor.org/themes/"
>Kate düzenleyicisinin web sayfasının <quote
>Renk Temaları</quote
></ulink
> bölümünde görüntülenen çeşitli yerleşik temalar vardır.</para>

<para
><ulink url="https://api.kde.org/frameworks/ktexteditor/html/"
>KTextEditor</ulink
> metin düzenleme işletkesi çatısı, renk temaları oluşturmak ve düzenlemek için içe/dışa aktarma araçları da içerilmek üzere bir kullanıcı arayüzü sağlar. Bu, renk temaları oluşturmanın ve düzenlemenin en basit yoludur; buna metin düzenleyicisinin <link linkend="config-dialog"
><quote
>Yapılandırma</quote
> iletişim kutusundan</link
> erişebilirsiniz. Daha fazla ayrıntı için <xref linkend="color-themes-gui"/> bölümüne bakın.</para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="color-themes-gui-breeze-dark-default-text-styles.png"/></imageobject>
<textobject
><phrase
>&kate; ayarlarında renk temalarını yönetmek için kullanılan arayüz.</phrase
></textobject>
<caption
><para
>&kate; ayarlarında renk temalarını yönetmek için kullanılan arayüz.</para>
</caption>
</mediaobject>

<para
>&kate; veya &kdevelop; gibi &kde; metin düzenleyicilerinde kullanılan KSyntaxHighlighting renk temaları, 10 Ekim 2020 tarihinde yayımlanan <ulink url="https://kate-editor.org/post/2020/2020-09-13-kate-color-themes-5.75/"
>&kde; &frameworks; 5.75</ulink
> sürümüyle kullanılmaya başlanmıştır. Öncesinde, &kate;’in kendi renk şemaları (KConfig tabanlı şema yapılandırması) kullanılıyordu; artık bunlar kullanılmıyor. Yine de, eski &kate; şemalarını KSyntaxHighlighting renk şemalarına dönüştürmek olanaklıdır. <ulink url="https://invent.kde.org/frameworks/syntax-highlighting"
>KSyntaxHighlighting deposunda</ulink
>, bu iş için kullanılan <userinput
>utils/kateschema_to_theme_converter.py</userinput
> betiği ve <userinput
>utils/schema-converter/</userinput
> izlencesi bulunur. </para>

</sect2>

<sect2 id="color-themes-json">

<title
>Renk Temaları &JSON; Biçimi</title>

<sect3 id="color-themes-json-overview">

<title
>Genel Bakış</title>

<para
>Renk temaları, &JSON; biçimli dosyalarda <userinput
>.theme</userinput
> uzantısıyla depolanır.</para>

<para
><ulink url="https://invent.kde.org/frameworks/syntax-highlighting"
> KSyntaxHighlighting kaynak kodunda</ulink
>, yerleşik temaların &JSON; dosyaları <userinput
>data/themes/</userinput
> dizininde bulunur. Metin düzenleyicilerinde yerleşik temaların KSyntaxHighlighting kitaplığıyla derlendiğine dikkat edin; dolayısıyla, onlara erişmek ya kaynak kodundan ya da <link linkend="color-themes-gui-import-export"
>KTextEditor temalarını yönetmek üzere grafik arayüzden dışa aktarılarak</link
> olanaklıdır.</para>

<para
>Dosya sisteminden, ek veya özel temaları kolaylıkla eklemek olanaklıdır. Kullanıcılar tarafından özelleştirilen tema dosyaları, kullanıcı klasörünüzdeki <filename class="directory"
>org.kde.syntax-highlighting/themes/</filename
> dizininde bulunur; bu dizini <userinput
><command
>qtpaths</command
><option
> --paths GenericDataLocation</option
></userinput
> komutuyla bulabilirsiniz ve genellikle <filename class="directory"
><envar
>$HOME</envar
>/.local/share/</filename
> ve <filename class="directory"
>/usr/share/</filename
> dizinleridir. </para>

<para
>Flatpak ve Snap paketlerinde, yukarıdaki dizin işe yaramaz; çünkü her uygulamanın veri konumu farklıdır. Bir Flatpak uygulamasında, özel dosyaların konumu genellikle <filename class="directory"
><envar
>$HOME</envar
>/.var/app/<replaceable
>flatpak-paketi-adı</replaceable
>/data/org.kde.syntax-highlighting/themes/</filename
> ve bir Snap uygulamasında ise <filename class="directory"
><envar
>$HOME</envar
>/snap/<replaceable
>snap-paketi-adı</replaceable
>/current/.local/share/org.kde.syntax-highlighting/themes/</filename
> olarak kullanılır. </para>

<para
>&Windows;’ta bu dosyalar genelde <filename
>C:&#92;Users&#92;<replaceable
>user-name</replaceable
></filename
> <filename
>%USERPROFILE%&#92;AppData&#92;Local&#92;org.kde.syntax-highlighting&#92;themes</filename
> olarak genişleyen <replaceable
>%USERPROFILE%</replaceable
> konumundadır.</para>

<para
>Özet olarak, çoğu yapılandırmada özel tema dizinleri aşağıdaki gibidir:</para>

<informaltable>
<tgroup cols="2">
<tbody>
<row>
<entry
>Yerel kullanıcı için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/.local/share/org.kde.syntax-highlighting/themes/</filename
></entry>
</row>
<row>
<entry
>Tüm kullanıcılar için</entry>
<entry
><filename class="directory"
>/usr/share/org.kde.syntax-highlighting/themes/</filename
></entry>
</row>
<row>
<entry
>Flatpak paketleri için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/.var/app/<replaceable
>flatpak-paketi-adı</replaceable
>/data/org.kde.syntax-highlighting/themes/</filename
></entry>
</row>
<row>
<entry
>Snap paketleri için</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/snap/<replaceable
>snap-paketi-adı</replaceable
>/current/.local/share/org.kde.syntax-highlighting/themes/</filename
></entry>
</row>
<row>
<entry
>&Windows; üzerinde</entry>
<entry
><filename class="directory"
>%USERPROFILE%&#92;AppData&#92;Local&#92;org.kde.syntax-highlighting&#92;themes</filename
></entry>
</row>
<row>
<entry
>&macOS; üzerinde</entry>
<entry
><filename class="directory"
><envar
>$HOME</envar
>/Library/Application Support/org.kde.syntax-highlighting/themes/</filename
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<para
>Aynı adlı birden çok tema dosyası varsa en yüksek <userinput
>revision</userinput
>’a (revizyona) sahip dosya yüklenir. </para>

</sect3>

<sect3 id="color-themes-json-basic">

<title
>&JSON; Yapısı</title>

<para
>Bir &JSON; dosyasının yapısı <ulink url="https://www.json.org"
>web sitelerinde</ulink
> açıklanmıştır. Temel olarak, bir &JSON; biçimi şunlardan oluşur: <itemizedlist>
<listitem
><para
>Adına <quote
>nesneler</quote
> dediğimiz ve <userinput
>{ }</userinput
> ile gruplanan anahtar/değer çiftleri koleksiyonları.</para
></listitem>
<listitem
><para
>Adına <quote
>diziliş</quote
> dediğimiz ve <userinput
>[ ]</userinput
> ile gruplanan sıralı değerler listeleri.</para
></listitem
></itemizedlist>
</para>

<para
>Bu yazıda, <quote
>anahtar</quote
>, <quote
>değer</quote
>, <quote
>nesne</quote
> ve <quote
>diziliş</quote
> ögeleri kullanılacaktır. &JSON; dosyalarıyla ilk tanışmanız ise onları anlamanın en kolay yolu aşağıdaki örneklere bakmaktır. </para>

</sect3>

<sect3 id="color-themes-json-root">

<title
>&JSON; Renk Teması Dosyalarının Ana Bölümleri</title>

<para
>&JSON; renk teması dosyalarının kök nesnesi aşağıdaki şema anahtarlarını içerir:</para>

<itemizedlist>
<listitem
><para
><userinput
>metadata</userinput
>: Zorunlu. Değer, temanın üst verisi olan bir nesnedir; örneğin, adı, revizyonu ve lisansı.</para>
<para
>Ayrıntılı bilgi için <xref linkend="color-themes-json-metadata"/> bölümüne bakın.</para>
</listitem>

<listitem
><para
><userinput
>editor-colors</userinput
>: Zorunlu. It is mandatory. Değer; arka plan, simge kenarlığı ve metin dekorasyonu gibi metin düzenleme alanının renklerine sahip bir nesnedir.</para>
<para
>Ayrıntılı bilgi için <xref linkend="color-themes-editor-colors"/> bölümüne bakın.</para>
</listitem>

<listitem
><para
><userinput
>text-styles</userinput
>: Zorunlu. Değer, sözdizim vurgulamanın <emphasis
>öntanımlı metin biçemi</emphasis
> öznitelikleriyle bir nesnedir. Her bir öznitelik; örneğin, kendi <emphasis
>metin rengini</emphasis
>, <emphasis
>seçili metin rengini</emphasis
> veya onun <emphasis
>kalın</emphasis
> veya <emphasis
>yatık</emphasis
> olup olmadığını tanımlar. Metin biçemlerine <link linkend="kate-highlight-default-styles"
>&XML; sözdizim vurgulama dosyalarından</link
> başvurulabilir.</para>
<para
>Ayrıntılı bilgi için <xref linkend="color-themes-text-styles"/> bölümüne bakın.</para>
</listitem>

<listitem
><para
><userinput
>custom-styles</userinput
>: İsteğe bağlı. Belirli sözdizim vurgulama tanımlarının öznitelekleri için metin biçemlerini tanımları. Örneğin, <userinput
>Python</userinput
> veya <userinput
>Markdown</userinput
> vurgulama tanımlarında, <userinput
>text-styles</userinput
> içinde tanımlı metin biçemini geçersiz kılacak bir metin biçemi tanımlayabilirsiniz.</para>
<para
>Ayrıntılı bilgi için <xref linkend="color-themes-custom-styles"/> bölümüne bakın.</para>
</listitem>
</itemizedlist>

<para
>&JSON; dili yorumları desteklemez. Ancak, yorumlar yazmak için kök nesnede isteğe bağlı <userinput
>_comments</userinput
> anahtarını kullanabilirsiniz. Bu örneğin, önceden var olan bir temayı uyarlıyorsanız özgün deponun URL’sini buraya koyabilirsiniz. En pratik yolu, diziler içeren dizilişler kullanmaktır. </para>

<para
>Aşağıda <quote
>Esinti Açık</quote
> teması için bir örnek dosyayı görebilirsiniz. Örneğin pek büyük olmasını engellemek için <userinput
>editor-colors</userinput
> ve <userinput
>text-styles</userinput
> nesnelerinin tüm gerekli anahtarları içermediğine dikkat edin. <ulink url="https://invent.kde.org/frameworks/syntax-highlighting/-/blob/master/data/themes/breeze-light.theme"
><quote
>Esinti Açık</quote
> temasının tam arşivini KSyntaxHighlighting deposunda</ulink
> bulabilirsiniz. </para>

<programlisting
>{
    "_comments": [
        "Bu bir yorumdur.",
        "Bu tema bir başkasından uyarlanmışsa özgün deponun bağlantısını buraya koyun."
    ],
    "metadata": {
        "name" : "Esinti Açık",
        "revision" : 5,
        "copyright": [
            "SPDX-FileCopyrightText: 2016 Volker Krause &lt;vkrause@kde.org&gt;",
            "SPDX-FileCopyrightText: 2016 Dominik Haumann &lt;dhaumann@kde.org&gt;"
        ],
        "license": "SPDX-License-Identifier: MIT"
    },
    "editor-colors": {
        "BackgroundColor" : "#ffffff",
        "CodeFolding" : "#94caef",
        "BracketMatching" : "#ffff00",
        "CurrentLine" : "#f8f7f6",
        "IconBorder" : "#f0f0f0",
        "IndentationLine" : "#d2d2d2",
        "LineNumbers" : "#a0a0a0",
        "CurrentLineNumber" : "#1e1e1e",
        <replaceable
>Diğer düzenleyici renk anahtarları…</replaceable>

    },
    "text-styles": {
        "Normal" : {
            "text-color" : "#1f1c1b",
            "selected-text-color" : "#ffffff",
            "bold" : false,
            "italic" : false,
            "underline" : false,
            "strike-through" : false
        },
        "Keyword" : {
            "text-color" : "#1f1c1b",
            "selected-text-color" : "#ffffff",
            "bold" : true
        },
        "Function" : {
            "text-color" : "#644a9b",
            "selected-text-color" : "#452886"
        },
        "Variable" : {
            "text-color" : "#0057ae",
            "selected-text-color" : "#00316e"
        },
        <replaceable
>Diğer metin biçemi anahtarları…</replaceable>

    },
    "custom-styles": {
        "ISO C++": {
            "Data Type": {
                "bold": true,
                "selected-text-color": "#009183",
                "text-color": "#00b5cf"
            },
            "Keyword": {
                "text-color": "#6431b3"
            }
        },
        "YAML": {
            "Attribute": {
                "selected-text-color": "#00b5cf",
                "text-color": "#00b5cf"
            }
        }
    }
}
</programlisting>

</sect3>

<sect3 id="color-themes-json-metadata">

<title
>Üst Veri</title>

<para
><userinput
>metadata</userinput
> anahtarının &JSON; nesnesi, tema üzerine aşağıdaki ilgili bilgiyi içerir. Bu nesnedeki anahtarlar aşağıdaki gibidir: <itemizedlist>
<listitem
><para
><userinput
>name</userinput
>: Dilin adını ayarlayan bir <emphasis
>dizidir</emphasis
>. Daha sonra menülerde ve iletişim kutularında görünür. Bu, zorunludur.</para
></listitem>

<listitem
><para
><userinput
>revizyon</userinput
>: Tema dosyasının geçerli revizyonunu belirten bir <emphasis
>tamsayı</emphasis
>’dır. Bir renk teması dosyasını güncellediğinizde bu sayıyı artırdığınızdan emin olun. Bu zorunludur.</para
></listitem>

<listitem
><para
><userinput
>license</userinput
>: Temanın lisansını, standart <ulink url="https://spdx.dev/"
>SPDX lisans iletişim biçiminden alınan</ulink
> <userinput
>SPDX-License-Identifier</userinput
> tanımlayıcısını kullanarak belirten bir <emphasis
>dizidir</emphasis
>. İsteğe bağlıdır.</para>
<para
>SPDX lisans tanımlayıcılarının tam listesini <ulink url="https://spdx.org/licenses/"
>buradan</ulink
> görebilirsiniz.</para
></listitem>

<listitem
><para
><userinput
>copyright</userinput
>: Temanın telif hakkını, standart <ulink url="https://spdx.dev/"
>SPDX lisans iletişim biçiminden alınan</ulink
> <userinput
>SPDX-License-Identifier</userinput
> tanımlayıcısını kullanarak belirten bir <emphasis
>diziler</emphasis
> <emphasis
>dizilişidir</emphasis
>. İsteğe bağlıdır.</para
></listitem>
</itemizedlist>
</para>

<programlisting
>"metadata": {
    "name" : "Esinti Açık",
    "revision" : 5,
    "copyright": [
        "SPDX-FileCopyrightText: 2016 Volker Krause &lt;vkrause@kde.org&gt;",
        "SPDX-FileCopyrightText: 2016 Dominik Haumann &lt;dhaumann@kde.org&gt;"
    ],
    "license": "SPDX-License-Identifier: MIT"
}
</programlisting>

</sect3>

</sect2>

<sect2 id="color-themes-editing">

<title
>Ayrıntılarla Renkler</title>

<para
>Bu bölüm, tüm kullanılabilir renk özniteliklerini ve ayarlarını ayrıntılandırır.</para>

<sect3 id="color-themes-editor-colors">

<title
>Düzenleyici Renkleri</title>

<para
><link linkend="kate-part"
>Metin düzenleme alanı</link
> renklerine karşılık gelir.</para>

<para
><link linkend="color-themes-json"
>&JSON; tema dosyasında</link
>, ilgili <userinput
>editor-colors</userinput
> anahtarının, her bir anahtarın metin düzenleyicisinin renk özniteliğine başvurduğu bir <emphasis
>object</emphasis
> değeri vardır. Burada, <userinput
>tüm anahtarlar zorunludur</userinput
>, değerleri ise <quote
>#00B5CF</quote
> gibi onaltılık renk değerlerine sahip <userinput
>dizilerdir</userinput
>. </para>

<para
><link linkend="color-themes-gui"
>KTextEditor tema yönetim arayüzünde</link
>, bu öznitelikler <userinput
><guilabel
>Renkler</guilabel
></userinput
> sekmesinde yapılandırılabilir. </para>

<para
>Kullanılabilir anahtarlar aşağıdaki gibidir; <link linkend="color-themes-json"
>&JSON; dosyasında</link
> kullanılan anahtarlar <emphasis
>kalın</emphasis
> ile, <link linkend="color-themes-gui"
>grafik arayüzde</link
> kullanılan adlar parantez içinde gösterilirler. </para>

<variablelist>

<varlistentry id="variable-prefcolors-colors-text-background">
<term
><guilabel
>Düzenleyici Arka Plan Renkleri</guilabel
></term>
<listitem>

<variablelist>

<varlistentry id="variable-pref-colors-normal-text">
<term
><userinput
>BackgroundColor</userinput
> (<guilabel
>Metin Alanı</guilabel
>)</term>
<listitem
><para
>Bu, düzenleyici alanı için varsayılan arka plandır, düzenleyici alanındaki baskın renk olacaktır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-BackgroundColor.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry id="variable-pref-colors-selected-text">
<term
><userinput
>TextSelection</userinput
> (<guilabel
>Seçili Metin</guilabel
>)</term>
<listitem
><para
>Bu, seçili metnin arka planıdır. </para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-TextSelection.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry id="variable-pref-colors-current-line">
<term
><userinput
>CurrentLine</userinput
> (<guilabel
>Geçerli Satır</guilabel
>)</term>
<listitem
><para
>Geçerli satırın rengini ayarlayın. Bunu normal metin arka planından biraz farklı bir şekilde ayarlamak, odağın geçerli satırda kalmasına yardımcı olur. </para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-CurrentLine.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry id="variable-pref-colors-search-highlight">
<term
><userinput
>SearchHighlight</userinput
> (<guilabel
>Arama Vurgusu</guilabel
>)</term>
<listitem
><para
>Son aramanızla eşleşen metnin rengini ayarlayın. </para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-SearchHighlight.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry id="variable-pref-colors-replace-highlight">
<term
><userinput
>ReplaceHighlight</userinput
> (<guilabel
>Değiştirme Vurgusu</guilabel
>)</term>
<listitem
><para
>Son değiştirme işleminizle eşleşen metnin rengini ayarlayın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-ReplaceHighlight.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

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

<varlistentry id="variable-prefcolors-colors-icon-border">
<term
><guilabel
>Simge Kenarlığı</guilabel
></term>
<listitem>
<variablelist>

<varlistentry>
<term
><userinput
>IconBorder</userinput
> (<guilabel
>Arka Plan Alanı</guilabel
>)</term>
<listitem
><para
>Bu renk, görüntülendiğinde düzenleyici görünümünün sol tarafındaki imleyiciler, satır numaraları ve katlama imleyicisi kenarlıkları için kullanılır. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>LineNumbers</userinput
> (<guilabel
>Satır Numaraları</guilabel
>)</term>
<listitem
><para
>Bu renk, görüntülendiğinde görünümün sol tarafındaki satır numaralarını çizmek için kullanılır.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>CurrentLineNumber</userinput
> (<guilabel
>Geçerli Satır Numarası</guilabel
>)</term>
<listitem
><para
>Bu renk, görüntülendiğinde görünümün sol tarafına geçerli satırın satır numarasını çizmek için kullanılır. Bunu <quote
>LineNumbers</quote
>’tan biraz farklı bir şekilde ayarlamak, geçerli satıra odaklanmaya yardımcı olur. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>Separator</userinput
> (<guilabel
>Ayırıcı</guilabel
>)</term>
<listitem
><para
>Bu renk, simge kenarlığını metin alanının arka planından ayıran dikey çizgiyi çizmek için kullanılır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-IconBorder.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>WordWrapMarker</userinput
> (<guilabel
>Sözcük Kaydırma İmleyicisi</guilabel
>)</term>
<listitem
><para
>Bu renk, dikey olarak hizalandığında devingen olarak kaydırılan çizgilerin soluna bir desen çizmek ve durgun sözcük kaydırma imleyicisi için kullanılır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-WordWrapMarker.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>CodeFolding</userinput
> (<guilabel
>Kod Katlama</guilabel
>)</term>
<listitem
><para
>Bu renk, bir belgenin solundaki kod katlama okuna tıkladığınızda katlanacak kod bölümünü vurgulamak için kullanılır. Daha fazla bilgi için <link linkend="advanced-editing-tools-code-folding"
>kod katlama belgelendirmesine</link
> bakın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-CodeFolding.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>ModifiedLines</userinput
> (<guilabel
>Değiştirilen Satırlar</guilabel
>)</term>
<listitem
><para
>Bu renk, değiştirilmiş ancak henüz kaydedilmemiş bir belgenin sol tarafındaki satırları vurgulamak için kullanılır. Daha fazla bilgi için <xref linkend="kate-part-line-modification"/> bölümüne bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>SavedLines</userinput
> (<guilabel
>Kaydedilen Satırlar</guilabel
>)</term>
<listitem
><para
>Bu renk, bu oturumda değiştirilen ve kaydedilen belgenin sol tarafındaki satırları vurgulamak için kullanılır. Daha fazla bilgi için <xref linkend="kate-part-line-modification"/> bölümüne bakın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-ModifiedLines.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

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

<varlistentry id="variable-prefcolors-colors-text-decorations">
<term
><guilabel
>Metin Dekorasyonları</guilabel
></term>
<listitem>
<variablelist>

<varlistentry>
<term
><userinput
>SpellChecking</userinput
> (<guilabel
>Yazım Yanlışı Satırı</guilabel
>)</term>
<listitem
><para
>Bu renk, yazım yanlışlarını belirtmek için kullanılır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-SpellChecking.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>TabMarker</userinput
> (<guilabel
>Sekme ve Boşluk İmleyicileri</guilabel
>)</term>
<listitem
><para
>Bu renk, etkinleştirildiğinde beyaz alan göstergelerini çizmek için kullanılır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-TabMarker.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>IndentationLine</userinput
> (<guilabel
>Girintileme Satırı</guilabel
>)</term>
<listitem
><para
>Bu renk, <link linkend="appearance-general"
>bu özellik etkinse</link
> girintili blokların soluna bir çizgi çizmek için kullanılır.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-IndentationLine.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>BracketMatching</userinput
> (<guilabel
>Ayraç Vurgusu</guilabel
>)</term>
<listitem
><para
>Bu renk, eşleşen ayraçların arka planını çizmek için kullanılır. </para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-BracketMatching.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

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

<varlistentry id="variable-prefcolors-colors-marker-colors">
<term
><guilabel
>İmleyici Renkleri</guilabel
></term>
<listitem>
<variablelist>

<varlistentry>
<term
><userinput
>MarkBookmark</userinput
> (<guilabel
>Yer İmi</guilabel
>)</term>
<listitem
><para
>Bu renk, yer imlerini belirtmek için kullanılır. Bu rengin arka plana göre %​22 (ve geçerli çizgi için %​33) matlığa sahip olduğunu unutmayın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-MarkBookmark.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkBreakpointActive</userinput
> (<guilabel
>Etkin Kesme Noktası</guilabel
>)</term>
<listitem
><para
>Bu renk, GDB eklentisi tarafından etkin bir kesme noktasını belirtmek için kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-gdb.html"
>GDB eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkBreakpointReached</userinput
> (<guilabel
>Ulaşılan Kesme Noktası</guilabel
>)</term>
<listitem
><para
>Bu renk GDB eklentisi tarafından hata ayıklama sırasında ulaştığınız bir kesme noktasını belirtmek için kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-gdb.html"
>GDB eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkBreakpointDisabled</userinput
> (<guilabel
>Devre Dışı Kesme Noktası</guilabel
>)</term>
<listitem
><para
>Bu renk, GDB eklentisi tarafından etkin olmayan bir kesme noktasını belirtmek için kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-gdb.html"
>GDB eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkExecution</userinput
> (<guilabel
>Yürütme</guilabel
>)</term>
<listitem
><para
>Bu renk, şu anda yürütülen satırdaki GDB eklentisi tarafından kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-gdb.html"
>GDB eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkWarning</userinput
> (<guilabel
>Uyarı</guilabel
>)</term>
<listitem
><para
>Bu renk, yapı eklentisi tarafından derleyici uyarısına neden olan bir satırı belirtmek için kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-build.html"
>yapı eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>MarkError</userinput
> (<guilabel
>Hata</guilabel
>)</term>
<listitem
><para
>Bu renk, yapı eklentisi tarafından derleyici hatasına neden olan bir satırı belirtmek için kullanılır. Bu rengin arka planının mat olduğuna dikkat edin. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-build.html"
>yapı eklentisi belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

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

<varlistentry id="variable-prefcolors-colors-text-templates-snippets">
<term
><guilabel
>Metin Şablonları ve Parçacıkları</guilabel
></term>
<listitem>
<variablelist>

<varlistentry>
<term
><userinput
>TemplateBackground</userinput
> (<guilabel
>Arka Plan</guilabel
>)</term>
<listitem
><para
>Bu renk &kate; parçacıkları eklentisi tarafından bir parçacığın arka planını imlemek için kullanılır. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-snippets.html"
>&kate; parçacıkları belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>TemplatePlaceholder</userinput
> (<guilabel
>Düzenlenebilir Yer Tutucu</guilabel
>)</term>
<listitem
><para
>Bu renk, &kate; parçacıklar eklentisi tarafından elle düzenlemek üzere tıklayabileceğiniz bir yer tutucuyu imlemek için kullanılır. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-snippets.html"
>&kate; parçacıkları belgelendirmesine</ulink
> bakın.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>TemplateFocusedPlaceholder</userinput
> (<guilabel
>Odaklı Düzenlenebilir Yer Tutucu</guilabel
>)</term>
<listitem
><para
>Bu renk, &kate; parçacıklar eklentisi tarafından şu anda düzenlediğiniz yer tutucuyu imlemek için kullanılır. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-snippets.html"
>&kate; parçacıkları belgelendirmesine</ulink
> bakın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-Template.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

<varlistentry>
<term
><userinput
>TemplateReadOnlyPlaceholder</userinput
> (<guilabel
>Düzenlenemez Yer Tutucu</guilabel
>)</term>
<listitem
><para
>Bu renk, &kate; parçacıklar eklentisi tarafından düzenlenemez olan bir yer tutucuyu; örneğin, kendiliğinden doldurulan tutucular gibi, imlemek için kullanılır. Daha fazla bilgi için <ulink url="help:/kate/kate-application-plugin-snippets.html"
>&kate; parçacıkları belgelendirmesine</ulink
> bakın.</para>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="editor-colors-TemplateReadOnlyPlaceholder.png"/></imageobject>
<caption
><para
></para
></caption>
</mediaobject>
</listitem>
</varlistentry>

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

</variablelist>

</sect3>

<sect3 id="color-themes-text-styles">

<title
>Öntanımlı Metin Biçemleri</title>

<para
>Öntanımlı metin biçemleri, vurgulanan metin biçemleri tarafından devralınır ve bu, düzenleyicinin metni çok tutarlı bir biçimde sunmasına olanak tanır; örneğin, yorum metni, KSyntaxHighlighting’in vurgulayabildiği hemen hemen tüm metin biçimlerinde aynı biçemi kullanır. </para>

<note>
<para
>Bu metin biçemlerine, <link linkend="highlight"
>sözdizim vurgulama</link
> &XML; tanım dosyalarında kullanılan <userinput
>öntanımlı biçemlerden</userinput
> başvurulabilir; örneğin, <quote
>Normal</quote
> özniteliği, &XML;  dosyalarındaki <quote
>dsNormal</quote
> özniteliğine ve <quote
>DataType</quote
> ise <quote
>dsDataType</quote
>’a eşdeğerdir. Daha fazla bilgi için sözdizim vurgulama belgelendirmesindeki <xref linkend="kate-highlight-default-styles"/> bölümüne bakın. </para>
</note>

<tip>
<para
>Özellikle <userinput
><link linkend="color-themes-editor-colors"
>Düzenleyici Renkleri</link
></userinput
> ile kombine edildiğinde iyi karşıtlık sağlayacak okunabilir renkler seçmeye dikkat edin. Daha fazla bilgi için <xref linkend="color-themes-contrast"/> bölümüne bakın. </para>
</tip>

<para
><link linkend="color-themes-json"
>&JSON; dosyasında</link
>, ilgili <userinput
>text-styles</userinput
> anahtarının değeri bir <emphasis
>object</emphasis
>’e sahiptir; burada her anahtar, sözdizim vurgulama tanımlarında kullanılanlara eşdeğer olan bir <emphasis
>öntanımlı metin biçeminin</emphasis
> adına karşılık gelir. Burada, zorunlu olan <userinput
>kullanılabilir tüm metin biçemi anahtarları</userinput
> aşağıda listelenmiştir. </para>

<programlisting
>"text-styles": {
    "Normal" : {
        "text-color" : "#1f1c1b",
        "selected-text-color" : "#ffffff",
        "bold" : false,
        "italic" : false,
        "underline" : false,
        "strike-through" : false
    },
    "Keyword" : {
        "text-color" : "#1f1c1b",
        "selected-text-color" : "#ffffff",
        "bold" : true
    },
    "Function" : {
        "text-color" : "#644a9b",
        "selected-text-color" : "#452886"
    },
    <replaceable
>Diğer metin biçemi anahtarları…</replaceable>
}
</programlisting>

<variablelist>
<varlistentry>

<term
><emphasis
>Öntanımlı metin biçeminin</emphasis
> her bir anahtarının bir &JSON; nesnesi olan değerleri vardır; buralarda; örneğin, <emphasis
>color</emphasis
>, <emphasis
>bold</emphasis
>, <emphasis
>italic</emphasis
>, vb. değerler belirtilirler. Bu anahtarlar aşağıda listelenmiştir: </term>

<listitem>

<para
><userinput
>text-color</userinput
>: Metin renginin onaltılık bir renk kodunda olduğu bir <emphasis
>dizidir</emphasis
>. Bu anahtar/değer zorunludur.</para>

<para
><userinput
>selected-text-color</userinput
>: Seçili olan metin renginin değeri genelde <quote
>text-color</quote
> ile aynıdır. Metin seçiliyken, arka plan, <link linkend="color-themes-editor-colors"
>Düzenleyici Renkleri</link
>’nin <link linkend="variable-pref-colors-selected-text"
>TextSelection</link
> değeriyle belirlenir, bundan dolayı, metnin iyi bir karşıtlığa sahip olduğundan ve bu arka planla okunabilir olduğundan emin olun. Değer, onaltılık renk koduna sahip bir <emphasis
>dizidir</emphasis
> ve zorunludur.</para>

<para
><userinput
>bold</userinput
>: Metnin kalın olup olmadığını belirten bir <emphasis
>Boole</emphasis
> değeridir. Bu anahtar isteğe bağlıdır, öntanımlı değer <userinput
>false</userinput
>’tur.</para>

<para
><userinput
>italic</userinput
>: Metnin yatık olup olmadığını belirten bir <emphasis
>Boole</emphasis
> değeridir. Bu anahtar isteğe bağlıdır, öntanımlı değer <userinput
>false</userinput
>’tur.</para>

<para
><userinput
>underline</userinput
>: Metnin altı çizili olup olmadığını belirten bir <emphasis
>Boole</emphasis
> değeridir. Bu anahtar isteğe bağlıdır, öntanımlı değer <userinput
>false</userinput
>’tur.</para>

<para
><userinput
>strike-through</userinput
>: Metnin üzeri çizili olup olmadığını belirten bir <emphasis
>Boole</emphasis
> değeridir. Bu anahtar isteğe bağlıdır, öntanımlı değer <userinput
>false</userinput
>’tur.</para>

<para
><userinput
>background-color</userinput
>: Metnin arka planının belirler; örneğin, yorumlardaki uyarılar için kullanılır. Değer, onaltılık renk koduna sahip bir <emphasis
>dizidir</emphasis
>. Bu anahtar isteğe bağlıdır ve öntanımlı olarak bir arka plan yoktur.</para>

<para
><userinput
>selected-background-color</userinput
>: Metnin seçiliyken arka planının belirler. Değer, onaltılık renk koduna sahip bir <emphasis
>dizidir</emphasis
>. Bu anahtar isteğe bağlıdır ve öntanımlı olarak bir arka plan yoktur.</para>

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

<para
><link linkend="color-themes-gui"
>KTextEditor renk temalarını yönetmek için kullanılan arayüzde</link
>, bu öznitelikler <userinput
><guilabel
>Öntanımlı Metin Biçemleri</guilabel
></userinput
> sekmesinde değiştirilebilir. Biçem listesindeki ad, öge için yapılandırılan biçemi kullanır ve bir biçemi yapılandırırken size anında bir önizleme sağlar. Her biçem, ortak özelliklerin yanı sıra ön plan ve arka plan renklerini de seçmenize olanak tanır. Bir arka plan rengini kaldırmak için bağlam menüsünü kullanmak üzere sağ tıklayın.</para>

<para
>Kullanılabilir metin biçemi anahtarları aşağıda listelenmiştir; <link linkend="color-themes-json"
>&JSON; dosyasında</link
> kullanılan anahtarlar <emphasis
>kalın</emphasis
> ile, <link linkend="color-themes-gui"
>grafik arayüzde</link
> kullanılan adlar ise farklılarsa parantez içinde gösterilirler.</para>

<variablelist>
<varlistentry>
<term
><guilabel
>Normal Metin ve Kaynak Kodu</guilabel
></term>
<listitem>
<para
><userinput
>Normal</userinput
>: Özel vurgulama olmadan normal metin ve kaynak kodu için öntanımlı metin biçemi.</para>

<para
><userinput
>Keyword</userinput
>: Yerleşik dil anahtar sözcükleri için metin biçemi.</para>

<para
><userinput
>Function</userinput
>: İşlev tanımları ve çağrıları için metin biçemi.</para>

<para
><userinput
>Variable</userinput
>: Kullanılabiliyorsa değişkenler için metin biçemi. Örneğin, PHP/Perl değişkenleri genellikle bir <userinput
>$</userinput
> ile başlar, bundan dolayı <userinput
>$foo</userinput
> dizgisine uyan tüm tanımlayıcılar değişken olarak vurgulanırlar.</para>

<para
><userinput
>ControlFlow</userinput
> (<guilabel
>Denetim Akışı</guilabel
>): <emphasis
>if</emphasis
>, <emphasis
>then</emphasis
>, <emphasis
>else</emphasis
>, <emphasis
>return</emphasis
>, <emphasis
>switch</emphasis
>, <emphasis
>break</emphasis
>, <emphasis
>yield</emphasis
>, <emphasis
>continue</emphasis
>, vb. gibi denetim akışı anahtar sözcükleri için metin biçemi.</para>

<para
><userinput
>Operator</userinput
>: <userinput
>+</userinput
>, <userinput
>-</userinput
>, <userinput
>*</userinput
>, <userinput
>/</userinput
>, <userinput
>%</userinput
>, vb. gibi işleçler için metin biçemi.</para>

<para
><userinput
>BuiltIn</userinput
> (<guilabel
>Yerleşik</guilabel
>): Yerleşik dil sınıfları, işlevleri ve nesneleri için metin biçemi.</para>

<para
><userinput
>Extension</userinput
>: İyi bilinen uzantılar; örneğin, &Qt; sınıfları, C++ işlevleri/makroları vb. için metin biçemi.</para>

<para
><userinput
>Preprocessor</userinput
>: Önişlemci ifadeleri veya makro tanımları için metin biçemi.</para>

<para
><userinput
>Attribute</userinput
>: Bilgi notları veya işlevlerin veya nesnelerin öznitelikleri için metin biçemi; örneğin, Java’daki <userinput
>@override</userinput
> veya C++’daki <userinput
>__declspec(…)</userinput
> ve <userinput
>__attribute__((…))</userinput
>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Sayılar, Türler ve Sabitler</guilabel
></term>
<listitem>
<para
><userinput
>DataType</userinput
> (<guilabel
>Veri Türü</guilabel
>): <emphasis
>int</emphasis
>, <emphasis
>char</emphasis
>, <emphasis
>float</emphasis
>, <emphasis
>void</emphasis
>, <emphasis
>u64</emphasis
>, vb. gibi yerleşik veri türleri için metin biçemi.</para>

<para
><userinput
>DecVal</userinput
> (<guilabel
>Ondalık/Değer</guilabel
>): Ondalık değerler için metin biçemi.</para>

<para
><userinput
>BaseN</userinput
> (<guilabel
>N Tabanlı Tamsayı</guilabel
>): 10’dan başka bir tabanlı sayılar için metin biçemi.</para>

<para
><userinput
>Float</userinput
> (<guilabel
>Kayan Noktalı</guilabel
>): Kayan noktalı sayılar için metin biçemi.</para>

<para
><userinput
>Constant</userinput
>: Dil sabitleri ve kullanıcı tanımlı sabitler için metin biçemi; örneğin, Python’daki <emphasis
>True</emphasis
>, <emphasis
>False</emphasis
>, <emphasis
>None</emphasis
> veya C/C++’daki <emphasis
>nullptr</emphasis
> veya <emphasis
>PI</emphasis
> gibi matematik sabitleri.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Diziler ve Karakterler</guilabel
></term>
<listitem>
<para
><userinput
>Char</userinput
> (<guilabel
>Karakter</guilabel
>): <userinput
>'x'</userinput
> gibi tekli karakterler için metin biçemi.</para>

<para
><userinput
>SpecialChar</userinput
> (<guilabel
>Özel Karakter</guilabel
>): Dizilerde kaçırılan karakterler; örneğin, <quote
><userinput
>esenlikler\n</userinput
></quote
> ve değiştirmeler veya düzenli ifade işleçleri gibi özel anlamlı diğer karakterler için metin biçemi.</para>

<para
><userinput
>String</userinput
>: <quote
><userinput
>merhaba dünya</userinput
></quote
> gibi diziler için metin biçemi.</para>

<para
><userinput
>VerbatimString</userinput
> (<guilabel
>Gerçek Dizi</guilabel
>): Gerçek veya ham diziler için metin biçemi; örneğin, Perl, CoffeeScript belgelerindeki gibi <userinput
>'ham \ters eğik çizgi'</userinput
> veya Python veya HERE belgelerindeki <userinput
>r'\ham'</userinput
> gibi diziler.</para>

<para
><userinput
>SpecialString</userinput
> (<guilabel
>Özel Dizi</guilabel
>): Özel diziler için metin biçemi; örneğin, ECMAScript düzenli ifadeleri, &latex; matematik kipi, SQL, vb.</para>

<para
><userinput
>Import</userinput
> (<guilabel
>Import’lar, Modüller, Include’lar</guilabel
>): Include’lar, import’lar, modüller veya &latex; paketleri için metin biçemi.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Yorumlar ve Belgelendirme</guilabel
></term>
<listitem>
<para
><userinput
>Comment</userinput
>: Normal yorumlar için metin biçemi.</para>

<para
><userinput
>Documentation</userinput
>: API belgelendirmesini yansıtan yorumlar için metin biçemi; örneğin, <userinput
>/** doxygen yorumları */</userinput
> veya <userinput
>"""docstrings"""</userinput
>.</para>

<para
><userinput
>Annotation</userinput
>: Yorumlardaki bilgi notları veya belgelendirme komutları için metin biçemi; örneğin, Doxygen veya JavaDoc için <userinput
>@param</userinput
>.</para>

<para
><userinput
>CommentVar</userinput
> (<guilabel
>Yorum Değişkeni</guilabel
>): Yukarıdaki komutlarda bir yorumda kullanılan değişken adlarına başvuran metin biçemi; örneğin, Doxygen veya JavaDoc’ta <quote
><userinput
>@param foobar</userinput
></quote
> içindeki <userinput
>foobar</userinput
> gibi.</para>

<para
><userinput
>RegionMarker</userinput
> (<guilabel
>Bölge İmleyicisi</guilabel
>): Genellikle yorumlarda <userinput
>//BEGIN</userinput
> ve <userinput
>//END</userinput
> ile tanımlanan bölge imleyicilerine yönelik metin biçemi.</para>

<para
><userinput
>Information</userinput
>: Bilgi, notlar ve ipuçları için metin biçemi; örneğin, Doxygen <userinput
>@note</userinput
> anahtar sözcüğü gibi.</para>

<para
><userinput
>Warning</userinput
>: Uyarılar için metin biçemi; örneğin, Doxygen’deki <userinput
>@warning</userinput
> anahtar sözcüğü gibi.</para>

<para
><userinput
>Alert</userinput
>: Yorumlardaki özel sözcükler için metin biçemi; örneğin, <userinput
>TODO</userinput
>, <userinput
>FIXME</userinput
>, <userinput
>XXXX</userinput
> ve <userinput
>WARNING</userinput
>.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Çeşitli</guilabel
></term>
<listitem>
<para
><userinput
>Error</userinput
>: Hata vurgulaması ve yanlış sözdizimi belirten metin biçemi.</para>

<para
><userinput
>Others</userinput
>: Diğer öntanımlı biçemlerden hiçbiriyle eşleşmeyen öznitelikler için metin biçemi.</para>
</listitem>
</varlistentry>
</variablelist>

</sect3>

<sect3 id="color-themes-custom-styles">

<title
>Özel Vurgulama Metin Biçemleri</title>

<para
>Burada, <link linkend="color-themes-text-styles"
>önceki bölümde</link
> açıklanan <userinput
>öntanımlı metin biçemini</userinput
> geçersiz kılarak, belirli bir sözdizim vurgulama tanımı için metin biçemleri oluşturabilirsiniz. </para>

<para
><link linkend="color-themes-json"
>&JSON; tema dosyasında</link
> bu, değeri her alt şema anahtarının <userinput
>bir sözdizimi vurgulama tanımının adına</userinput
> karşılık geldiği bir <emphasis
>nesne</emphasis
> olan <userinput
>custom-styles</userinput
> anahtarına karşılık gelir. Onun değeri, her bir anahtarın sözdizim tanımlama &XML; dosyasının <link linkend="kate-highlight-sections"
><userinput
>itemData</userinput
> ögesinde</link
> tanımlı <userinput
>biçem öznitelikleri adına</userinput
> başvuran bir <emphasis
>nesnedir</emphasis
>. İlgili değer, <emphasis
>text-color</emphasis
>, <emphasis
>selected-text-color</emphasis
>, <emphasis
>bold</emphasis
>, <emphasis
>italic</emphasis
>, <emphasis
>underline</emphasis
>, <emphasis
>strike-through</emphasis
>, <emphasis
>background-color</emphasis
> ve <emphasis
>selected-background-color</emphasis
> anahtarlarıyla bir alt nesnedir. Bu alt nesne, <link linkend="color-themes-text-styles"
>bir önceki bölümde</link
> tanımlanmıştır. Bu değerlerin her biri isteğe bağlıdır; eğer yoklarsa <userinput
>text-styles</userinput
> içinde tanımlı biçem kümesi değerlendirilir. </para>

<para
>Örneğin bu kod parçasında, <quote
>ISO C++</quote
> sözdizim vurgulama tanımında <quote
>Type Modifiers</quote
> ve <quote
>Standard Classes</quote
> öznitelikleri için özel bir metin biçemi vardır. Karşılık gelen <quote
>isocpp.xml</quote
> &XML; dosyasında tanımlı <quote
>Standard Classes</quote
> özniteliği <userinput
>BuiltIn</userinput
> (veya dsBuiltIn) öntanımlı biçemini kullanır. Bu öznitelikte, yalnızca <userinput
>text-color</userinput
> değerinin yeni <quote
>#6431b3</quote
> değeriyle üzerine yazılır. </para>

<programlisting
>"custom-styles": {
    "ISO C++": {
        "Standard Classes": {
            "text-color": "#6431b3"
        },
        "Type Modifiers": {
            "bold": true,
            "selected-text-color": "#009183",
            "text-color": "#00b5cf"
        }
    }
}
</programlisting>

<note>
<itemizedlist>

<listitem>
<para
>Bu metin biçemlerinin, &XML; dosyalarını vurgulayan sözdizimde tanımlanan öznitelik adlarıyla ilişkili olduğunu dikkate almalısınız. Bir XML dosyası güncellenirse ve bazı nitelikler yeniden adlandırılırsa veya kaldırılırsa temada tanımlanan özel biçem artık geçerli olmayacaktır.</para>
</listitem>

<listitem>
<para
>Sözdizim vurgulama tanımları genellikle başka tanımları da içerir. Örneğin, <quote
>QML</quote
> vurgulayıcısı, <quote
>JavaScript</quote
> vurgulayıcısını da içerir; çünkü bunlar, vurgulamadaki işlevleri paylaşırlar.</para>
</listitem>

</itemizedlist>
</note>

<para
><link linkend="color-themes-gui"
>KTextEditor tema yönetim arayüzünde</link
>, bu öznitelikler <userinput
><guilabel
>Vurgulama Metin Biçemleri</guilabel
></userinput
> sekmesinde yapılandırılabilir. Öntanımlı olarak düzenleyici, geçerli belgenin vurgulamasını önceden seçer. Pek çok vurgunun, biçem listesindeki gruplar tarafından temsil edilen diğer vurguları içerdiğini fark edeceksiniz. Örneğin, öne çıkanların çoğu <quote
>Alert</quote
> vurgusunu içe aktarır ve birçok kaynak kodu biçimi de <quote
>Doxygen</quote
> vurgusunu içe aktarır. </para>

</sect3>

</sect2>

<sect2 id="color-themes-gui">

<title
>Renk Temaları Grafik Arayüzü</title>

<para
>Renk temaları oluşturmanın ve düzenlemenin en basit yolu, <ulink url="https://api.kde.org/frameworks/ktexteditor/html/"
>KTextEditor</ulink
> tarafından sağlanan <link linkend="config-dialog"
><quote
>Yapılandırma</quote
> iletişim kutusunu</link
> kullanmaktır. Ona erişmek için düzenleyicinizdeki menü çubuğundan <menuchoice
><guimenu
>Ayarlar</guimenu
> <guimenuitem
><replaceable
>Uygulama</replaceable
> Uygulamasını Yapılandır…</guimenuitem
></menuchoice
> yolunu izleyin. Bu, <guilabel
>Yapılandır</guilabel
> iletişim kutusunu getirir; burada kenar çubuğundaki <guilabel
>Renk Temaları</guilabel
> girdisini seçin. </para>

<mediaobject>
<imageobject
><imagedata format="PNG" fileref="color-themes-gui-default-text-styles.png"/></imageobject>
<textobject
><phrase
>&kate;’in renk teması yönetimini gösteren ayarlar iletişim kutusu.</phrase
></textobject>
<caption
><para
>&kate;’in renk teması yönetimini gösteren ayarlar iletişim kutusu.</para>
</caption>
</mediaobject>

<para
>Bu <link linkend="config-dialog"
>iletişim kutusunda</link
>, sahip olduğunuz tüm temalardaki tüm renkleri düzenleyebilir, yeni temalar oluşuturabilir/kopyalayabilir, onları silebilir, onları <link linkend="color-themes-json"
>&JSON; biçimindeki</link
> bir <userinput
>.theme</userinput
> dosyasına dışa aktarabilir veya başka <userinput
>.theme</userinput
> dosyalarından içe aktarabilirsiniz. Her bir temanın metin renkleri ve biçemleri için ayarları vardır. </para>

<para
>Öntanımlı olarak yerleşik temalar değiştirilemez. Bunu yapmak için bunları kopyalamanız ve onlara yeni bir ad vermeniz gerekir.</para>

<para
>Bir temayı metin düzenleyicinizde kalıcı olarak kullanmak için öncelikle onu iletişim kutusunun altındaki <guilabel
><replaceable
>Uygulama</replaceable
> için öntanımlı tema</guilabel
> bölümünde seçmeli ve <guibutton
>Uygula</guibutton
> veya <guibutton
>Tamam</guibutton
> düğmelerine basmalısınız. Öntanımlı olarak, <userinput
><guilabel
>Kendiliğinden seçim</guilabel
></userinput
> seçeneği etkindir; bu, metin düzenleme uygulamasında kullanılan <emphasis
>&kde; &plasma; renk şemasına</emphasis
> daha uygun bir temayı seçer. Şema açık veya koyuysa, genellikle sırasıyla <quote
>Esinti Açık</quote
> ve <quote
>Esinti Koyu</quote
> temaları arasında geçiş yapılır. </para>

<tip>
<para
>&kde; global renk şemasını <ulink url="help:/kcontrol/colors/"
>&systemsettings; içindeki <quote
>Renkler</quote
> modülünde ayarlayabilirsiniz</ulink
>. Bunu, &kate; veya &kdevelop; gibi bazı uygulamalarda <menuchoice
><guimenu
>Ayarlar</guimenu
><guisubmenu
>Renk Teması</guisubmenu
></menuchoice
> menüsünden bireysel olarak değiştirebilirsiniz. </para>
</tip>

<sect3 id="color-themes-gui-new-theme">

<title
>Yeni bir tema oluştur</title>

<para
>Yeni bir tema oluşturmak için öncelikle var olan bir tanesini kopyalamanız gerekir. <quote
>Esinti Açık</quote
> veya <quote
>Esinti Koyu</quote
> gibi temel olarak kullanmak istediğiniz var olan bir temayı seçin ve <guibutton
>Kopyala</guibutton
>’ya tıklayın. Daha sonra yeni tema için bir ad yazın. </para>

<para
>Yerleşik veya saltokunur bir temayı değiştirmek istiyorsanız önce onu farklı bir adla kopyalamanız gerekir.</para>

</sect3>

<sect3 id="color-themes-gui-import-export">

<title
>&JSON; tema dosyalarını içe/dışa aktar</title>

<para
>Seçili bir temayı (yerleşik olanları da) bir <link linkend="color-themes-json"
>&JSON; dosyasına</link
> <userinput
>.theme</userinput
> uzantısıyla <guibutton
>Dışa Aktar</guibutton
> düğmesini kullanarak dışa aktarabilirsiniz. Bu, dosyayı kaydetmek için bir iletişim kutusu açacaktır. Başka dış bir <link linkend="color-themes-json"
>&JSON; dosyasından</link
> bir renk teması eklemek için <guibutton
>İçe Aktar</guibutton
> düğmesine basın ve iletişim kutusundan <userinput
>.theme</userinput
> dosyasını seçin. </para>

<tip>
<itemizedlist>

<listitem>
<para
><link linkend="color-themes-json-overview"
>Yukarıda belirtildiği üzere</link
>, kullanıcı tanımlı tema dosyaları <filename class="directory"
>org.kde.syntax-highlighting/themes/</filename
> dizininde depolanırlar. Bir tema oluşturduğunuzda veya kopyaladığınızda orada kendiliğinden oluşur. Ek olarak, bir tema içe aktarmak veya eklemek, bir <userinput
>.theme</userinput
> dosyasını bu dizine koymakla eşdeğerdir. KSyntaxHighlighting, bu dizinden renk teması dosyalarını kendiliğinden alır.</para>
</listitem>

<listitem>
<para
>Sizin tarafınızdan oluşturulan bir temayı yayımlamak istiyorsanız <link linkend="color-themes-json"
>&JSON; dosyasının</link
> <link linkend="color-themes-json-metadata"
>metadata</link
> nesnesine ilgili lisansı eklemeniz ve revizyon numarasını denetlemeniz önemlidir.</para>
</listitem>

</itemizedlist>
</tip>

</sect3>

<sect3 id="color-themes-gui-editing">

<title
>Renk temalarını düzenlemek</title>

<sect4 id="prefcolors-colors">

<title
>Renkler</title>

<para
>Burada, metin düzenleme alanının renkleri düzenlenirken görebilirsiniz. Bunlar, <xref linkend="color-themes-editor-colors"/> bölümünde ayrıntılı olarak açıklanmıştır.</para>

</sect4>

<sect4 id="prefcolors-normal-text-styles">

<title
>Öntanımlı Metin Biçemleri</title>

<para
>Öntanımlı metin biçemleri, vurgulanan metin biçemleri tarafından devralınır ve bu, düzenleyicinin metni çok tutarlı bir biçimde sunmasına olanak tanır; örneğin, yorum metni, KSyntaxHighlighting’in vurgulayabildiği hemen hemen tüm metin biçimlerinde aynı biçemi kullanır.</para>
<para
>Biçem listesindeki ad, öge için yapılandırılan biçemi kullanır ve bir biçemi yapılandırırken size anında bir önizleme sağlar. </para>
<para
>Her biçem, ortak özelliklerin yanı sıra ön plan ve arka plan renklerini de seçmenize olanak tanır. Bir arka plan rengini kaldırmak için bağlam menüsünü kullanmak üzere sağ tıklayın.</para>
<para
>Bu bölümün öznitelikleri <xref linkend="color-themes-text-styles"/> bölümünde ayrıntılı olarak açıklanmıştır.</para>

</sect4>

<sect4 id="prefcolors-highlighting-text-styles">

<title
>Metin Vurgulama Biçemleri</title>

<para
>Burada, belirli bir vurgu tanımı tarafından kullanılan metin biçemlerini düzenleyebilirsiniz. Düzenleyici, geçerli belgenizin kullandığı vurguyu önceden seçer. Farklı bir vurgu üzerinde çalışmak için biçem listesinin üzerindeki <guilabel
>Vurgula</guilabel
> çoklu kutusundan birini seçin. </para>
<para
>Biçem listesindeki ad, öge için yapılandırılan biçemi kullanır ve bir biçemi yapılandırırken size anında bir önizleme sağlar. </para>
<para
>Her biçem, ortak özelliklerin yanı sıra ön plan ve arka plan renklerini de seçmenize olanak tanır. Bir arka plan rengini kaldırmak için bağlam menüsünü kullanmak üzere sağ tıklayın. Ayrıca bir biçemin, öge için kullanılan öntanımlı biçeme eşit olup olmadığını görebilir ve değilse bunu buna ayarlayabilirsiniz.</para>
<para
>Pek çok vurgunun, biçem listesindeki gruplar tarafından temsil edilen diğer vurguları içerdiğini fark edeceksiniz. Örneğin, çoğu vurgu, Uyarı vurgusunu içe aktarır ve birçok kaynak kodu biçimi, Doxygen vurgusunu içe aktarır. Bu gruplardaki renkleri düzenlemek, yalnızca düzenlenen vurgu biçiminde kullanıldığında biçemleri etkiler. </para>

</sect4>

</sect3>

</sect2>

<sect2 id="color-themes-tips-and-tricks">

<title
>İpuçları ve Kolaylıklar</title>

<sect3 id="color-themes-contrast">

<title
>Metin Renklerinin Karşıtlığı</title>

<para
>Renk temalarıyla çalışırken önemli bir konu, özellikle arka planla birlikte okumayı kolaylaştıracak bir metin karşıtlığı seçmektir.</para>

<para
><userinput
>Kontrast</userinput
> uygulaması bir renk karşıtlığı denetleyicisidir. Size metin rengi ve arka plan rengi kombinasyonlarının okunabilir ve erişilebilir olduğunu söyler; dolayısıyla bu, renk temaları oluşturmanıza yardımcı olacak mükemmel bir araçtır.</para>

<para
><userinput
>Kontrast</userinput
> uygulamasını from <ulink url="https://apps.kde.org/en/kontrast"
>&kde; uygulamaları web sitesinden</ulink
> veya <ulink url="https://flathub.org/apps/details/org.kde.kontrast"
>Flathub’daki Flatpak paketiyle</ulink
> indirebilirsiniz (yalnızca GNU/Linux).</para>

<para
>GNOME <userinput
>Contrast</userinput
> uygulaması da benzer bir uygulamadır. <ulink url="https://flathub.org/apps/details/org.gnome.design.Contrast"
>Flathub’daki Flatpak paketiyle</ulink
> indirebilirsiniz (yalnızca GNU/Linux).</para>

<para
><ulink url="https://invent.kde.org/frameworks/syntax-highlighting/-/blob/master/utils/theme_contrast_checker.py?ref_type=heads"
>Syntax Highlighting deposundaki</ulink
> bir Python betiği, bir temadaki tüm renkleri ve tüm arka planlardaki karşıtlığı ayarlamanıza olanak tanır.</para>

</sect3>

<sect3 id="color-themes-tips-and-tricks-consistency">

<title
>Sözdizim Vurgulamada Tutarlılık Önerileri</title>

<para
>KSyntaxHighlighting, <ulink url="https://kate-editor.org/syntax/"
>300’den fazla sözdizimi vurgulama tanımı</ulink
> içerir, bu nedenle yeni temanızın tüm sözdizim vurgulama tanımlarında iyi göründüğünden emin olmanız idealdir. Yerleşik renk temaları, tüm sözdizim vurgulama tanımlarının doğru bir şekilde görüntülenmesini sağlamak için takip edilmesi önerilen (ancak zorunlu olmayan) aşağıdaki benzerliklere sahiptir:</para>

<itemizedlist>
<listitem
><para
><quote
>Keyword</quote
> ve <quote
>ControlFlow</quote
> <link linkend="color-themes-text-styles"
>metin biçemleri</link
> için kalın metin kullanın.</para
></listitem>

<listitem
><para
><quote
>Alert</quote
> ve <quote
>RegionMarker</quote
> dışındaki herhangi bir <link linkend="color-themes-text-styles"
>metin biçeminde</link
> arka plan rengi kullanmayın.</para
></listitem>
</itemizedlist>

<para
>Çoğu sözdizim vurgulayıcı, öntanımlı <quote
>Esinti Açık</quote
> ve <quote
>Esinti Koyu</quote
> temalarında güzel görünmesi için tasarlanmıştır; dolayısıyla, tutarlılığı korumanın bir başka yolu da <link linkend="color-themes-text-styles"
>metin biçemlerinde</link
> benzer renkler kullanmaktır; örneğin, <quote
>Preprocessor</quote
> ve <quote
>Others</quote
> için <emphasis
>yeşil</emphasis
>; <quote
>DataType</quote
> ve <quote
>Attribute</quote
> için <emphasis
>mavi</emphasis
> veya <quote
>Function</quote
> için <emphasis
>mor</emphasis
>.</para>

<para
>Bir tema oluştururken ve yayımlarken bu önerilerin zorunlu olmadığını unutmayın.</para>

</sect3>

</sect2>

</sect1>


<sect1 id="dev-scripting">
<title
>&javascript; ile betik yazımı</title>

<para
>&kappname; düzenleyici bileşeni, betik yazımı ile kolaylıkla genişletilebilir. Bunun içn kullanılan dil ECMAScript’tir (genellikle &javascript; olarak bilinir). &kappname; iki tür betiği destekler: Girintileme ve komut satırı betikleri. Komut satırı betiklerine benzer bir işlevsellik ayrıca <ulink url="help:/kate/kate-application-plugin-snippets.html"
>parçacıklar eklentisinde</ulink
> sunulmaktadır. Bu eklenti, özellikle küçük özelleştirilmiş betikler için daha iyi bir başlangıç noktası sağlayabilir. </para>

<sect2 id="dev-scripting-indentation">
<title
>Girintileme Betikleri</title>

<para
>Girintileme betikleri (aynı zamanda girintileyiciler olarak da bilinir) metin yazarken kaynak kodu kendiliğinden girintiler. Örnek olarak, Dönüş düğmesine bastıktan sonra girinti düzeyi genelde artar. </para>

<para
>Aşağıdaki bölümlerde basit bir girintileyici için temel çerçevenin nasıl oluşturulacağı adım adım açıklanmaktadır. İlk adım olarak, yerel ana klasör olan <filename
>$<envar
>XDG_DATA_HOME</envar
>/katepart5/script/indentation</filename
> klasöründe yeni bir <filename
>*.js</filename
> dosyası oluşturun; &eg;, <filename
>javascript.js</filename
>. Burada, <envar
>XDG_DATA_HOME</envar
> çevre değişkeni genellikle <filename
>~/.local</filename
> veya <filename
>~/.local/share</filename
> olarak genişletilir. </para>
<para
>&Windows;’ta bu dosyalar genelde <filename
>C:\\Users\\<replaceable
>user</replaceable
></filename
> olarak genişleyen <filename
>%USERPROFILE%\AppData\Local\katepart5\script\indentation</filename
>. <replaceable
>%USERPROFILE%</replaceable
> konumundadır.</para>

<sect3 id="dev-scripting-indentation-header">
<title
>Girintileme Betiği Üstbilgisi</title>
<para
><filename
>javascript.js</filename
> dosyasının üstbilgisi, aşağıdaki gibi belgenin başına &JSON; olarak gömülür: <programlisting>
var katescript = {
    "name": "JavaScript",
    "author": "Örnek Ad &lt;örnek.ad@bir.adres.org&gt;",
    "license": "BSD License",
    "revision": 1,
    "kate-version": "5.1",
    "required-syntax-style": "javascript",
    "indent-languages": ["javascript"],
    "priority": 0,
}; // kate-script-header, dosyanın başında yorumsuz olmalıdır
</programlisting
> Burada her giriş ayrıntılı olarak açıklanır: <itemizedlist>
<listitem
><para
><literal
>name</literal
> [zorunlu]: Bu, <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Girintileme</guimenuitem
></menuchoice
> menüsünde ve yapılandırma iletişim kutusunda görünen girintileyici adıdır. </para
></listitem>
<listitem
><para
><literal
>author</literal
> [isteğe bağlı]: Yazarın adı ve iletişim bilgisi. </para
></listitem>
<listitem
><para
><literal
>license</literal
> [isteğe bağlı]: Lisansın kısa adı; örneğin, BSD License veya LGPLv3. </para
></listitem>
<listitem
><para
><literal
>revision</literal
> [zorunlu]: Betiğin revizyonu. Komut dosyasında her değişiklik yapıldığında bu sayının artırılması gerekir. </para
></listitem>
<listitem
><para
><literal
>kate-version</literal
> [zorunlu]: Zorunlu en düşük &kappname; sürümü. </para
></listitem>
<listitem
><para
><literal
>required-syntax-style</literal
> [isteğe bağlı]: Sözdizim vurgulama dosyalarında belirtilen <literal
>biçem</literal
> ile eşleşen gerekli sözdizim biçemi. Bu, belgedeki belirli vurgulama bilgilerine dayanan girintileyiciler için önemlidir. Gerekli bir sözdizim biçemi belirtilirse girintileyici yalnızca uygun vurgulayıcı etkin olduğunda kullanılabilir. Bu, girintileyicinin beklenen vurgulama şeması olmadan kullanılmasından kaynaklanan <quote
>tanımsız davranışı</quote
> önler. Örneğin, Ruby girintileyicisi bunu, <filename
>ruby.js</filename
> ve <filename
>ruby.xml</filename
> dosyalarında kullanır. </para
></listitem>
<listitem
><para
><literal
>indent-languages</literal
> [isteğe bağlı]: Girintileyicinin düzgünce girintileyebildiği sözdizim biçemlerinin &JSON; dizilişi; &eg;: <literal
>["c++", "java"]</literal
>. </para
></listitem>
<listitem
><para
><literal
>priority</literal
> [isteğe bağlı]: Vurgulanan belirli bir dosya için birden fazla girintileyici uygunsa öncelik, öntanımlı girintileyici olarak hangi girintileyicinin seçileceğine karar verir. </para
></listitem>
</itemizedlist>
</para>

</sect3>

<sect3 id="dev-scripting-indentation-body">
<title
>Girintileyici Kaynak Kodu</title>
<para
>Üstbilgiyi belirledikten sonra bu bölüm girintileme betiği oluşturma işleminin nasıl çalıştığını açıklamaktadır. Gövdenin temel iskeleti şöyle görünür: <programlisting>
// zorunlu katepart js kitaplıkları; &eg;, Range require ("range.js"); kullanıyorsanız range.js

triggerCharacters = "{}/:;";
function indent(line, indentWidth, ch)
{
    // triggerCharacters global değişkeninde belirtilen her bir yenisatır (ch == ’\n’) ve tüm karakterler için çağrılır. <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Girintilemeyi Biçimlendir</guimenuitem
></menuchoice
>, ch değişkeni boştur; demeli, ch == ’’.
    //
    // Ayrıca bakınız: Betik Yazımı API’si
    return -2;
}
</programlisting
> <function
>indent()</function
> işlevinin üç parametresi vardır:<itemizedlist
><listitem
><para
><literal
>line</literal
>: Girintilenmesi gereken satır</para
></listitem
><listitem
><para
><literal
>indentWidth</literal
>: Boşluk türünden girintileme genişliği</para
></listitem
><listitem
><para
><literal
>ch</literal
>: Ya bir yenisatır karakteri (<literal
>ch == ’\n’</literal
>) ya <literal
>triggerCharacters</literal
> içinde belirtilen tetikleyici karakter ya da kullanıcı <menuchoice
><guimenu
>Araçlar</guimenu
><guimenuitem
>Girintilemeyi Biçimlendir</guimenuitem
></menuchoice
> eylemini çağırdıysa boş.</para
></listitem
></itemizedlist
><function
>indent()</function
> işlevinin döndürdüğü değer, satırın nasıl girintileneceğini belirtir. Dönüş değeri basit bir tamsayıysa aşağıdaki gibi değerlendirilir:<itemizedlist
><listitem
><para
>return value <literal
>-2</literal
>: Bir şey yapma</para
></listitem
><listitem
><para
>return value <literal
>-1</literal
>: Girintilemeyi tut (önceki boş olmayan satırları arar)</para
></listitem
><listitem
><para
>return value <literal
> 0</literal
>: &gt;=0 sayıları, boşluk türünden girintileme derinliğini belirtir</para
></listitem
></itemizedlist
>Alternatif olarak, iki ögeli bir diziliş döndürülebilir:<itemizedlist
><listitem
><para
><literal
>return [ indent, align ];</literal
></para
></listitem
></itemizedlist
>Bu durumda ilk öge, yukarıdaki gibi özel değerlerle aynı anlama gelen girintileme derinliğidir. Ancak ikinci öge, <quote
>hizalama</quote
> sütununu temsil eden mutlak bir değerdir. Bu değer girinti değerinden yüksekse, fark, ilk parametrenin girintisinden sonra eklenecek boşluk sayısını temsil eder. Aksi halde ikinci sayı dikkate alınmaz. Girintileme için sekmelerin ve boşlukların kullanılmasına genellikle <quote
>karma kip</quote
> adı verilir. </para>

<para
>Aşağıdaki örneğe ele alın: Girintileme için sekmelerin kullanıldığını ve sekme genişliğinin 4 olduğunu varsayalım. Burada, &lt;tab&gt; bir sekmeyi ve '.' bir boşluğu temsil eder: <programlisting>
1: &lt;tab&gt;&lt;tab&gt;foobar("merhaba",
2: &lt;tab&gt;&lt;tab&gt;......."dünya");
</programlisting
> 2. satırı girintilerken, <function
>indent()</function
> işlevi [8, 15] değerini döndürür. Sonuç olarak, 8. sütuna girinti yapmak için iki sekme eklenir ve ikinci parametreyi birincinin altına hizalamak için 7 boşluk eklenir, böylece dosya farklı bir sekme genişliğinde görüntülenirse hizalı kalır. </para>

<para
>Öntanımlı bir &kde; kurulumu, &kappname; uygulamasını birkaç girintileyici ile kurar. Karşılık gelen &javascript; kaynak kodu <filename
>$<envar
>XDG_DATA_DIRS</envar
>/katepart5/script/indentation</filename
> konumunda bulunabilir.</para>
<para
>&Windows;’ta bu dosyalar genelde <filename
>C:\\Users\\<replaceable
>user</replaceable
></filename
> olarak genişleyen <filename
>%USERPROFILE%\AppData\Local\katepart5\script\indentation</filename
>. <replaceable
>%USERPROFILE%</replaceable
> konumundadır. </para>

<para
>Bir girintileyici geliştirmek, değişikliklerin uygun şekilde davranıp davranmadığını görmek için betiklerin yeniden yüklenmesini gerektirir. Uygulamayı yeniden başlatmak yerine komut satırına geçin ve <command
>reload-scripts</command
> komutunu çağırın. </para>

<para
>Eğer yararlı betikler geliştiriyorsanız lütfen onları &kappname; projesine katkıda bulunmayın düşünün. Katkılarınızı <ulink url="https://invent.kde.org/frameworks/ktexteditor"
>GitLab sayfamıza</ulink
> gönderin. </para>

</sect3>
</sect2>

<sect2 id="dev-scripting-command-line">
<title
>Komut Satırı Betikleri</title>

<note>
<para
>Komut satırı betiklerine benzer bir işlevsellik ayrıca <ulink url="help:/kate/kate-application-plugin-snippets.html"
>parçacıklar eklentisinde</ulink
> sunulmaktadır. Bu eklenti, özellikle küçük özelleştirilmiş betikler için daha iyi bir başlangıç noktası sağlayabilir.</para>
</note>

<para
>Herkesin gereksinimlerini karşılamak güç olsa da, &kappname;, <link linkend="advanced-editing-tools-commandline"
>yerleşik komut satırı</link
> ile tez metin manipülasyonunu sağlamak için küçük yardımcı araçlar sağlar. Örneğin, <command
>sort</command
> komutu bir betik olarak uygulanmıştır. Bu bölüm, &kappname; uygulamasını olabildiğince genişletmek için nasıl <filename
>*.js</filename
> dosyaları oluşturulacağını açıklar. </para>

<para
>Komut satırı betikleri, girintileme betikleriyle aynı klasörde bulunurlar. İlk adım olarak, yerel ana klasör olan <filename
>$<envar
>XDG_DATA_HOME</envar
>/katepart5/script/commands</filename
> klasöründe yeni bir <filename
>*.js</filename
> dosyası oluşturun; &eg;, <filename
>izlencelerim.js</filename
>. Burada, <envar
>XDG_DATA_HOME</envar
> çevre değişkeni genellikle <filename
>~/.local</filename
> veya <filename
>~/.local/share</filename
> olarak genişletilir.</para>
<para
>&Windows;’ta bu dosyalar genelde <filename
>C:\\Users\\<replaceable
>user</replaceable
></filename
> olarak genişleyen <filename
>%USERPROFILE%\AppData\Local\katepart5\script\commands</filename
>. <replaceable
>%USERPROFILE%</replaceable
> konumundadır. </para>

<sect3 id="dev-scripting-command-line-header">
<title
>Komut Satırı Betik Üstbilgisi</title>
<para
><filename
>javascript.js</filename
> dosyasının üstbilgisi, aşağıdaki gibi belgenin başına &JSON; olarak gömülür: <programlisting>
var katescript = {
    "author": "Örnek Ad &lt;örnek.ad@bir.adres.org&gt;",
    "license": "LGPLv2+",
    "revision": 1,
    "kate-version": "5.1",
    "functions": ["sort", "moveLinesDown"],
    "actions": [
        {   "function": "sort",
            "name": "Seçili Metni Sırala",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Satırları Aşağı Taşı",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
}; // kate-script-header, dosyanın başında yorumsuz olmalıdır
</programlisting
> Burada her giriş ayrıntılı olarak açıklanır: <itemizedlist>
<listitem
><para
><literal
>author</literal
> [isteğe bağlı]: Yazarın adı ve iletişim bilgisi.</para
></listitem>
<listitem
><para
><literal
>license</literal
> [isteğe bağlı]: Lisansın kısa adı; örneğin, BSD License veya LGPLv3.</para
></listitem>
<listitem
><para
><literal
>revision</literal
> [zorunlu]: Betiğin revizyonu. Komut dosyasında her değişiklik yapıldığında bu sayının artırılması gerekir.</para
></listitem>
<listitem
><para
><literal
>kate-version</literal
> [zorunlu]: Zorunlu en düşük &kappname; sürümü.</para
></listitem>
<listitem
><para
><literal
>functions</literal
> [zorunlu]: Betikteki komutların &JSON; dizilişi.</para
></listitem>
<listitem
><para
><literal
>actions</literal
> [isteğe bağlı]: Uygulama menüsünde görünen eylemleri tanımlayan &JSON; nesnelerinin &JSON; dizilişi. Ayrıntılı bilgi, <link linkend="advanced-editing-tools-commandline"
>Kısayolları Bağıntılamak</link
> bölümünde sağlanmıştır.</para
></listitem>
</itemizedlist>
</para>

<para
><literal
>functions</literal
> değeri bir &JSON; dizilişi olduğundan, tek bir betik istediğiniz kadar komut satırı komutu içerebilir. Her bir işlev, &kappname; uygulamasının <link linkend="advanced-editing-tools-commandline"
>yerleşik komut satırından</link
> kullanılabilir. </para>
</sect3>

<sect3 id="dev-scripting-command-line-body">
<title
>Betik Kaynak Kodu</title>

<para
>Üstbilgide belirtilen tüm işlevlerin betikte uygulanması gerekir. Örneğin, yukarıdaki örnekteki komut dosyasının <command
>sort</command
> ve <command
>moveLinesDown</command
> işlevlerini uygulaması gerekir. Tüm işlevler aşağıdaki sözdizime sahiptir: <programlisting
>// zorunlu katepart js kitaplıkları; &eg;, Range require ("range.js"); kullanıyorsanız range.js

function &lt;name&gt;(arg1, arg2, …)
{
    // … uygulama, ayrıca bakınız: Betik Yazımı API’si
}
</programlisting>
</para>

<para
>Komut satırındaki argümanlar işleve <parameter
>arg1</parameter
>, <parameter
>arg2</parameter
>, vb. olarak geçirilirler. Her bir komut için belgelendirmek sağlamak istiyorsanız yalnızca '<function
>help</function
>' işlevini aşağıdaki gibi uygulayın: <programlisting>
function help(cmd)
{
    if (cmd == "sort") {
        return i18n("Seçili metni sıralayın.");
    } else if (cmd == "…") {
        // …
    }
}
</programlisting
> Komut satırında <command
>help sort</command
> işlevini yürütmek, sonrasında bu yardım işlevini verilen komuta ayarlı <parameter
>cmd</parameter
> ile çağırır; &ie;, <parameter
>cmd == "sort"</parameter
>. &kappname; sonrasında döndürülen metni kullanıcıya belgelendirme olarak sunar. <link linkend="dev-scripting-api-i18n"
>Dizileri başka dillere</link
> çevrilebilir yaptığınızdan emin olun. </para>

<para
>Bir komut satırı betiği geliştirmek, değişikliklerin uygun şekilde davranıp davranmadığını görmek için betiklerin yeniden yüklenmesini gerektirir. Uygulamayı yeniden başlatmak yerine komut satırına geçin ve <command
>reload-scripts</command
> komutunu çağırın. </para>

<sect4 id="dev-scripting-command-line-shortcuts">
<title
>Kısayolları Bağıntılamak</title>
<para
>Betiklerin uygulama menüsünden erişilebilir olmasını sağlamak ve kısayollar atamak için betiğin uygun bir betik başlığı sağlaması gerekir. Yukarıdaki örnekte, betik üstbilgisindeki aşağıdaki bölüm nedeniyle menüde hem <literal
>sort</literal
> hem de <literal
>moveLinesDown</literal
> işlevleri görünüyor: <programlisting>
var katescript = {
    …
    "actions": [
        {   "function": "sort",
            "name": "Seçili Metni Sırala",
            "icon": "",
            "category": "Editing",
            "interactive": "false"
        },
        {   "function": "moveLinesDown",
            "name": "Satırları Aşağı Taşı",
            "icon": "",
            "category": "Editing",
            "shortcut": "Ctrl+Shift+Down",
            "interactive": "false"
        }
    ]
};
</programlisting
> Tek bir eylem için olan alanlar aşağıdaki gibidir: <itemizedlist>
<listitem
><para
><literal
>function</literal
> [zorunlu]: <menuchoice
><guimenu
>Araçlar</guimenu
> <guisubmenu
>Betikler</guisubmenu
></menuchoice
> menüsünde görünmesi gereken işlev.</para
></listitem>
<listitem
><para
><literal
>name</literal
> [zorunlu]: Betikler menüsünde görünen metin.</para
></listitem>
<listitem
><para
><literal
>icon</literal
> [isteğe bağlı]: Menüde metnin yanında görünen simge. Burada tüm &kde; simgeleri adları kullanılabilir.</para
></listitem>
<listitem
><para
><literal
>category</literal
> [isteğe bağlı]: Bir kategori belirtilirse betik bir alt menüde görünür.</para
></listitem>
<listitem
><para
><literal
>shortcut</literal
> [isteğe bağlı]: Burada verilen kısayol, öntanımlı kısayoldur. Örnek: <literal
>Kontrol+Seçenek+T</literal
>. Daha fazla ayrıntı için <ulink url="https://doc.qt.io/qt-5/qt.html#Key-enum"
>&Qt; belgelendirmesine</ulink
> bakın.</para
></listitem>
<listitem
><para
><literal
>interactive</literal
> [isteğe bağlı]: Betiğin komut satırında kullanıcı girdisi bekleyip beklemediği. Bunu, <literal
>true</literal
> olarak ayarlayın.</para
></listitem>
</itemizedlist>
</para>

<para
>Eğer yararlı betikler geliştiriyorsanız lütfen onları &kappname; projesine katkıda bulunmayın düşünün. Katkılarınızı <ulink url="https://invent.kde.org/frameworks/ktexteditor"
>GitLab sayfamıza</ulink
> gönderin. </para>

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

<sect2 id="dev-scripting-api">
<title
>Betik Yazımı API’si</title>

<para
>Burada sunulan betik yazımı API’si, tüm betikler için kullanılabilirdir; &ie;, girintileme betikleri ve komut satırı betikleri. <classname
>Cursor</classname
> ve <classname
>Range</classname
> sınıfları, <filename
>$<envar
>XDG_DATA_DIRS</envar
>/katepart5/libraries</filename
> içindeki kitaplık dosyaları tarafından sağlanırlar. <classname
>Document</classname
> veya <classname
>View</classname
> işlevlerinden bazılarını kullanması gereken bu API’yi betiğinizde kullanmak istiyorsanız şunu kullanarak gerekli kitaplığı içerin: <programlisting
>// zorunlu katepart js kitaplıkları; &eg;, Range require ("range.js"); kullanıyorsanız range.js
require ("range.js");
</programlisting>
</para>

<para
>Standart betik yazımı API’sini kendi işlevleriniz ve prototiplerinizle genişletmek istiyorsanız yalnızca &kde;’nin yerel yapılandırma klasörü olan <filename
>$<envar
>XDG_DATA_HOME</envar
>/katepart5/libraries</filename
> içinde yeni bir dosya oluşturun ve onu betiğinizde şunu kullanarak içerin: <programlisting
>require ("benimbetiğiminadıburaya.js");
</programlisting>

</para>

<para
>&Windows;’ta bu dosyalar genelde <filename
>C:\\Users\\<replaceable
>user</replaceable
></filename
> olarak genişleyen <filename
>%USERPROFILE%\AppData\Local\katepart5\libraries</filename
>. <replaceable
>%USERPROFILE%</replaceable
> konumundadır.</para>

<para
><classname
>Cursor</classname
> veya <classname
>Range</classname
> gibi var olan prototipleri genişletmek istiyorsanız tavsiye edilen yol global <filename
>*.js</filename
> dosyalarını değiştirmek <emphasis
>değildir</emphasis
>. Bunun yerine, &javascript; içindeki <classname
>Cursor</classname
> prototipini <filename
>cursor.js</filename
> betiğinizde <literal
>require</literal
> ile içerildikten sonra değiştirin. </para>

<sect3 id="dev-scripting-api-prototypes">
<title
>İmleçler ve Erimler</title>

<para
>&kappname; bir metin düzenleyici olduğundan, tüm betik oluşturma API’si olabildiğince imleçlere ve erimlere dayanır. İmleç, belgedeki bir metin konumunu temsil eden basit bir <literal
>(satır, sütun)</literal
> demettir. Erim, metni başlangıç imleç konumundan bitiş imleç konumuna kadar yayar. API sonraki bölümlerde ayrıntılı olarak açıklanmaktadır. </para>

<sect4 id="dev-scripting-api-cursors">
<title
>İmleç Prototipi</title>

<variablelist
><varlistentry>
<term
><synopsis
>Cursor();
</synopsis
></term>
<listitem
><para
>Yapıcı. <literal
>(0, 0)</literal
> konumunda bir imleç döndürür.</para>
<para
>Örnek: <function
>var cursor = new Cursor();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Yapıcı. Belirli bir konumda (satır, sütun) bir imleç döndürür. </para>
<para
>Örnek: <function
>var cursor = new Cursor(3, 42);</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor(<parameter
>Cursor <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Yapıcıyı kopyala. <replaceable
>diğer</replaceable
> imlecinin bir kopyasını döndürür. </para>
<para
>Örnek: <function
>var copy = new Cursor(other);</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor Cursor.clone();
</synopsis
></term>
<listitem
><para
>İmlecin bir klonunu döndürür.</para>
<para
>Örnek: <function
>var clone = cursor.clone();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor.setPosition(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumunu <replaceable
>satır</replaceable
> ve <replaceable
>sütun</replaceable
> olarak ayarlar.</para>
<para
>Eklendiği sürüm: &kde; 4.11 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Cursor.isValid();
</synopsis
></term>
<listitem
><para
>İmlecin geçerli olup olmadığını denetler. Satır ve/veya sütun <literal
>-1</literal
> olarak ayarlanırsa imleç geçersizdir. </para>
<para
>Örnek: <function
>var valid = cursor.isValid();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor Cursor.invalid();
</synopsis
></term>
<listitem
><para
><literal
>(-1, -1)</literal
> konumunda yeni geçersiz bir imleç döndürür. </para>
<para
>Örnek: <function
>var invalidCursor = cursor.invalid();</function
> </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>int Cursor.compareTo(<parameter
>Cursor <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Bu imleci <replaceable
>diğer</replaceable
> imleç ile karşılaştırır. İmleç, <itemizedlist>
<listitem
><para
><replaceable
>diğer</replaceable
> imlecinden önce konumlandırılmışsa <literal
>-1</literal
>,</para
></listitem>
<listitem
><para
>her iki imleç de eşitse <literal
>0</literal
> ve</para
></listitem>
<listitem
><para
>bu imleç <replaceable
>other</replaceable
> imlecinden önce geliyorsa <literal
>+1</literal
> döndürür.</para
></listitem>
</itemizedlist>
</para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Cursor.equals(<parameter
>Cursor <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Bu imleç ve <replaceable
>diğer</replaceable
> imleç eşitse <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String Cursor.toString();
</synopsis
></term>
<listitem
><para
>İmleci, <quote
><literal
>Cursor(satır, sütun)</literal
></quote
> biçiminde bir dizi olarak döndürür. </para
></listitem>
</varlistentry
></variablelist>

</sect4>


<sect4 id="dev-scripting-api-ranges">
<title
>Erim Prototipi</title>

<variablelist
><varlistentry>
<term
><synopsis
>Range();
</synopsis
></term>
<listitem
><para
>Yapıcı. <literal
>new Range()</literal
> çağırmak, (0, 0)–(0, 0) konumunda bir erim döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>Cursor <replaceable
>başlangıç</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>bitiş</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Yapıcı. <literal
>new Range(<replaceable
>başlangıç</replaceable
>, <replaceable
>bitiş</replaceable
>)</literal
> çağırmak, (<replaceable
>başlangıç</replaceable
>, <replaceable
>bitiş</replaceable
>) erimini döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>int <replaceable
>başlangıçSatırı</replaceable
></parameter
>, <parameter
>int <replaceable
>başlangıçSütunu</replaceable
></parameter
>, <parameter
>int <replaceable
>bitişSatırı</replaceable
></parameter
>, <parameter
>int <replaceable
>bitişSütunu</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Yapıcı. <literal
>new Range(<replaceable
>başlangıçSatırı</replaceable
>, <replaceable
>başlangıçSütunu</replaceable
>, <replaceable
>bitişSatırı</replaceable
>, <replaceable
>bitişSütunu</replaceable
>)</literal
> çağırmak, (<replaceable
>başlangıçSatırı</replaceable
>, <replaceable
>başlangıçSütunu</replaceable
>) değerlerini (<replaceable
>bitişSatırı</replaceable
>, <replaceable
>bitişSütunu</replaceable
>) olarak döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range(<parameter
>Range <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Yapıcıyı kopyala. <replaceable
>diğer</replaceable
> eriminin bir kopyasını döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range Range.clone();
</synopsis
></term>
<listitem
><para
>Erimin bir klonunu döndürür. </para>
<para
>Örnek: <function
>var clone = range.clone();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.isEmpty();
</synopsis
></term>
<listitem
><para
>Başlangıç ve bitiş imleçleri eşitse <literal
>true</literal
> döndürür. </para>
<para
>Örnek: <function
>var empty = range.isEmpty();</function
> </para>
<para
>Eklendiği sürüm: &kde; 4.11 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.isValid();
</synopsis
></term>
<listitem
><para
>Hem başlangıç hem bitiş imleçleri eşitse <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para>
<para
>Örnek: <function
>var valid = range.isValid();</function
> </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range Range.invalid();
</synopsis
></term>
<listitem
><para
>(-1, -1) ile (-1, -1) arasındaki erimi döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.contains(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Eğer bu erim imleç konumunu içeriyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.contains(<parameter
>Range <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Eğer bu erim <replaceable
>diğer</replaceable
> erimini içeriyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.containsColumn(<parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>sütun</replaceable
>, yarı açık <literal
>[başlangıç.sütun, bitiş.sütun)</literal
> aralığındaysa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.containsLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>satır</replaceable
>, yarı açık <literal
>[başlangıç.satır, bitiş.satır)</literal
> aralığındaysa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlaps(<parameter
>Range <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Bu erim ve <replaceable
>diğer</replaceable
> erimi ortak bir bölge paylaşıyorlarsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlapsLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>satır</replaceable
>, <literal
>[başlangıç.satır, bitiş.satır)</literal
> aralığındaysa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.overlapsColumn(<parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>sütun</replaceable
>, <literal
>[başlangıç.sütun, bitiş.sütun)</literal
> aralığındaysa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.onSingleLine();
</synopsis
></term>
<listitem
><para
>Erim aynı satırda başlıyor ve bitiyorsa <literal
>true</literal
> döndürür; &ie;, <replaceable
>Range.start.line == Range.end.line</replaceable
> ise. </para>
<para
>Eklendiği sürüm: &kde; 4.9 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool Range.equals(<parameter
>Range <replaceable
>diğer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Eğer bu erim ve <replaceable
>diğer</replaceable
> erimi eşitse <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String Range.toString();
</synopsis
></term>
<listitem
><para
>Erimi, <quote
><literal
>Cursor(satır, sütun)</literal
></quote
> biçiminde bir dizi olarak döndürür. </para
></listitem>
</varlistentry
></variablelist>

</sect4>
</sect3>

<sect3 id="dev-scripting-api-global">
<title
>Global İşlevler</title>
<para
>Bu bölüm, tüm global işlevleri listeler.</para>


<sect4 id="dev-scripting-api-includes">
<title
>Dosyaları Okumak ve İçermek</title>

<variablelist
><varlistentry>
<term
><synopsis
>String read(<parameter
>String <replaceable
>dosya</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>dosya</replaceable
>’yı <literal
>katepart5/script/files</literal
> dizinine göreceli olarak arar ve içeriğini bir dizi olarak döndürür. </para
></listitem>
</varlistentry
></variablelist>

<variablelist
><varlistentry>
<term
><synopsis
>void require(<parameter
>String <replaceable
>dosya</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>dosya</replaceable
>’yı <literal
>katepart5/script/libraries</literal
> dizinine göreceli olarak arar ve onu değerlendirir. <literal
>require</literal
>, aynı <replaceable
>dosya</replaceable
>’nın birden çok içerilmesine karşı korumalıdır. </para>
<para
>Eklendiği sürüm: &kde; 4.10 </para>
</listitem>
</varlistentry
></variablelist>

</sect4>

<sect4 id="dev-scripting-api-debug">
<title
>Hata Ayıklama</title>

<variablelist
><varlistentry>
<term
><synopsis
>void debug(<parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>metin</replaceable
>’i, uygulamayı başlatan konsolda <literal
>stdout</literal
>’a yazdırır. </para
></listitem>
</varlistentry
></variablelist>

</sect4>

<sect4 id="dev-scripting-api-i18n">
<title
>Çeviri</title>

<para
>Tam yerelleştirmeyi desteklemek için betiklerdeki dizileri çevirmek üzere birkaç işlev bulunur; bunlar, <literal
>i18n</literal
>, <literal
>i18nc</literal
>, <literal
>i18np</literal
> ve <literal
>i18ncp</literal
> olarak geçer. Bunlar kesin olarak <ulink url="https://techbase.kde.org/Development/Tutorials/Localization/i18n"
> &kde;’nin çeviri işlevleri</ulink
> gibi davranırlar. </para>

<para
>Çeviri işlevleri, sarılmış dizileri &kde;’nin çeviri sistemi aracılığıyla uygulamada kullanılan dile çevirir. Resmi &kappname; kaynaklarında geliştirilen komut dosyalarındaki dizeler otomatik olarak çıkarılır ve çevrilebilir. Başka bir deyişle, bir &kappname; geliştiricisi olarak ileti çıkarma ve çeviri ile uğraşmanıza gerek yoktur. Bununla birlikte, çevirinin yalnızca &kde; altyapısı içinde çalıştığını, yani &kde; dışında geliştirilen 3. taraf betiklerdeki yeni dizilerin çevrilmediğini de belirtmek gerekir. Bu nedenle, doğru çevirinin olabilmesi için lütfen betiklerinizle &kate;’e katkıda bulunmayı düşünün. </para>

<variablelist
><varlistentry>
<term
><synopsis
>void i18n(<parameter
>String <replaceable
>metin</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, …);
</synopsis
></term>
<listitem
><para
><replaceable
>metin</replaceable
>’i, uygulama tarafından kullanılan dile çevirir. <replaceable
>arg1</replaceable
>, …, argümanları isteğe bağlıdır ve <literal
>%1</literal
>, <literal
>%2</literal
>, gibi yer tutucuları değiştirmede kullanılırlar.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18nc(<parameter
>String <replaceable
>bağlam</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, …);
</synopsis
></term>
<listitem
><para
><replaceable
>metin</replaceable
>’i, uygulama tarafından kullanılan dile çevirir. Ek olarak, <replaceable
>bağlam</replaceable
> metni çevirmenlere görünür, böylece daha iyi bir çeviri sağlayabilirler. <replaceable
>arg1</replaceable
>, …, argümanları isteğe bağlıdır ve <literal
>%1</literal
>, <literal
>%2</literal
>, gibi yer tutucuları değiştirmede kullanılırlar.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18np(<parameter
>String <replaceable
>tekil</replaceable
></parameter
>, <parameter
>String <replaceable
>çoğul</replaceable
></parameter
>, <parameter
>int <replaceable
>sayı</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, …);
</synopsis
></term>
<listitem
><para
><replaceable
>tekil</replaceable
> veya <replaceable
>çoğul</replaceable
> varyantları, verilen <replaceable
>sayı</replaceable
>’ya bağlı olarak uygulama tarafından kullanılan dile çevirir. <replaceable
>arg1</replaceable
>, …, argümanları isteğe bağlıdır ve <literal
>%1</literal
>, <literal
>%2</literal
>, gibi yer tutucuları değiştirmede kullanılırlar.</para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void i18ncp(<parameter
>String <replaceable
>bağlam</replaceable
></parameter
>, <parameter
>String <replaceable
>tekil</replaceable
></parameter
>, <parameter
>String <replaceable
>çoğul</replaceable
></parameter
>, <parameter
>int <replaceable
>sayı</replaceable
></parameter
>, <replaceable
>arg1</replaceable
>, …);
</synopsis
></term>
<listitem
><para
><replaceable
>tekil</replaceable
> veya <replaceable
>çoğul</replaceable
> varyantları, verilen <replaceable
>sayı</replaceable
>’ya bağlı olarak uygulama tarafından kullanılan dile çevirir. Ek olarak, <replaceable
>bağlam</replaceable
> metni çevirmenlere görünür, böylece daha iyi bir çeviri sağlayabilirler. <replaceable
>arg1</replaceable
>, …, argümanları isteğe bağlıdır ve <literal
>%1</literal
>, <literal
>%2</literal
>, gibi yer tutucuları değiştirmede kullanılırlar.</para
></listitem>
</varlistentry
></variablelist>

</sect4>
</sect3>

<sect3 id="dev-scripting-api-view">
<title
>Görünüm API’si</title>
<para
>Ne zaman bir betik yürütülürse geçerli etkin düzenleyici görünümünü temsil eden bir <quote
><literal
>view</literal
></quote
> global değişkeni vardır. Tüm kullanılabilir View işlevleri aşağıda listelenmiştir. <variablelist>

<varlistentry>
<term
><synopsis
><function
>void view.copy()</function
>
</synopsis
></term>
<listitem>
<para
><userinput
>[ ] Metin seçilmeden çağrılırsa geçerli satırı kes/kopyala</userinput
> ayarlıysa bir seçim varken seçimi kopyala, aksi takdirde geçerli satırı kopyala.</para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.79</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
><function
>void view.cut()</function
>
</synopsis
></term>
<listitem>
<para
><userinput
>[ ] Metin seçilmeden çağrılırsa geçerli satırı kes/kopyala</userinput
> ayarlıysa bir seçim varken seçimi kes, aksi takdirde geçerli satırı kes.</para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.79</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
><function
>void view.paste()</function
>
</synopsis
></term>
<listitem>
<para
>Pano içeriğini yapıştır.</para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.79</para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
><function
>Cursor view.cursorPosition()</function
>
</synopsis
></term>
<listitem
><para
>Görünümdeki geçerli imleç konumunu döndürür.</para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setCursorPosition(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
void view.setCursorPosition(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geçerli imleç konumunu ya (satır, sütun) ya da verilen imlece ayarla. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor view.virtualCursorPosition();
</synopsis
></term>
<listitem
><para
>Geçerli sekme genişliğine bağlı olarak her sekmenin karşılık gelen boşluk miktarını saydığı sanal imleç konumunu döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setVirtualCursorPosition(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
void view.setVirtualCursorPosition(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geçerli sanal imleç konumunu (satır, sütun) veya verilen imleç olarak ayarlayın. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String view.selectedText();
</synopsis
></term>
<listitem
><para
>Seçilen metni döndürür. Hiçbir metin seçilmezse döndürülen dizi boştur. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool view.hasSelection();
</synopsis
></term>
<listitem
><para
>Görünümde seçili metin varsa <literal
>true</literal
> değerini, aksi takdirde <literal
>false</literal
> değerini döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range view.selection();
</synopsis
></term>
<listitem
><para
>Seçili metin erimini döndürür. Seçili metin yoksa döndürülen erim geçersizdir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setSelection(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Seçili metni verilen erime ayarla. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.removeSelectedText();
</synopsis
></term>
<listitem
><para
>Seçili metni kaldır. Görünümde seçili metin yoksa bu hiçbir şey yapmaz. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.selectAll();
</synopsis
></term>
<listitem
><para
>Belgedeki tüm metni seçer. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.clearSelection();
</synopsis
></term>
<listitem
><para
>Metni kaldırmadan metin seçimini temizler. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.setBlockSelection(bool on);
</synopsis
></term>
<listitem
><para
>Blok seçim kipini açar/kapatır. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>bool view.blockSelection();
</synopsis
></term>
<listitem
><para
>Blok seçim kipi açıksa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void view.align(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Geçerli girintileme ayarlarına göre <replaceable
>erim</replaceable
>’i düzgünce yeniden girintile. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void view.alignOn(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>, <parameter
>String <replaceable
>dizgi</replaceable
> = &quot;&quot;</parameter
>);
</synopsis
></term>
<listitem
><para
>Düzenli ifade <replaceable
>dizgi</replaceable
> verdiği sütundaki <replaceable
>erim</replaceable
>’deki satırları hizalar. Boş bir <replaceable
>dizgi</replaceable
> ile öntanımlı olarak ilk boş olmayan karaktere hizalanır. Dizginin bir yakalaması varsa yakalanan eşleşmeye girintili olacaktır. </para>
<para
><emphasis
>Örnekler:</emphasis
></para>
<para
><literal
>view.alignOn(document.documentRange(), '-');</literal
>, tümünü aynı sütunda hizalamak için her satırın ilk <literal
>-</literal
> satırından önce boşluk ekler.</para>
<para
><literal
>view.alignOn(document.documentRange(), ':\\s+(.)');</literal
>, tümünü aynı sütunda hizalamak için iki nokta üst üsteden sonra oluşan ilk boş olmayan karakterden önce boşluk ekler.</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>object view.executeCommand(<parameter
>String <replaceable
>komut</replaceable
></parameter
>,
                           <parameter
>String <replaceable
>argümanlar</replaceable
></parameter
>,
                           <parameter
>Range <replaceable
>erim</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>komut</replaceable
> <link linkend="advanced-editing-tools-commandline"
>komut satırı komutunu</link
> isteğe bağlı <replaceable
>argümanlar</replaceable
> ve <replaceable
>erim</replaceable
> ile yürütür. Döndürülen <replaceable
>nesne</replaceable
>’nin <replaceable
>komut</replaceable
> yürütmesinin başarılı olup olmadığını söyleyen bir <replaceable
>object.ok</replaceable
> Boole değeri vardır. Bir hata durumunda, <replaceable
>object.status</replaceable
> bir hata iletisi içerir. </para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.50</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>Range view.searchText(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>,
                      <parameter
>String <replaceable
>dizgi</replaceable
></parameter
>,
                      <parameter
>bool <replaceable
>backwards</replaceable
> = false</parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>erim</replaceable
>’de <replaceable
>dizgi</replaceable
>’nin ilk oluşunu ara ve eşleşen erimi döndür. İsteğe bağlı Boole değeri <replaceable
>backwards</replaceable
> <literal
>true</literal
> olarak ayarlanırsa arama geriye doğru yapılır. </para>
<para
><replaceable
>dizgi</replaceable
>, <replaceable
>erim</replaceable
>’de bulunamazsa döndürülen erim geçersizdir (bkz. Range.isValid()). </para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.97</para>
</listitem>
</varlistentry>

</variablelist>
</para>
</sect3>

<sect3 id="dev-scripting-api-document">
<title
>Belge API’si</title>
<para
>Ne zaman bir betik yürütülürse geçerli etkin belgeyi temsil eden bir <quote
><literal
>document</literal
></quote
> global değişkeni vardır. Tüm kullanılabilir Document işlevlerinin bir listesini aşağıda bulabilirsiniz. <variablelist>

<varlistentry>
<term
><synopsis
>String document.fileName();
</synopsis
></term>
<listitem
><para
>Kaydedilmemiş metin arabellekleri için belgenin dosya adını veya boş bir diziyi döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.url();
</synopsis
></term>
<listitem
><para
>Belgenin tam URL’sini veya kaydedilmemiş metin arabellekleri için boş bir diziyi döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.mimeType();
</synopsis
></term>
<listitem
><para
>Belgenin &MIME; türünü veya uygun &MIME; türü bulunamazsa <literal
>application/octet-stream</literal
> &MIME; türünü döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.encoding();
</synopsis
></term>
<listitem
><para
>Dosyayı kaydetmek için kullanılan geçerli kodlamayı döndürür. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>String document.highlightingMode();
</synopsis
></term>
<listitem
><para
>Tüm belge için kullanılan global vurgulama kipini döndürür. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>String document.highlightingModeAt(<parameter
>Cursor <replaceable
>konum</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Belgedeki belirli konumda kullanılan vurgulama kipini döndürür. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>Array document.embeddedHighlightingModes();
</synopsis
></term>
<listitem
><para
>Bu belgeye gömülü bir dizi vurgulama modunu döndürür. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>bool document.isModified();
</synopsis
></term>
<listitem
><para
>Belgede kaydedilmemiş değişiklikler varsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.text();
</synopsis
></term>
<listitem
><para
>Belgenin tüm içeriğini tek bir metin dizisinde döndürür. Yeni satırlar, <quote
><literal
>\n</literal
></quote
> yenisatır karakteriyle işaretlenir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.text(<parameter
>int <replaceable
>satırdan</replaceable
></parameter
>, <parameter
>int <replaceable
>sütundan</replaceable
></parameter
>, <parameter
>int <replaceable
>satıra</replaceable
></parameter
>, <parameter
>int <replaceable
>sütuna</replaceable
></parameter
>);
String document.text(<parameter
>Cursor <replaceable
>şuradan</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>şuraya</replaceable
></parameter
>);
String document.text(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen erimdeki metni döndürür. Kaynak kodunun daha iyi okunabilmesi için imleç ve aralık tabanlı sürümün kullanılması önerilir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.line(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen metin satırını dizi olarak döndürür. İstenen satır erim dışıysa dizi boştur. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.wordAt(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
String document.wordAt(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki sözcüğü döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term>
<synopsis
>Range document.wordRangeAt(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
Range document.wordRangeAt(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis>
</term>
<listitem
><para
>Verilen imleç konumundaki sözcüğün erimini döndürür. Metin konumu bir satırın sonundan sonraysa döndürülen erim geçersizdir (bkz. Range.isValid()). Verilen imleçte sözcük yoksa boş bir erim döndürülür. </para>
<para
>Eklendiği sürüm: &kde; 4.9 </para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.charAt(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
String document.charAt(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki karakteri döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.firstChar(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>satırdaki</replaceable
> boşluk olmayan ilk karakteri döndürür. İlk karakter 0 sütunundadır. Satır boşsa veya yalnızca boşluk karakterleri içeriyorsa döndürülen dizi boştur. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.lastChar(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>satırdaki</replaceable
> boşluk olmayan son karakteri döndürür. Satır boşsa veya yalnızca boşluk karakterleri içeriyorsa döndürülen dizi boştur. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isSpace(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isSpace(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki karakter boşluksa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.matchesAt(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>);
bool document.matchesAt(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>metin</replaceable
> ilgili imleç konumunda eşleşiyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.startsWith(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>, <parameter
>bool <replaceable
>skipWhiteSpaces</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Satır <replaceable
>metin</replaceable
> ile başlıyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. <replaceable
>skipWhiteSpaces</replaceable
> argümanı, baştaki boşlukların yok sayılıp sayılmayacağını denetler. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.endsWith(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>, <parameter
>bool <replaceable
>skipWhiteSpaces</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Satır <replaceable
>metin</replaceable
> ile bitiyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. <replaceable
>skipWhiteSpaces</replaceable
> argümanı, sondaki boşlukların yok sayılıp sayılmayacağını denetler. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.setText(<parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Tüm belge metnini ayarlar. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.clear();
</synopsis
></term>
<listitem
><para
>Belgedeki tüm metni kaldırır. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.truncate(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.truncate(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen satırı verilen sütun veya imleç konumunda keser. Başarı durumunda <literal
>true</literal
>, verilen satır belge aralığının parçası değilse <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.insertText(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>);
bool document.insertText(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumunda <replaceable
>metin</replaceable
> metnini ekler. Başarı durumunda <literal
>true</literal
>, belge saltokunur kipteyse <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.removeText(<parameter
>int <replaceable
>satırdan</replaceable
></parameter
>, <parameter
>int <replaceable
>sütundan</replaceable
></parameter
>, <parameter
>int <replaceable
>satıra</replaceable
></parameter
>, <parameter
>int <replaceable
>sütuna</replaceable
></parameter
>);
bool document.removeText(<parameter
>Cursor <replaceable
>şuradan</replaceable
></parameter
>, <parameter
>Cursor <replaceable
>şuraya</replaceable
></parameter
>);
bool document.removeText(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen erimdeki metni kaldırır. Başarı durumunda <literal
>true</literal
>, belge saltokunur kipteyse <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.insertLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen satırda metin ekler. Başarı durumunda <literal
>true</literal
>, belge saltokunur kipteyse veya satır belge eriminde değilse <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.removeLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen metin satırını kaldırır. Başarı durumunda <literal
>true</literal
>, belge saltokunur kipteyse veya satır belge eriminde değilse <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.wrapLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.wrapLine(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumunda satırı kaydırır. Başarı durumunda <literal
>true</literal
>, aksi takdirde; örneğin, satır &lt; 0 ise <literal
>false</literal
> döndürür. </para>
<para
>Eklendiği sürüm: &kde; 4.9 </para>
</listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.joinLines(<parameter
>int <replaceable
>başlangıçSatırı</replaceable
></parameter
>, <parameter
>int <replaceable
>bitişSatırı</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>başlangıçSatırı</replaceable
> konumundan <replaceable
>bitişSatırı</replaceable
> konumuna kadar olan satırları birbirine katar. İki birbirini izleyen metin satırı her zaman bir boşluk ile ayrılır. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lines();
</synopsis
></term>
<listitem
><para
>Belgedeki satır sayısını döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isLineModified(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>satır</replaceable
> şu anda kaydedilmemiş veri içeriyorsa <literal
>true</literal
> döndürür. </para>
<para
>Eklendiği sürüm: &kde; 5.0 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isLineSaved(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>line</replaceable
> değiştirildi ve belge kaydedildiyse <literal
>true</literal
> döndürür. Böylece, satırda şu anda kaydedilmeyen bir veri kalmamış olur. </para>
<para
>Eklendiği sürüm: &kde; 5.0 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isLineTouched(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>line</replaceable
> içinde şu anda kaydedilmemiş veri varsa veya daha önce değiştirildiyse <literal
>true</literal
> döndürür. </para>
<para
>Eklendiği sürüm: &kde; 5.0 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.findTouchedLine(<parameter
>int <replaceable
>başlangıçSatırı</replaceable
></parameter
>, <parameter
>bool <replaceable
>aşağı</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>line</replaceable
> konumundan başlayan sonraki dokunulmuş satırı arar. Arama, <replaceable
>down</replaceable
> içinde belirtilen yöne göre aşağı veya yukarı doğru yapılır. </para>
<para
>Eklendiği sürüm: &kde; 5.0 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.length();
</synopsis
></term>
<listitem
><para
>Belgedeki karakter sayısını döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lineLength(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>satır</replaceable
>’ın uzunluğunu döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.editBegin();
</synopsis
></term>
<listitem
><para
>Geri Al/Yinele gruplaması için bir düzenleme grubu başlatır. Hem <function
>editEnd()</function
> hem de <function
>editBegin()</function
> işlevlerini aynı sayıda çağırdığınızdan emin olun. <function
>editBegin()</function
> işlevini çağırmak içsel olarak bir başvuru sayacı kullanır; demeli, bu çağrı iç içe geçirilebilir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.editEnd();
</synopsis
></term>
<listitem
><para
>Bir düzenleme grubunu sonlandırır. <function
>editEnd()</function
> işlevinin son çağrısı (&ie; <function
>editBegin()</function
> işlevinin ilk çağrısı için olan) düzenleme adımını bitirir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.firstColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>satır</replaceable
>’daki ilk boşluk olmayan sütunu döndürür. Satırda yalnızca boşluklar varsa <literal
>-1</literal
> döndürülür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lastColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>satır</replaceable
>’daki son boşluk olmayan sütunu döndürür. Satırda yalnızca boşluklar varsa <literal
>-1</literal
> döndürülür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.prevNonSpaceColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
int document.prevNonSpaceColumn(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundan başlayıp geriye doğru arama yaparak boşluk olmayan karakter içeren sütunu döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.nextNonSpaceColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
int document.nextNonSpaceColumn(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundan başlayıp ileriye doğru arama yaparak boşluk olmayan karakter içeren sütunu döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.prevNonEmptyLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundan başlayıp geriye doğru arama yaparak sonraki boş olmayan satırı döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.nextNonEmptyLine(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundan başlayıp ileriye doğru arama yaparak sonraki boş olmayan satırı döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isInWord(<parameter
>String <replaceable
>karakter</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>öznitelik</replaceable
>’i içeren <replaceable
>karakter</replaceable
> bir sözcüğün parçası olabiliyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.canBreakAt(<parameter
>String <replaceable
>karakter</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <replaceable
>öznitelik</replaceable
>’i içeren <replaceable
>karakter</replaceable
> bir satırı kaydırmak için uygunsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.canComment(<parameter
>int <replaceable
>başlangıçÖzniteliği</replaceable
></parameter
>, <parameter
>int <replaceable
>bitişÖzniteliği</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen özniteliklerle başlayan ve biten bir erim, yorum olarak imlenebiliyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentMarker(<parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen bir <replaceable
>öznitelik</replaceable
> için tek satırlık yorumlar için olan yorum imleyicisini döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentStart(<parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen bir <replaceable
>öznitelik</replaceable
> için çok satırlık yorum başlangıçı için olan yorum imleyicisini döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.commentEnd(<parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen bir <replaceable
>öznitelik</replaceable
> için çok satırlık yorum bitişi için olan yorum imleyicisini döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Range document.documentRange();
</synopsis
></term>
<listitem
><para
>Tüm belgeyi kapsayan bir erim döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor documentEnd();
</synopsis
></term>
<listitem
><para
>Belgedeki son satırın son sütununda konumlanan imleci döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool isValidTextPosition(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool isValidTextPosition(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumu geçerli bir metin konumundaysa <literal
>true</literal
> değerini döndürür. Bir metin konumu yalnızca geçerli bir satırın başında, ortasında veya sonunda bulunuyorsa geçerlidir. Ayrıca bir metin konumu, bir Unicode vekilinde bulunuyorsa geçersizdir. </para
><para
>Eklendiği sürüm: &kde; 5.0 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.attribute(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
int document.attribute(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki özniteliği döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isAttribute(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
bool document.isAttribute(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki öznitelik <replaceable
>attribute</replaceable
> ile eşitse <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.attributeName(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
String document.attributeName(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Öznitelik adını insanlar tarafından okunabilir metin olarak döndürür. Bu, sözdizim vurgulama dosyalarındaki <literal
>itemData</literal
> adına eşittir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isAttributeName(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>String <replaceable
>ad</replaceable
></parameter
>);
bool document.isAttributeName(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>String <replaceable
>ad</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Belirli bir imleç konumundaki öznitelik adı verilen <replaceable
>ad</replaceable
> ile eşleşiyorsa <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>String document.variable(<parameter
>String <replaceable
>anahtar</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İstenen belge değişkeni <replaceable
>anahtar</replaceable
>’ın değerini döndürür. Belge değişkeni yoksa dönüş değeri boş bir dizidir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>void document.setVariable(<parameter
>String <replaceable
>anahtar</replaceable
></parameter
>, <parameter
>String <replaceable
>değer</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İstenen belge değişkeni <replaceable
>anahtar</replaceable
>’ın değerini ayarla. </para>
<para
>Ayrıca bakınız: <link linkend="config-variables"
>Kate belge değişkenleri</link
> </para>
<para
>Eklendiği sürüm: &kde; 4.8 </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.firstVirtualColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen satırdaki boşluk olmayan ilk karakterin sanal sütununu veya satır boşsa veya yalnızca boşluk karakterleri içeriyorsa <literal
>-1</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.lastVirtualColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen satırdaki boşluk olmayan son karakterin sanal sütununu veya satır boşsa veya yalnızca boşluk karakterleri içeriyorsa <literal
>-1</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.toVirtualColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
int document.toVirtualColumn(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
Cursor document.toVirtualCursor(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen <quote
>gerçek</quote
> imleç konumunu, bir int veya Cursor nesnesi döndürerek sanal bir imleç konumuna dönüştürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.fromVirtualColumn(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sanalSütun</replaceable
></parameter
>);
int document.fromVirtualColumn(<parameter
>Cursor <replaceable
>sanalİmleç</replaceable
></parameter
>);
Cursor document.fromVirtualCursor(<parameter
>Cursor <replaceable
>sanalİmleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen sanal imleç konumunu, bir int veya Cursor nesnesi döndürerek <quote
>gerçek</quote
> imleç konumuna dönüştürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor document.anchor(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>Char <replaceable
>karakter</replaceable
></parameter
>);
Cursor document.anchor(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>Char <replaceable
>karakter</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleçten başlayarak verilen karakteri geriye doğru arar. Örnek olarak, eğer “(” karakter olarak iletilirse bu işlev “(” açılışının konumunu döndürecektir. Bu başvuru sayımı, yani diğer “(…)” yok sayılır. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>Cursor document.rfind(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
> = -1</parameter
>);
Cursor document.rfind(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>, <parameter
>String <replaceable
>metin</replaceable
></parameter
>, <parameter
>int <replaceable
>öznitelik</replaceable
> = -1</parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen metni uygun <replaceable
>öznitelik</replaceable
> ile geriye doğru arayarak bulun. Argüman <replaceable
>özniteliği</replaceable
>, <literal
>-1</literal
> olarak ayarlanmışsa yok sayılır. Metin bulunamadığında döndürülen imleç geçersizdir. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>int document.defStyleNum(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
int document.defStyleNum(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumunda kullanılan öntanımlı biçemi döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isCode(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isCode(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Verilen imleç konumundaki öznitelik aşağıdaki biçemlerin tümüne eşit değilse <literal
>true</literal
> değerini döndürür: <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
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isComment(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumundaki karakterin özniteliği <literal
>dsComment</literal
> ise <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isString(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isString(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumundaki karakterin özniteliği <literal
>dsString</literal
> ise <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isRegionMarker(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isRegionMarker(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumundaki karakterin özniteliği <literal
>dsRegionMarker</literal
> ise <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isChar(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isChar(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumundaki karakterin özniteliği <literal
>dsChar</literal
> ise <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>


<varlistentry>
<term
><synopsis
>bool document.isOthers(<parameter
>int <replaceable
>satır</replaceable
></parameter
>, <parameter
>int <replaceable
>sütun</replaceable
></parameter
>);
bool document.isOthers(<parameter
>Cursor <replaceable
>imleç</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>İmleç konumundaki karakterin özniteliği <literal
>dsOthers</literal
> ise <literal
>true</literal
>, aksi takdirde <literal
>false</literal
> döndürür. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void document.indent(<parameter
>Range <replaceable
>erim</replaceable
></parameter
>, <parameter
>int <replaceable
>değişiklik</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
><replaceable
>erim</replaceable
>’deki tüm satırları <replaceable
>değişiklik</replaceable
> sekme kadar veya <replaceable
>değişiklik</replaceable
> kez girintiler. <literal
>tabSize</literal
> boşlukları kullanıcı tercihlerine bağlıdır. <replaceable
>değişiklik</replaceable
> parametresi negatif olabilir. </para
></listitem>
</varlistentry>

</variablelist>
</para>

</sect3>

<sect3 id="dev-scripting-api-editor">
<title
>Düzenleyici API’si</title>
<para
>Belge ve görünüm API’sine ek olarak, genel düzenleyici betiği oluşturma işlevlerine yönelik işlevler sağlayan bir genel düzenleyici API’si vardır. <variablelist>

<varlistentry>
<term
><synopsis
>String editor.clipboardText();
</synopsis
></term>
<listitem
><para
>Şu anda global panoda bulunan metni döndürür. </para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.50</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>String editor.clipboardHistory();
</synopsis
></term>
<listitem
><para
>Düzenleyici, en fazla 10 pano girdisini içeren bir pano geçmişini tutar. Bu işlev, şu anda pano geçmişinde bulunan tüm girdileri döndürür. </para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.50</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><synopsis
>void editor.setClipboardText(<parameter
>String <replaceable
>metin</replaceable
></parameter
>);
</synopsis
></term>
<listitem
><para
>Panonun içeriğini <replaceable
>metin</replaceable
> olarak ayarlar. <replaceable
>metin</replaceable
>, pano geçmişine eklenir. </para>
<para
>Eklendiği sürüm: &kde-frameworks; 5.50</para>
</listitem>
</varlistentry>

</variablelist>
</para>
</sect3>
</sect2>

</sect1>

</chapter>
