Zvýrazňovanie syntaxuPrehľadZvý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ší.Funkcia v jazyku Perl so zvýraznením.
Funkcia v jazyku Perl so zvýraznením.
Rovnaká funkcia Perl bez zvýraznenia.
Rovnaká funkcia Perl bez zvýraznenia.
Dva príklady. Ktorý sa číta lepšie?&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;.&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 DokumentyZvýrazňovací mód.Š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 Zvýraznenie v dialógu nastavenia.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.Môžete si stiahnuť aktualizované alebo nové definície zvýrazňovania z webovej stránky &kate; kliknutím na tlačidlo Stiahnutie v stránke Zvýraznenie v dialógu nastavenia.Systém zvýrazňovania &kate;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.Ako to fungujeVž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.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.Definície syntaxu používané systémom v &kate; sú súbory &XML; obsahujúce Pravidlá pre určenie role textu, organizované do kontextových blokovZoznamy kľúčových slovDefinície položiek štýluPri 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.PravidláDetekčné pravidlá sú jadrom systému zvýrazňovania. Pravidlo je reťazec, znak alebo regulárny výraz 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.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. Kontextové štýly a kľúčové slová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.Definície syntaxu môžu obsahovať toľko štýlov, koľko ich je treba.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.Štandardné štýlyAk otvoríte zdrojový kód C++, &Java; alebo dokument HTML 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.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ť.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.&XML; formát definície zvýrazňovaniaPrehľadTá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.Formálna definície, čiže DTD je uložená v súbore language.dtd, ktorý by mal byť nainštalovaný na vašom systéme v priečinku $KDEDIR/share/apps/kate/syntax.Hlavné časti definície zvýrazňovania v &kate;Časť GeneralČ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.HighlightingČasť Highlighting obsahuje všetky dáta potrebné pre analýzu a zobrazenie textu. To znamená:ItemDatasObsahuje elementy ItemData, každý definuje štýl.Zoznamy kľúčových slovKaždý zoznam má meno a môže obsahovať ľubovoľný počet položiek.ContextsObsahuje kontexy, ktoré môžu tiež obsahovať pravidlá pre detekciu.Pravidlá pre detekciuTáto časť popisuje pravidlá pre detekciu syntaxe.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 atribút definovaný pravidlom a pravidlo môže požiadať o zmenu kontextu.Atribúty attribute a context sú spoločné a pre všetky pravidlá.Pravidlo vyzerá takto:<RuleName attribute="(identifier)" context="(identifikátor|poradie)" [atribúty pravidla] />attribute identifikuje štýl, ktorý sa má použiť pre nájdené znaky pomocou mena alebo indexu. context identifikuje kontext, ktorý sa odteraz bude používať.Atribút attribute je možné identifikovať menom alebo indexom (počítaným od 0) v skupine ItemDatas.context je možné identifikovať pomocou:identifikátor, momentálne to môže byť iba index (počítaný od 0) v skupine kontextov.poradie povie systému, že má zostať v aktuálnom kontexte (#stay) alebo sa vrátiť do predchádzajúceho kontextu (#pop).Ak sa chcete vrátiť o viac ako jedej krok, kľúčové slovo #pop: #pop#pop#popNiektoré pravidlá môžu mať pod-pravidlá, 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:
<MenoPravidla (atribúty)>
<MenoPodPravidla (atribúty) />
...
</MenoPravidla>
Atribúty špecifické pre jednotlivé pravidlá sú popísané v nasledujúcom zozname.Detaily pravidielDetectCharDetekuje jediný znak. Obvykle sa používa napríklad pre nájdenie konca reťazca v úvodzovkách.<DetectChar char="(znak)" (spoločné atribúty) />Atribút char definuje hľadaný znak.Detect2CharsDetekuje dva špecifické znaky v danom poradí.<Detect2Chars char="(znak)" char1="(znak)" (spoločné atribúty) />Atribút char definuje prvý hľadaný znak a char1 druhý.AnyCharDetekuje jeden znak zo skupiny zadaných znakov.<AnyChar String="(reťazec)" (spoločné atribúty) />Atribút String definuje množinu znakov.StringDetectDetekuje presný reťazec.<StringDetect String="(reťazec)" [insensitive="TRUE|FALSE;"] (spoločné atribúty) />Atribút String definuje hľadaný reťazec. Atribút insensitive je štandardne FALSE a predáva sa funkcii pre porovnávanie reťazcov. Ak je hodnota TURE, použije sa porovnávanie bez rozlišovania veľkosti písmen.RegExprHľadá pomocou regulárneho výrazu.<RegExpr String="(reťazec)" [insensitive="TRUE|FALSE;"] [minimal="TRUE|FALSE"] (spoločné atribúty) />Atribút String definuje regulárny výraz.insensitive je štandardne FALSE a predáva sa systému hľadania pomocou regulárnych výrazov.minimal je štandardne FALSE a predáva sa systému hľadania pomocou regulárnych výrazov.Pretože sa pravidlá vždy hľadajú od začiatku aktuálneho reťazca, regulárny výraz začínajúci znakom ^ znamená pravidlo, ktoré má hľadať iba na začiatku riadku.Dalšie informácie o nich nájdete v kapitole Regulárne výrazy.KeywordDetekuje kľúčové slovo zo zadaného zoznamu.<keyword String="(meno zoznamu)" (spoločné atribúty) />Atribút String identifikuje zoznam kľúčových slov pomocou mena. Zoznam s týmto menom musí existovať.IntDetekuje celé číslo.<Int (spoločné atribúty) />Toto pravidlo nemá žiadne špecifické atribúty. Pod-pravidlá sa typicky používajú pre detekciu kombinácií L a U po čísle, používané pre určenie celých čísel v programovom kóde.FloatDetekuje reálne číslo.<Float (spoločné atribúty)
/>Toto pravidlo nemá žiadne špeciálne atribúty.HlCOctDetekuje číslo v osmičkovej sústave.<HlCOct (spoločné atribúty) />Toto pravidlo nemá žiadne špeciálne atribúty.HlCHexDetekuje šestnástkové číslo.<Int (spoločné atribúty) />Toto pravidlo nemá žiadne špeciálne atribúty.HlCStringCharDetekuje znak začínajúci \ (escaped).<HlCStringChar (spoločné atribúty)
/>Toto pravidlo nemá žiadne špeciálne atribúty.Nájde textovú reprezentáciu neviditeľných znakov obvykle používaných v programovacích jazykoch, napríklad \n (koniec riadku) alebo \t (tabulátor).Nasledujúce znaky budú nájdené ak sú po \: abefnrtv"'?. Okrem toho to nájde aj escapované šestnástkové a osmičkové čísla, napríklad \033.RangeDetectDetekuje reťazec s definovanými začiatočnými a koncovými znakmi.<RangeDetect char="(znak)" char1="(znak)" (spoločné atribúty) />char definuje prvý znak rozsahu, char2 definuje posledný znak rozsahu.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.LineContinueZodpovedá koncu riadku.<LineContinue (spoločné atribúty) />Toto pravidlo nemá žiadne špeciálne atribúty.Toto pravidlo sa hodí pre prepínanie kontextu na konci riadku.