You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tde-i18n/tde-i18n-sk/docs/tdebase/kate/highlighting.docbook

138 lines
17 KiB

<appendix id="highlight">
<title>Zvýrazňovanie syntaxu</title>
<sect1 id="highlight-overview">
<title>Prehľad</title>
<para>Zvýrazňovanie syntaxu spôsobuje, že editor automaticky zobrazuje text v rôznych štýloch a farbách v závislosti na jeho úlohe v súbore. V zdrojovom kóde programu môžu byť príkazy vypísané tučné, dátové typy a komentáre môžu používať inú farbu než zvyšok textu. Tým sa výrazne zlepší čitateľnosť textu a to pomáha, aby bol autor výkonnejší.</para>
<mediaobject> <imageobject><imagedata format="PNG" fileref="highlighted.png"/></imageobject> <textobject><phrase>Funkcia v jazyku Perl so zvýraznením.</phrase></textobject> <caption><para>Funkcia v jazyku Perl so zvýraznením.</para> </caption> </mediaobject>
<mediaobject> <imageobject><imagedata format="PNG" fileref="unhighlighted.png"/></imageobject> <textobject><phrase>Rovnaká funkcia Perl bez zvýraznenia.</phrase></textobject> <caption><para>Rovnaká funkcia Perl bez zvýraznenia.</para></caption> </mediaobject>
<para>Dva príklady. Ktorý sa číta lepšie?</para>
<para>&kate; obsahuje flexibilný, konfigurovateľný a výkonný systém pre zvýrazňovanie syntaxu a štandardná distribúcia poskytuje definície pre veľké množstvo programovacích jazykov, jazykov markup, skriptovacích jazykov a iných textových formátov. Navyše môžete definovať svoje vlastné definície pomocou jednoduchých súborov &XML;.</para>
<para>&kate; automaticky určuje správne pravidlá pri otvorení súboru na základe jeho typu &MIME;. Typ súboru je určený podľa prípony alebo, ak žiadnu nemá, podľa jeho obsahu. V prípade, že sa nepodarí správne určenie, môžete správne pravidlá nastaviť pomocou menu <menuchoice><guimenu>Dokumenty</guimenu><guisubmenu>Zvýrazňovací mód</guisubmenu></menuchoice>.</para>
<para>Štýly a farby použité v každej definícii zvýraznenia spolu s typmi &MIME;, pre ktoré by sa mala definícia použiť, je možné nastaviť pomocou stránky <link linkend="config-dialog-editor-hl">Zvýraznenie</link> v <link linkend="config-dialog">dialógu nastavenia</link>.</para>
<note> <para>Zvýraznenie syntaxu má zlepšiť čitateľnosť správneho textu, ale nemôžete si myslieť, že funguje ako overenie vášho textu. Označenie textu môže byť v závislosti na používanom formáte dosť zložité a v niektorých prípadoch budú autori pravidiel radi, ak dosiahnu 98% presnosť označenia. Aby ste ale narazili na nesprávne 2%, budete musieť mať asi dosť šťastia.</para> </note>
<tip> <para>Môžete si stiahnuť aktualizované alebo nové definície zvýrazňovania z webovej stránky &kate; kliknutím na tlačidlo <guibutton>Stiahnutie</guibutton> v <link linkend="config-dialog-editor-hl">stránke Zvýraznenie</link> v <link linkend="config-dialog">dialógu nastavenia</link>.</para> </tip>
</sect1>
<sect1 id="katehighlight-system">
<title>Systém zvýrazňovania &kate;</title>
<para>Táto kapitola detailné popisuje mechanizmus zvýrazňovania syntaxu &kate; Má zmysel v prípade, že vás to zaujíma, alebo chcete napísať alebo upraviť definíciu zvýrazňovania.</para>
<sect2 id="katehighlight-howitworks">
<title>Ako to funguje</title>
<para>Vždy, ked otvoríte súbor, jednou z prvých vecí, ktoré &kate; urobí je, že detekuje, ktorú definíciu zvýrazňovania má použiť pre tento súbor. Počas čítania obsahu súboru a ked píšete, systém zvýrazňovania analyzuje text pomocou pravidiel definovaných v definícii vybraného zvýrazňovania a označovať časti textu v závislosti na jeho kontexte.</para>
<para>Ak niečo napíšete do dokumentu, nový text sa analyzuje a označuje za behu, takže ak zmažete znak, ktorý označuje začiatok alebo koniec kontextu, štýl okolného textu sa zmení podľa toho.</para>
<para>Definície syntaxu používané systémom v &kate; sú súbory &XML; obsahujúce <itemizedlist> <listitem><para>Pravidlá pre určenie role textu, organizované do kontextových blokov</para></listitem> <listitem><para>Zoznamy kľúčových slov</para></listitem> <listitem><para>Definície položiek štýlu</para></listitem> </itemizedlist> </para>
<para>Pri analýze textu sa vyhodnocujú pravidlá pre detekciu v poradí, v ktorom sú definované a ak začiatok aktuálneho reťazca odpovedá pravidlu, použije sa odpovedajúci kontext. Začiatočný bod v texte sa presunie na koncový bod, kam až pravidlo odpovedá a začnú sa pravidlá vyhodnocovať znovu.</para>
</sect2>
<sect2 id="highlight-system-rules">
<title>Pravidlá</title>
<para>Detekčné pravidlá sú jadrom systému zvýrazňovania. Pravidlo je reťazec, znak alebo <link linkend="regular-expressions">regulárny výraz</link> oproti ktorému sa text porovnáva. Obsahuje informácie o tom, ktorý štýl sa má použiť pre nájdený text. Môže prepnúť kontext bud na nejaký priamo určený alebo na predchádzajúci, ktorý sa používal predtým.</para>
<para>Pravidlá sú utriedené v skupinách kontextu. Skupina kontextu sa používa pre hlavné textové koncepty formátu, napríklad reťazce alebo komentáre v programovom kóde. To zabezpečí, že systém zvýrazňovania nemusí prehľadávať všetky pravidlá ak to nie je nutné a že niektoré sekvencie znakov v texte môžu byť chápané rôzne v rôznych kontextoch. </para>
</sect2>
<sect2 id="highlight-context-styles-keywords">
<title>Kontextové štýly a kľúčové slová</title>
<para>V niektorých programovacích jazykoch sa celé čísla v kompilátore (programe, ktorý prevádza programovací jazyk na spustiteľný program) spracovávajú inak ako reálne a môžu niektoré znaky chápať špeciálne, ak sú napríklad v úvodzovkách. V takých prípadoch má zmysel ich zobrazenie iným spôsobom tak, aby ich bolo ľahké nájsť. Takže aj ked nereprezentujú špeciálne kontexty, môže ich zvýrazňovací systém tak chápať a označiť inak.</para>
<para>Definície syntaxu môžu obsahovať toľko štýlov, koľko ich je treba.</para>
<para>Vo veľa formátoch sú zoznamy slov, ktoré reprezentujú špeciálne koncepty. Napríklad programovacie jazyky obsahujú koncept príkazov, koncept mien datových typov a koncept zabudovaných funkcií. Systém zvýrazňovania &kate; dokáže takéto zoznamy detekovať a označiť slová textu pre zvýraznenie konceptov textových formátov.</para>
</sect2>
<sect2 id="kate-highlight-system-default-styles">
<title>Štandardné štýly</title>
<para>Ak otvoríte zdrojový kód C++, &Java; alebo dokument <acronym>HTML</acronym> v &kate;, uvidíte, že aj ked sú označené iné časti textu, použijú sa rovnaké farby. To preto, lebo &kate; má preddefinované štandardné štýly, ktoré sa využívajú v jednotlivých definíciách.</para>
<para>Preto je jednoduché rozpoznať podobné koncepty v rôznych formátoch. Napríklad komentáre existujú skoro vo všetkých programovacích, skriptovacích a markup jazykoch. A ak sú vo všetkých jazykoch zobrazené rovnakým štýlom, nemusíte sa nad nimi vôbec zamýšľať.</para>
<tip> <para>Všetky štýly v definícii používajú jeden zo štandardných štýlov. Niektoré definície používajú viac štýlov než koľko je štandardných, takže ak používate nejaký formát často, asi sa vyplatí v dialógu nastavenia overiť, že sa pre rovnaké koncepty používa rovnaký štýl. Napríklad, existuje iba jeden štandardný štýl pre reťazce, ale v programovacom jazyku perl existujú dva typ reťazcov. Preto má zmysel, aby zvýraznenie pre ne používalo trochu iné štýly.</para> </tip>
</sect2>
</sect1>
<sect1 id="katehighlight-xml-format">
<title>&XML; formát definície zvýrazňovania</title>
<sect2>
<title>Prehľad</title>
<para>Táto kapitola obsahuje prehľad formátu pre definíciu zvýrazňovania. Popisuje hlavné časti, ich význam a použitie. Detailne popisuje pravidlá pre detekciu.</para>
<para>Formálna definície, čiže <acronym>DTD</acronym> je uložená v súbore <filename>language.dtd</filename>, ktorý by mal byť nainštalovaný na vašom systéme v priečinku <filename>$<envar>TDEDIR</envar>/share/apps/kate/syntax</filename>.</para>
<variablelist> <title>Hlavné časti definície zvýrazňovania v &kate;</title> <varlistentry> <term>Časť General</term> <listitem> <para>Časť General obsahuje informácie o formáte komentárov popisovaného jazyka a definuje, či sa u kľúčových slov rozlišuje veľkosť písmen.</para> </listitem> </varlistentry> <varlistentry> <term>Highlighting</term> <listitem> <para>Časť Highlighting obsahuje všetky dáta potrebné pre analýzu a zobrazenie textu. To znamená:</para> <variablelist> <varlistentry> <term>ItemDatas</term> <listitem><para>Obsahuje elementy ItemData, každý definuje štýl.</para></listitem> </varlistentry> <varlistentry> <term>Zoznamy kľúčových slov</term> <listitem> <para>Každý zoznam má meno a môže obsahovať ľubovoľný počet položiek.</para> </listitem> </varlistentry> <varlistentry> <term>Contexts</term> <listitem> <para>Obsahuje kontexy, ktoré môžu tiež obsahovať pravidlá pre detekciu.</para> </listitem> </varlistentry> </variablelist> </listitem> </varlistentry> </variablelist>
</sect2>
</sect1>
<sect1 id="kate-highlight-rules-detailled">
<title>Pravidlá pre detekciu</title>
<para>Táto časť popisuje pravidlá pre detekciu syntaxe.</para>
<para>Každé pravidlo môže nájsť nula alebo viac znakov na začiatku reťazca, ktorý sa testuje. Ak pravidlo odpovedá, nájdeným znakom sa priradí štýl alebo <emphasis>atribút</emphasis> definovaný pravidlom a pravidlo môže požiadať o zmenu kontextu.</para>
<para>Atribúty <emphasis>attribute</emphasis> a <emphasis>context</emphasis> sú spoločné a pre všetky pravidlá.</para>
<para>Pravidlo vyzerá takto:</para>
<programlisting>&lt;RuleName attribute=&quot;(identifier)&quot; context=&quot;(identifikátor|poradie)&quot; [atribúty pravidla] /&gt;</programlisting>
<para><emphasis>attribute</emphasis> identifikuje štýl, ktorý sa má použiť pre nájdené znaky pomocou mena alebo indexu. <emphasis>context</emphasis> identifikuje kontext, ktorý sa odteraz bude používať.</para>
<para>Atribút <emphasis>attribute</emphasis> je možné identifikovať menom alebo indexom (počítaným od 0) v skupine ItemDatas.</para>
<para><emphasis>context</emphasis> je možné identifikovať pomocou:</para>
<itemizedlist> <listitem> <para><emphasis>identifikátor</emphasis>, momentálne to môže byť iba index (počítaný od 0) v skupine kontextov.</para> </listitem> <listitem> <para><emphasis>poradie</emphasis> povie systému, že má zostať v aktuálnom kontexte (<userinput>#stay</userinput>) alebo sa vrátiť do predchádzajúceho kontextu (<userinput>#pop</userinput>).</para> <para>Ak sa chcete vrátiť o viac ako jedej krok, kľúčové slovo #pop: <userinput>#pop#pop#pop</userinput></para> </listitem> </itemizedlist>
<para>Niektoré pravidlá môžu mať <emphasis>pod-pravidlá</emphasis>, ktoré sa potom vyhodnocujú iba v prípade, že sa rodičovské pravidlo aplikuje. Celý odpovedajúci reťazec sa nájde podľa atribútu v rodičovskom pravidle. Pod-pravidlá vyzerajú takto:</para>
<programlisting>
&lt;MenoPravidla (atribúty)&gt;
&lt;MenoPodPravidla (atribúty) /&gt;
...
&lt;/MenoPravidla&gt;
</programlisting>
<para>Atribúty špecifické pre jednotlivé pravidlá sú popísané v nasledujúcom zozname.</para>
<variablelist> <title>Detaily pravidiel</title> <varlistentry> <term>DetectChar</term> <listitem> <para>Detekuje jediný znak. Obvykle sa používa napríklad pre nájdenie konca reťazca v úvodzovkách.</para> <programlisting>&lt;DetectChar char=&quot;(znak)&quot; (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>char</userinput> definuje hľadaný znak.</para> </listitem> </varlistentry> <varlistentry> <term>Detect2Chars</term> <listitem> <para>Detekuje dva špecifické znaky v danom poradí.</para> <programlisting>&lt;Detect2Chars char=&quot;(znak)&quot; char1=&quot;(znak)&quot; (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>char</userinput> definuje prvý hľadaný znak a <userinput>char1</userinput> druhý.</para> </listitem> </varlistentry> <varlistentry> <term>AnyChar</term> <listitem> <para>Detekuje jeden znak zo skupiny zadaných znakov.</para> <programlisting>&lt;AnyChar String=&quot;(reťazec)&quot; (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>String</userinput> definuje množinu znakov.</para> </listitem> </varlistentry> <varlistentry> <term>StringDetect</term> <listitem> <para>Detekuje presný reťazec.</para> <programlisting>&lt;StringDetect String=&quot;(reťazec)&quot; [insensitive=&quot;TRUE|FALSE;&quot;] (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>String</userinput> definuje hľadaný reťazec. Atribút <userinput>insensitive</userinput> je štandardne <userinput>FALSE</userinput> a predáva sa funkcii pre porovnávanie reťazcov. Ak je hodnota <userinput>TURE</userinput>, použije sa porovnávanie bez rozlišovania veľkosti písmen.</para> </listitem> </varlistentry> <varlistentry> <term>RegExpr</term> <listitem> <para>Hľadá pomocou regulárneho výrazu.</para> <programlisting>&lt;RegExpr String=&quot;(reťazec)&quot; [insensitive=&quot;TRUE|FALSE;&quot;] [minimal=&quot;TRUE|FALSE&quot;] (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>String</userinput> definuje regulárny výraz.</para> <para><userinput>insensitive</userinput> je štandardne <userinput>FALSE</userinput> a predáva sa systému hľadania pomocou regulárnych výrazov.</para> <para><userinput>minimal</userinput> je štandardne <userinput>FALSE</userinput> a predáva sa systému hľadania pomocou regulárnych výrazov.</para> <para>Pretože sa pravidlá vždy hľadajú od začiatku aktuálneho reťazca, regulárny výraz začínajúci znakom <literal>^</literal> znamená pravidlo, ktoré má hľadať iba na začiatku riadku.</para> <para>Dalšie informácie o nich nájdete v kapitole <link linkend="regular-expressions">Regulárne výrazy</link>.</para> </listitem> </varlistentry> <varlistentry> <term>Keyword</term> <listitem> <para>Detekuje kľúčové slovo zo zadaného zoznamu.</para> <programlisting>&lt;keyword String=&quot;(meno zoznamu)&quot; (spoločné atribúty) /&gt;</programlisting> <para>Atribút <userinput>String</userinput> identifikuje zoznam kľúčových slov pomocou mena. Zoznam s týmto menom musí existovať.</para> </listitem> </varlistentry> <varlistentry> <term>Int</term> <listitem> <para>Detekuje celé číslo.</para> <para><programlisting>&lt;Int (spoločné atribúty) /&gt;</programlisting></para> <para>Toto pravidlo nemá žiadne špecifické atribúty. Pod-pravidlá sa typicky používajú pre detekciu kombinácií <userinput>L</userinput> a <userinput>U</userinput> po čísle, používané pre určenie celých čísel v programovom kóde.</para> </listitem> </varlistentry> <varlistentry> <term>Float</term> <listitem> <para>Detekuje reálne číslo.</para> <para><programlisting>&lt;Float (spoločné atribúty)
/&gt;</programlisting></para> <para>Toto pravidlo nemá žiadne špeciálne atribúty.</para> </listitem> </varlistentry> <varlistentry> <term>HlCOct</term> <listitem> <para>Detekuje číslo v osmičkovej sústave.</para> <para><programlisting>&lt;HlCOct (spoločné atribúty) /&gt;</programlisting></para> <para>Toto pravidlo nemá žiadne špeciálne atribúty.</para> </listitem> </varlistentry> <varlistentry> <term>HlCHex</term> <listitem> <para>Detekuje šestnástkové číslo.</para> <para><programlisting>&lt;Int (spoločné atribúty) /&gt;</programlisting></para> <para>Toto pravidlo nemá žiadne špeciálne atribúty.</para> </listitem> </varlistentry> <varlistentry> <term>HlCStringChar</term> <listitem> <para>Detekuje znak začínajúci \ (escaped).</para> <para><programlisting>&lt;HlCStringChar (spoločné atribúty)
/&gt;</programlisting></para> <para>Toto pravidlo nemá žiadne špeciálne atribúty.</para> <para>Nájde textovú reprezentáciu neviditeľných znakov obvykle používaných v programovacích jazykoch, napríklad <userinput>\n</userinput> (koniec riadku) alebo <userinput>\t</userinput> (tabulátor).</para> <para>Nasledujúce znaky budú nájdené ak sú po <literal>\</literal>: <userinput>abefnrtv&quot;'?</userinput>. Okrem toho to nájde aj escapované šestnástkové a osmičkové čísla, napríklad <userinput>\033</userinput>.</para> </listitem> </varlistentry> <varlistentry> <term>RangeDetect</term> <listitem> <para>Detekuje reťazec s definovanými začiatočnými a koncovými znakmi.</para> <programlisting>&lt;RangeDetect char=&quot;(znak)&quot; char1=&quot;(znak)&quot; (spoločné atribúty) /&gt;</programlisting> <para><userinput>char</userinput> definuje prvý znak rozsahu, <userinput>char2</userinput> definuje posledný znak rozsahu.</para> <para>Hodí sa napríklad pre detekovanie malých reťazcov v úvodzovkách, ale uvedomte si, že systém pracuje po riadkoch, nenájde reťazce, ktoré majú viac riadkov.</para> </listitem> </varlistentry> <varlistentry> <term>LineContinue</term> <listitem> <para>Zodpovedá koncu riadku.</para> <programlisting>&lt;LineContinue (spoločné atribúty) /&gt;</programlisting> <para>Toto pravidlo nemá žiadne špeciálne atribúty.</para> <para>Toto pravidlo sa hodí pre prepínanie kontextu na konci riadku.</para> </listitem> </varlistentry> </variablelist>
</sect1>
</appendix>