1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
|
<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
>KDEDIR</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
><RuleName attribute="(identifier)" context="(identifikátor|poradie)" [atribúty pravidla] /></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>
<MenoPravidla (atribúty)>
<MenoPodPravidla (atribúty) />
...
</MenoPravidla>
</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
><DetectChar char="(znak)" (spoločné atribúty) /></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
><Detect2Chars char="(znak)" char1="(znak)" (spoločné atribúty) /></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
><AnyChar String="(reťazec)" (spoločné atribúty) /></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
><StringDetect String="(reťazec)" [insensitive="TRUE|FALSE;"] (spoločné atribúty) /></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
><RegExpr String="(reťazec)" [insensitive="TRUE|FALSE;"] [minimal="TRUE|FALSE"] (spoločné atribúty) /></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
><keyword String="(meno zoznamu)" (spoločné atribúty) /></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
><Int (spoločné atribúty) /></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
><Float (spoločné atribúty)
/></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
><HlCOct (spoločné atribúty) /></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
><Int (spoločné atribúty) /></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
><HlCStringChar (spoločné atribúty)
/></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"'?</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
><RangeDetect char="(znak)" char1="(znak)" (spoločné atribúty) /></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
><LineContinue (spoločné atribúty) /></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>
|