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
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
|
<chapter id="advanced-editing-tools">
<chapterinfo>
<authorgroup>
<author>&Anders.Lund; &Anders.Lund.mail;</author>
<author>&Dominik.Haumann; &Dominik.Haumann.mail;</author>
<othercredit role="translator"><firstname>Suse</firstname><surname>Polska</surname><affiliation><address><email>[email protected]</email></address></affiliation><contrib>Polskie tłumaczenie</contrib></othercredit> <othercredit role="translator"><firstname>Krzysztof</firstname><surname>Woźniak</surname><affiliation><address><email>[email protected]</email></address></affiliation><contrib>Polskie tłumaczenie</contrib></othercredit>
</authorgroup>
</chapterinfo>
<title>Zaawansowane narzędzia edycyjne</title>
<sect1 id="advanced-editing-tools-comment">
<title>Komentarz/Odkomentuj</title>
<para>Polecenia Komentarz i Odkomentuj dostępne z menu <guimenu>Narzędzia</guimenu> pozwalają na dodanie znaczników komentarza do zaznaczonego fragmentu tekstu (lub do bieżącego wiersza, gdy brak zaznaczenia). Bieżący format dokumentu musi obsługiwać możliwość komentowania tekstu.</para>
<para>Sposób komentowania jest określony w definicji reguł podświetlania składni. Jeżeli podświetlanie składni jest wyłączone, to polecenia Komentarz i Odkomentuj są nieaktywne. </para>
<para>Dla pewnych formatów dokumentów zdefiniowane są znaczniki komentowania wiersza, inne zaś zawierają znaczniki komentarzy jedno- i wielowierszowych. Jeżeli znaczniki komentarza wielowierszowego są niedostępne, to nie będzie się dało skomentować zaznaczenia nie zawierającego w sobie całości ostatniego wiersza.</para>
<para>Gdy dostępny jest znacznik komentarza dla całego wiersza kodu, to jego użycie jest preferowane, gdyż pozwala na uniknięcie problemów w przypadku zagnieżdżonych komentarzy.</para>
<para>Podczas usuwania znaczników komentarza nie należy zaznaczać tekstu nie będącego komentarzem. Jeżeli usuwany jest komentarz wielowierszowy z zaznaczenia, to wszystkie spacje znajdujące się poza znacznikami komentarza są ignorowane.</para>
<para><indexterm><primary>komentuj</primary></indexterm> Aby skomentować fragment tekstu należy użyć menu <menuchoice><guimenu>Narzędzia</guimenu><guimenuitem>Komentarz</guimenuitem></menuchoice>, lub skrótu klawiszowego <keycombo action="simul">&Ctrl;<keycap>D</keycap></keycombo>.</para>
<para><indexterm><primary>odkomentuj</primary></indexterm> Aby usunąć znaczniki komentarza z wybranego fragmentu tekstu, należy użyć menu <menuchoice><guimenu>Narzędzia</guimenu><guimenuitem>Odkomentuj</guimenuitem></menuchoice>, lub skrótu klawiszowego <keycombo action="simul">&Ctrl; &Shift;<keycap>D</keycap></keycombo>.</para>
</sect1>
<sect1 id="advanced-editing-tools-commandline">
<title>Linia poleceń edytora</title>
<para>Komponent edytora w &kate; zawiera wbudowaną linię poleceń, pozwalającą na sterowanie pracą bez pośrednictwa graficznego interfejsu użytkownika. Linia poleceń znajduje sią w dolnej części okna edytora, aby ją włączyć należy wybrać z menu: <menuchoice><guimenu>Widok</guimenu><guimenuitem>Przełącz do linii poleceń</guimenuitem></menuchoice> lub skorzystać ze skrótu klawiszowego (domyślnie jest to <keycombo action="simul"><keycap>F7</keycap></keycombo>). Zestaw poleceń dostępnych w linii poleceń edytora opisany został poniżej. Może on ulec rozszerzeniu przez zastosowanie wtyczek.</para>
<para>Naciśnięcie klawisza ENTER uruchamia wprowadzone polecenie. Komunikat wyświetlony w linii poleceń pokaże informacje o wynikach polecenia lub ewentualnym błędzie. Jeżeli linia poleceń została wyświetlona za pomocą klawisza <keycap>F7</keycap>, to schowa się ona automatycznie po kilku sekundach. Ponowne naciśnięcie klawisza <keycap>F7</keycap> usuwa komunikat i pozwala na wprowadzenie następnego polecenia.</para>
<para>Linia poleceń zawiera wbudowany system pomocy uruchamiany poleceniem <command>help</command>. Aby wyświetlić listę wszystkich dostępnych poleceń należy wpisać <command>help list</command>. Pomoc dotycząca wybranego polecenia dostępna jest po wpisaniu: <command>help <replaceable>polecenie</replaceable></command>.</para>
<para>Linia poleceń przechowuje historię poleceń pozwalając na ponowne użycie poleceń wcześniej już wpisanych. Dostęp i nawigacja w historii linii poleceń odbywa się za pomocą klawiszy strzałek <keycap>w górę</keycap> oraz <keycap>w dół</keycap>. Argumenty wywołanych z historii poleceń będą zaznaczone, pozwalając na łatwą ich zmianę.</para>
<sect2 id="advanced-editing-tools-commandline-commands">
<title>Polecenia standardowe</title>
<sect3 id="advanced-editing-tools-commandline-commands-configure">
<title>Polecenia konfiguracyjne edytora</title>
<para>Polecenia opisane poniżej dotyczą wbudowanego edytora i pozwalają na konfigurację bieżącego widoku i dokumentu. Może to być przydatne, gdy użytkownik chce wykorzystać ustawienia inne niż domyślne, np. dla automatycznych wcięć. </para>
<variablelist>
<title>Typy argumentów</title>
<varlistentry>
<term>BOOLEAN</term>
<listitem><para>Stosowane dla poleceń, które włączają lub wyłączają jakąś funkcję. Dopuszczalne wartości takiego argumentu to:<userinput>on</userinput>, <userinput>off</userinput>, <userinput>true</userinput>, <userinput>false</userinput>, <userinput>1</userinput> lub <userinput>0</userinput></para></listitem>
</varlistentry>
<varlistentry>
<term>INTEGER</term>
<listitem><para>Liczba całkowita</para></listitem>
</varlistentry>
<varlistentry>
<term>STRING</term>
<listitem><para>Napis</para></listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term><cmdsynopsis><command>set-tab-width</command><arg>INTEGER szerokość</arg></cmdsynopsis></term>
<listitem><para>Ustawia szerokość tabulacji (w znakach) na wartość określoną przez argument <userinput>szerokość</userinput>.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-indent-width</command><arg>INTEGER szerokość</arg></cmdsynopsis></term>
<listitem><para>Ustawia szerokość wcięcia na wartość określoną przez argument <userinput>szerokość</userinput>. Polecenie odnosi się do trybu wcięć dokonywanych za pomocą znaku spacji.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-word-wrap-column</command><arg>INTEGER szerokość</arg></cmdsynopsis></term>
<listitem><para>Ustawia liczbę znaków w wierszu dla funkcji statycznego zawijania wyrazów na wartość określoną przez argument <userinput>szerokość</userinput>. Działa jedynie w przypadku włączonego automatycznego zawijania wyrazów.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-icon-border</command><arg>BOOLEAN włącz</arg> </cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza wyświetlanie paska ikon.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-folding-markers</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza wyświetlanie paska znaczników zwijania kodu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-line-numbers</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza wyświetlanie paska z numerami wierszy.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-replace-tabs</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza zastępowanie znaków tabulacji znakami spacji w trakcie pisania. </para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-remove-trailing-space</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza usuwanie spacji końcowych po przejściu kursorem do innego wiersza.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-show-tabs</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza wyświetlanie małej kropki w miejscu znaków tabulacji oraz spacji kończących wiersz.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-indent-spaces</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza generowanie wcięć za pomocą zdefiniowanej przez parametr <option>indent-width</option> liczby spacji, dla każdego poziomu wcięcia. Wyłączenie opcji przywraca stosowanie znaku tabulacji do generowania wcięć.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-mixed-indent</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włączenie tej opcji pozwala na jednoczesne użycie znaków tabulacji i spacji do generowania wcięć przez &kate;. Poziomy wcięć będą określane zgodnie z ustawieniami opcji <option>indent-width</option>, zaś wcięcia wielopoziomowe będą generowane za pomocą największej możliwej liczby znaków tabulacji.</para>
<para>Po wykonaniu tego polecenia, dodatkowo włączona zostanie funkcja wcięć za pomocą spacji, a jeżeli szerokość wcięcia jest nieokreślona, to zostanie ustawiona na połowę wartości parametru <option>tab-width</option> określonego dla bieżącego dokumentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-word-wrap</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza funkcję dynamicznego zawijania wyrazów</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-replace-tabs-save</command><arg>BOOLEAN włącz </arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza zamienianie znaków tabulacji na spacje przed zapisaniem dokumentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-remove-trailing-space-save</command><arg>BOOLEAN włącz</arg></cmdsynopsis></term>
<listitem><para>Włącza lub wyłącza usuwanie spacji kończących wiersze przed jego zapisaniem.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-indent-mode</command><arg>nazwa</arg></cmdsynopsis></term>
<listitem><para>Określa tryb automatycznych wcięć, możliwe <userinput>nazwy</userinput> trybów to: 'cstyle', 'csands', 'xml', 'python', 'varindent' oraz 'none'. Jeżeli wprowadzona nazwa jest nieznana to przyjęta zostanie wartość 'none'.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>set-highlight</command><arg>nazwa</arg></cmdsynopsis></term>
<listitem><para>Wybiera zestaw reguł podświetlania składni dla dokumentu. Argument musi określać nazwę istniejącej reguły podświetlania. Dostępne nazwy widoczne są w menu: <menuchoice><guimenu>Narzędzia</guimenu><guisubmenu>Podświetlenie</guisubmenu></menuchoice>. W trakcie wprowadzania polecenia, pojawi się pomocnicza lista automatycznego dopełniania nazwy.</para></listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="advanced-editing-tools-commandline-commands-edit">
<title>Polecenia edycyjne</title>
<para>Ich wykonanie modyfikuje bieżący dokument.</para>
<variablelist>
<varlistentry>
<term><cmdsynopsis><command>indent</command></cmdsynopsis></term>
<listitem><para>Generuje wcięcie w wybranych wierszach lub w bieżącym wierszu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>unindent</command></cmdsynopsis></term>
<listitem><para>Usuwa wcięcie z zaznaczonego fragmentu lub bieżącego wiersza.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>cleanindent</command></cmdsynopsis></term>
<listitem><para>Wyrównuje wcięcia dla zaznaczonego fragmentu tekstu lub dla bieżącego wiersza, zgodnie z ustawionymi dla dokumentu regułami wcięć. </para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>comment</command></cmdsynopsis></term>
<listitem><para>Wprowadza znaczniki komentarza dla zaznaczonego fragmentu tekstu lub dla bieżącego wiersza, zgodnie z definicją reguł podświetlania składni wybraną dla bieżącego dokumentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>uncomment</command></cmdsynopsis></term>
<listitem><para>Usuwa znaczniki komentarza z zaznaczonego fragmentu tekstu lub bieżącego wiersza, zgodnie z definicją reguł podświetlania składni wybraną dla bieżącego dokumentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>kill-line</command></cmdsynopsis></term>
<listitem><para>Usuwa bieżący wiersz.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>replace</command><arg>wzorzec</arg><arg>zastąpienie</arg></cmdsynopsis></term>
<listitem><para>Zamienia tekst pasujący do napisu: <userinput>wzorzec</userinput> tekstem określonym w: <userinput>zastąpienie</userinput>. Jeżeli wzorzec lub zastąpienie zawiera spację, to oba argumenty należy podać w cudzysłowach (pojedynczych lub podwójnych). Jeżeli argument nie jest zamknięty w cudzysłowie, to pierwsze słowo traktowane jest jako <userinput>wzorzec</userinput>, a reszta tekstu jako <userinput>zastąpienie</userinput>. Jeżeli tekst <userinput>zastąpienie</userinput> nie zostanie podany, to każde wystąpienie <userinput>wzorca</userinput> zostanie usunięte.</para>
<para>Parametry działania polecenia zamień mogą być dostosowywane poprzez dodanie dwukropka i jednej z dostępnych opcji. Polecenie przyjmuje wówczas postać: <userinput>replace:opcja wzorzec zastąpienie</userinput>. Dostępne są następujące opcje: <variablelist>
<varlistentry>
<term><userinput>b</userinput></term>
<listitem><para>Szuka tekstu wstecz.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>c</userinput></term>
<listitem><para>Szuka począwszy od pozycji kursora.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>e</userinput></term>
<listitem><para>Szuka w ramach zaznaczonego fragmentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>r</userinput></term>
<listitem><para>Wykonuje polecenie szukania za pomocą wyrażenia regularnego. W przypadku użycia tej opcji, można w argumencie "zastąpienie" użyć parametru <userinput>\N</userinput>, gdzie N jest numerem podwyrażenia, które zostanie wstawione w zastępowanym tekście.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>s</userinput></term>
<listitem><para>Szuka zwracając uwagę na wielkość liter.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>p</userinput></term>
<listitem><para>Pyta się przed zastąpieniem kolejnego wystąpienia.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>w</userinput></term>
<listitem><para>Szuka dopasowując tylko całe wyrazy.</para></listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>date</command><arg>format</arg></cmdsynopsis></term>
<listitem><para>Wprowadza do dokumentu bieżący czas i datę w formacie określonym przez: <userinput>format</userinput> lub w formacie <quote>yyyy-MM-dd hh:mm:ss</quote> gdy brak jest argumentu. Interpretacja treści argumentu <userinput>format</userinput> jest następująca: <informaltable> <tgroup cols="2"> <tbody>
<row><entry><literal>d</literal></entry><entry>Dzień podany jako liczba bez wiodącego zera (1-31).</entry></row>
<row><entry><literal>dd</literal></entry><entry>Dzień podany jako liczba z wiodącym zerem (01-31).</entry></row>
<row><entry><literal>ddd</literal></entry><entry>Skrót zlokalizowanej nazwy dnia (np. 'Pon'..'Nie').</entry></row>
<row><entry><literal>dddd</literal></entry><entry>Pełna zlokalizowana nazwa dnia (np.: 'Poniedziałek'..'Niedziela').</entry></row>
<row><entry><literal>M</literal></entry><entry>Miesiąc jako liczba bez wiodącego zera (1-12).</entry></row>
<row><entry><literal>MM</literal></entry><entry>Miesiąc jako liczba z wiodącym zerem (01-12).</entry></row>
<row><entry><literal>MMM</literal></entry><entry>Skrót zlokalizowanej nazwy miesiąca (np. 'Sty'..'Gru').</entry></row>
<row><entry><literal>yy</literal></entry><entry>Rok - dwucyfrowo (00-99).</entry></row>
<row><entry><literal>yyyy</literal></entry><entry>Rok zapisany jako 4 cyfry (1752-8000).</entry></row>
<row><entry><literal>h</literal></entry><entry>Godzina, zapisana bez wiodącego zera (0..23 lub 1..12 przy wyświetlanym AM/PM).</entry></row>
<row><entry><literal>hh</literal></entry><entry>Godzina, zapisana z wiodącym zerem (00..23 lub 01..12 przy wyświetlanym AM/PM).</entry></row>
<row><entry><literal>m</literal></entry><entry>Minuta, bez wiodącego zera (0..59).</entry></row>
<row><entry><literal>mm</literal></entry><entry>Minuta z wiodącym zerem (00..59).</entry></row>
<row><entry><literal>s</literal></entry><entry>Sekunda bez wiodącego zera (0..59).</entry></row>
<row><entry><literal>ss</literal></entry><entry>Sekunda z wiodącym zerem (00..59).</entry></row>
<row><entry><literal>z</literal></entry><entry>Milisekunda bez wiodącego zera (0..999).</entry></row>
<row><entry><literal>zzz</literal></entry><entry>Milisekunda z wiodącym zerem (000..999).</entry></row>
<row><entry><literal>AP</literal></entry><entry>Wyświetla symbol "AM" lub "PM" w zależności od pory dnia.</entry></row>
<row><entry><literal>ap</literal></entry><entry>Wyświetla symbol "am" lub "pm" w zależności od pory dnia.</entry></row>
</tbody>
</tgroup>
</informaltable>
</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>char</command><arg>kod_znaku</arg></cmdsynopsis></term>
<listitem>
<para>Polecenie pozwala na wstawianie do treści dokumentu znaku określonego przez wartość numeryczną w formie dziesiętnej, ósemkowej lub szesnastkowej.</para>
<example>
<title>Polecenie <command>char</command>, przykłady</title>
<para>Wpisanie: <userinput>char 234</userinput></para>
<para>Wprowadzi do tekstu znak: <computeroutput>ê</computeroutput></para>
<para>Wpisanie: <userinput>char 0x1234</userinput></para>
<para>Wprowadzi do tekstu znak: <computeroutput>ሴ</computeroutput></para>
</example>
</listitem>
</varlistentry>
<varlistentry>
<term>
<indexterm><primary>zamień, w formacie "sed"</primary>
<secondary>szukaj, w formacie "sed"</secondary></indexterm>
<command>s///[ig]</command> <command>%s///[ig]</command></term>
<listitem>
<para>To polecenie wykonuje operację znajdź/zamień analogicznie jak program "sed". Polecenie działa dla bieżącego wiersza lub dla całego dokumentu (<command>%s///</command>).</para>
<para>Działanie polecenia polega na wyszukaniu w tekście <emphasis>wzorca wyszukiwania</emphasis> (określonego przez wyrażenie regularne pomiędzy pierwszym i drugim ukośnikiem). Po znalezieniu wzorca dopasowany tekst jest zamieniany na wyrażenie zawarte pomiędzy środkową i ostatnią częścią polecenia. Nawiasy we wzorcu wyszukiwania określają tzw.<emphasis>odwołania zwrotne</emphasis>, co oznacza iż program zapamiętuje wyszukany napis, który następnie może być użyty w definicji wyrażenia zastępującego. Odwołanie do zapamiętanego napisu odbywa się przez użycie <userinput>\1</userinput> dla pierwszego zestawu nawiasów, <userinput>\2</userinput> dla drugiego i tak dalej.</para>
<para>Wyszukiwanie w tekście nawiasów <literal>(</literal> lub <literal>)</literal> wymaga zastosowania sekwencji specjalnych, z użyciem znaku odwrotnego ukośnika. Nawiasy będą reprezentowane przez napisy: <userinput>\(</userinput> oraz <userinput>\)</userinput></para>
<para>Użycie znaku <userinput>i</userinput> na końcu wyrażenia spowoduje, iż przy wyszukiwaniu nie będzie uwzględniana wielkość liter. Jeżeli na końcu wyrażenia wprowadzone zostanie <userinput>g</userinput> spowoduje to zamienienie wszystkich wystąpień poszukiwanego wzorca (w innym wypadku zamienione zostanie tylko pierwsze wystąpienie).</para>
<example>
<title>Zastępowanie tekstu w bieżącym wierszu</title>
<para>Wyobraźmy sobie komunikat kompilatora informujący o następującym błędzie w wierszu 3902 edytowanego kodu programu: Klasa: <classname>myClass</classname> nie jest zdefiniowana.</para>
<para>Zamiast przeszukiwania i edycji wiersza 3902, celem zamienienia złej nazwy klasy na poprawną (<classname>MyClass</classname>), wystarczy uruchomić linię poleceń, uruchomić polecenie <userinput>s/myclass/MyClass/i</userinput>, zapisać plik, a następnie już bez błędów skompilować program.</para>
</example>
<example>
<title>Zastępowanie tekstu w całym dokumencie</title>
<para>Wyobraźmy sobie sytuację, że w trakcie edycji dokumentu, w którym często występuje napis <quote>Pani Nowak</quote> ktoś przychodzi i mówi, iż osoba ta wyszła za mąż za pana <quote>Kowalskiego</quote>. Należy oczywiście zamienić wszystkie wystąpienia <quote>Pani Nowak</quote> na <quote>Pani Kowalska</quote>.</para>
<para>W linii poleceń wystarczy wprowadzić:<userinput>%s/Pani Nowak/Pani Kowalska/</userinput> i po naciśnięciu ENTER wszystko już będzie w porządku.</para>
</example>
<example>
<title>Przykłady zaawansowane</title>
<para>W tym przykładzie zastosowano <emphasis>odwołanie zwrotne</emphasis> oraz mechanizm <emphasis>klas znaków</emphasis> (więcej informacji na ten temat znajduje się we wspomnianej poniżej dokumentacji).</para>
<para>Dokument zawiera następujący wiersz kodu: <programlisting>void MyClass::DoStringOps( String &foo, String &bar, String *p, int &a, int &b )</programlisting>
</para>
<para>Konieczne jest dodanie operatora <constant>const</constant> do wszystkich argumentów określonych przez <quote>referencję</quote> (reprezentowanych przez znak & na początku nazwy argumentu). Dodatkowo trzeba ujednolicić odstępy między słowami tak, aby była to tylko jedna spacja).</para>
<para>Po uruchomieniu linii poleceń, należy wpisać: <userinput>s/\s+(\w+)\s+(&)/ const \1 \2/g</userinput> i nacisnąć ENTER. Znak <userinput>g</userinput> na końcu wyrażenia wymusza ponowną kompilacją wyrażenia regularnego po każdym dopasowaniu wyrażenia w tekście, co jest wymagane do poprawnego działania mechanizmu <emphasis>odwołań zwrotnych</emphasis>.</para>
<para>Po wykonaniu polecenia wiersz przyjmie postać: <computeroutput>void MyClass::DoStringOps( const String &foo, const String &bar, String *p, const int &a, const int &b )</computeroutput></para>
<para>Interpretacja opisanego wyrażenia jest następujące. Najpierw wyszukuje ono spacje (<literal>\s+</literal>) po których wystąpił jeden lub więcej znaków alfanumerycznych (<literal>\w+</literal>) zakończonych kolejną spacją (<literal>\s+</literal>), za którą znajduje się znak &. Pełna treść tego dopasowania zostaje zachowana do dalszego wykorzystania przy wykonaniu zastąpienia tekstu. W drugiej części dopasowany fragment zostaje zastąpiony spacją i napisem <quote>const</quote>, po którym następuje kolejna spacja i zachowany wcześniej fragment tekstu (<literal>\1</literal>), a dalej spacja i kolejny fragment dopasowany po znaku & (<literal>\2</literal>)</para>
<para>W powyższym przykładzie pierwszy dopasowany fragment mógł zawierać napis <quote>String</quote> lub też <quote>int</quote>, dlatego też zastosowanie klasy znakowej <literal>\w</literal> i operatora <literal>+</literal> dało wymagany efekt.</para>
</example>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="advanced-editing-tools-commandline-commands-navigation">
<title>Komendy stosowane do nawigacji w tekście</title>
<variablelist>
<varlistentry>
<term><cmdsynopsis><command>goto</command><arg>INT wiersz</arg></cmdsynopsis></term>
<listitem><para>Powoduje przejście do podanego numeru wiersza.</para></listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>find</command><arg>wzorzec</arg></cmdsynopsis></term>
<listitem><para>Spowoduje przejście do pierwszego wystąpienia napisu <userinput>wzorzec</userinput> zgodnie z bieżącą konfiguracją funkcji wyszukiwania. Kolejne wystąpienia mogą zostać wyszukane za pomocą menu <menuchoice><guimenu>Edycja</guimenu><guimenuitem>Znajdź następne</guimenuitem></menuchoice> (domyślny skrót klawiszowy to <keycap>F3</keycap>).</para>
<para>Polecenie "find" może być skonfigurowane poprzez dodanie jednej lub więcej opcji po dwukropku w postaci: <userinput>find:opcje wzorzec</userinput>. Dostępne są następujące opcje: <variablelist>
<varlistentry>
<term><userinput>b</userinput></term>
<listitem><para>Szuka tekstu wstecz.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>c</userinput></term>
<listitem><para>Szuka począwszy od pozycji kursora.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>e</userinput></term>
<listitem><para>Szuka w ramach zaznaczonego fragmentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>r</userinput></term>
<listitem><para>Wykonuje polecenie szukania za pomocą wyrażenia regularnego. W przypadku użycia tej opcji, można w argumencie "zastąpienie" użyć parametru <userinput>\N</userinput>, gdzie N jest numerem podwyrażenia, które zostanie wstawione w zastępowanym tekście.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>s</userinput></term>
<listitem><para>Szuka zwracając uwagę na wielkość liter.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>w</userinput></term>
<listitem><para>Szuka dopasowując tylko całe wyrazy.</para></listitem>
</varlistentry>
</variablelist>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><cmdsynopsis><command>ifind</command><arg>wzorzec</arg></cmdsynopsis></term>
<listitem><para>Polecenie wyszukuje tekst <quote>w trakcie pisania</quote>. Dodatkowo można skonfigurować zachowanie za pomocą opcji podanych po dwukropku w postaci: <userinput>ifind:opcje wzorzec</userinput>. Dostępne są następujące opcje: <variablelist>
<varlistentry>
<term><userinput>b</userinput></term>
<listitem><para>Szuka tekstu wstecz.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>r</userinput></term>
<listitem><para>Wyszukaj za pomocą wyrażenia regularnego.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>s</userinput></term>
<listitem><para>Szuka zwracając uwagę na wielkość liter.</para></listitem>
</varlistentry>
<varlistentry>
<term><userinput>c</userinput></term>
<listitem><para>Szuka począwszy od pozycji kursora.</para></listitem>
</varlistentry>
</variablelist>
</para></listitem>
</varlistentry>
</variablelist>
</sect3>
</sect2>
</sect1>
<sect1 id="advanced-editing-tools-code-folding">
<title>Korzystanie ze zwijania kodu źródłowego</title>
<para>Zwijanie kodu, pozwala na ukrywanie wydzielonych części tekstu, dzięki czemu łatwiej jest przeglądać duże fragmenty edytowanego kodu źródłowego. &kate; określa możliwość zwinięcia danej części na podstawie reguł określonych w definicji podświetlania składni. Zwijanie jest dostępne tylko dla niektórych formatów dokumentów, zwykle są to pliki XML, kod źródłowy, itp. Większość definicji podświetlania, obsługujących funkcję zwijania kodu, pozwala też na ręczne definiowanie zwijalnych fragmentów tekstu, zwykle za pomocą słów kluczowych <userinput>BEGIN</userinput> oraz <userinput>END</userinput>.</para>
<para>Aby włączyć funkcję zwijania kodu, należy skorzystać z menu <menuchoice><guimenu>Widok</guimenu><guimenuitem>Pokaż znaczniki zwijania</guimenuitem></menuchoice> (jeżeli nie były one wcześniej widoczne). Pasek znaczników zwijania, widoczny po lewej stronie okna edycji menu, wyświetla graficzną reprezentację zwijalnych fragmentów kodu wraz ze znakami +/- wskazującymi na możliwe do wykonania na nim operacje. Naciśnięcie znaku "-" zwija dotyczący go fragment, zaś "+" rozwija go.</para>
<para>W menu dostępne są cztery dodatkowe polecenia pozwalające na manipulację zwiniętymi częściami tekstu, więcej informacji na ten temat dostępne jest w <link linkend="view-code-folding">dokumentacji menu</link>. </para>
<para>Jeżeli użytkownik nie chce korzystać z funkcji zwijania kodu, to może wyłączyć opcję <guilabel>Pokaż znaczniki zwijania (jeżeli dostępne)</guilabel> w karcie <link linkend="config-dialog-editor-appearance">Edytor -> Wygląd</link> w oknie konfiguracji.</para>
</sect1>
<sect1 id="advanced-editing-tools-scripting">
<title>Wykorzystanie Javascript do sterowania pracą edytora</title>
<sect2 id="advanced-editing-tools-scripting-introduction">
<title>Wprowadzenie</title>
<para>Począwszy od wersji 2.5, edytor &kate; umożliwia tworzenie skryptów w standardzie ECMA, znanym również jako JavaScript.</para>
<para>Ze skryptów można korzystać tylko za pomocą <link linkend="advanced-editing-tools-commandline">wbudowanej linii poleceń</link>. Skrypt musi być zlokalizowany w katalogu, w którym &kate; może go odszukać wraz z opcjonalnym plikiem .desktop definiującym jego dodatkowe właściwości. Domyślnym katalogiem dla skryptów jest podkatalog <filename>katepart/scripts</filename> znajdujący się w katalogu z danymi środowiska &kde;. Ścieżka dostępu do katalogu z danymi środowiska jest wyświetlana za pomocą polecenia <command>tde-config <option>--path</option> <parameter>data</parameter></command>. Zwykle podczas instalacji systemu operacyjnego tworzone są katalogi danych: systemowy i użytkownika. Skrypty umieszczone w katalogu systemowym są dostępne dla wszystkich użytkowników, zaś w katalogu użytkownika dostępne są tylko dla tego użytkownika.</para>
<note><para>Ta funkcja programu ma charakter eksperymentalny i jej działanie może się zmienić w przyszłych wersjach programu.</para>
<para>W chwili obecnej nie jest możliwe dodawanie skryptów do menu lub przypisywanie im skrótów klawiszowych. W przyszłości ta możliwość może się pojawić.</para>
<para>Nie jest jeszcze możliwe przekazywanie do uruchamianego skryptu żadnych argumentów. Ta możliwość również w przyszłości się pojawi ;)</para>
</note>
</sect2>
<sect2 id="advanced-editing-tools-scripting-reference">
<title>Interfejs programisty (API) dla JavaScript w &kate;</title>
<para>Poniżej przedstawiono pełny zestaw funkcji i właściwości dostępnych dla obiektów <type>document</type> oraz <type>view</type>. Oczywiście możliwe jest korzystanie z innych obiektów standardowych Javascript takich jak np.: <type>Math</type>, <type>String</type> <type>Regex</type>, itd.</para>
<para>Podczas działania skryptu, obiekt <classname>document</classname> odnosi się do bieżącego dokumentu, a obiekt <classname>view</classname> odnosi się do bieżącego widoku.</para>
<note><para>Typy argumentów nie są w chwili obecnej stosowane w JavaScript, przedstawione są tylko dla zilustrowania jakiego rodzaju wartości dana funkcja oczekuje.</para></note>
<variablelist id="advanced-editing-tools-scripting-global">
<title>Funkcje globalne</title>
<varlistentry>
<term><function>debug( <parameter><replaceable>string</replaceable></parameter>) [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>parametry</title>
<listitem><para><parameter>string</parameter> napis do wypisania</para>
</listitem>
</itemizedlist>
<para>Przekazuje napis na standardowe wyjście <acronym>STDERR</acronym> wykorzystując funkcję <function>kdDebug()</function>. Wykorzystywany jest specjalnie przydzielony obszar do wyświetlania komunikatów, oznaczony przedrostkiem <computeroutput>Kate (KJS Scripts):</computeroutput> </para>
</listitem>
</varlistentry>
</variablelist>
<variablelist id="advanced-editing-tools-scripting-document">
<title>Charakterystyka interfejsu programisty (API) dla klasy <classname>document</classname></title>
<varlistentry>
<term><function>document.attribute( <parameter><replaceable>wiersz</replaceable> </parameter>, <parameter><replaceable>kolumna</replaceable></parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>uint wiersz</parameter> Numer wiersza, dla którego będzie wyszukiwany atrybut.</para></listitem>
<listitem><para><parameter>uint kolumna</parameter> Numer kolumny, dla której będzie poszukiwany atrybut.</para></listitem>
</itemizedlist>
<para>Zwraca kod ID atrybutu znajdującego się w określonej pozycji dokumentu [<parameter>wiersz</parameter>,<parameter>kolumna</parameter>]. Atrybut reprezentuje wygląd tekstu lub styl tekstu, i wykorzystywany jest do podświetlania składni określonego fragmentu tekstu, co jest wykorzystywane w formatach mieszanych takich jak np.: HTML lub PHP.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.canBreakAt( <parameter>Char c</parameter>, <parameter>uint atrybut</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>c</parameter> Znak do sprawdzenia</para></listitem>
<listitem><para><parameter>atrybut</parameter> Atrybut w pozycji znaku <parameter>c</parameter>.</para></listitem>
</itemizedlist>
<para>Zwraca informację, dotyczącą możliwości łamania wiersza dla znaku "c" i atrybutu "atrybut". Wynik działania funkcji zależy od reguł podświetlania, określających możliwość łamania wiersza dla danego znaku i atrybutu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.canComment( <parameter>uint atrybut_początkowy</parameter>, <parameter>uint atrybut_końcowy</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>atrybut_początkowy</parameter> Atrybut rozpoczynający obszar określony do przekształcenia w komentarz.</para></listitem>
<listitem><para><parameter>atrybut_końcowy</parameter> Atrybut kończący obszar określony do przekształcenia w komentarz.</para></listitem>
</itemizedlist>
<para>Zwraca informację o tym, czy atrybut_początkowy i atrybut_końcowy są zgodne z bieżącymi regułami podświetlania składni. Jeżeli tak, to możliwe jest wtedy przekształcenie tego fragmentu w komentarz. </para>
<example>
<title>Wykorzystanie funkcji canComment</title>
<programlisting>if ( document.canComment( document.attribute(1,0), document.attribute(5,0) ) ) {
// 1,0 oraz 5,0 należą do tego samego systemu reguł podświetlania składni
}
</programlisting>
</example>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.clear(); [funkcja]</function></term>
<listitem><para>Usuwa zawartość dokumentu.</para></listitem>
</varlistentry>
<varlistentry>
<term><function>document.commentStart( <parameter>uint atrybut</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>atrybut</parameter> Atrybut tekstu, dla którego zostanie zwrócony napis rozpoczęcia komentarza.</para></listitem>
</itemizedlist>
<para>Zwraca napis wymagany do rozpoczęcia wielowierszowego komentarza dla tekstu o określonym atrybucie, lub napis pusty, jeżeli komentarze wielowierszowe nie są obsługiwane dla tego typu dokumentu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.commentMarker( <parameter>uint atrybut</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>atrybut</parameter> Atrybut tekstu, dla którego zostanie pobrany znacznik komentarza</para></listitem>
</itemizedlist>
<para>Zwraca napis, wykorzystywany do komentowania wiersza dokumentu, lub pusty napis jeżeli komentarze dla całych wierszy nie są dostępne dla tego typu dokumentu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.commentEnd( <parameter>uint atrybut</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>atrybut</parameter> Atrybut tekstu, dla którego zostanie zwrócony napis zakończenia komentarza</para></listitem>
</itemizedlist>
<para>Zwraca napis wymagany do zakończenia wielowierszowego komentarza dla tekstu o określonym atrybucie, lub napis pusty, jeżeli komentarze wielowierszowe nie są obsługiwane dla tego typu dokumentu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.editBegin(); [funkcja]</function></term>
<listitem>
<para>Rozpoczyna grupę operacji edycyjnych. Wszystkie działania wykonane do momentu uruchomienia funkcji editEnd() będą zgrupowane w jedną operację cofania.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.editEnd(); [funkcja]</function></term>
<listitem>
<para>Kończy grupę operacji edycyjnych.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.highlightMode; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Zawiera nazwę trybu reguł podświetlania dla bieżącego dokumentu (np. "JavaScript" lub "C++"). Jeżeli dokument nie ma zdefiniowanego trybu podświetlania składni, zostanie zwrócona wartość "None". Konieczne jest korzystanie z nazwy w języku angielskim, w przypadkach gdy różni się ona od nazwy przetłumaczonej.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.indentMode; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Nazwa trybu automatycznych wcięć dla bieżącego dokumentu (np.:<literal>normal</literal> lub <literal>cstyle</literal>). Jeżeli tryb automatycznych wcięć jest wyłączony, to zwrócona zostanie wartość <literal>none</literal>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.indentWidth; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Szerokość wcięć ustawiona dla dokumentu, wykorzystywana jeżeli włączone są wcięcia za pomocą znaku spacji.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.insertLine( <parameter>uint wiersz</parameter>, <parameter>string tekst</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza dokumentu</para>
</listitem>
<listitem><para><parameter>tekst</parameter> tekst do wprowadzenia</para></listitem>
</itemizedlist>
<para>Wstawia nowy wiersz o zawartości <parameter>tekst</parameter> w wierszu o numerze <parameter>wiersz</parameter>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.insertText( <parameter>uint wiersz</parameter>, <parameter>uint kolumna</parameter>, <parameter>string tekst</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza dokumentu</para></listitem>
<listitem><para><parameter>kolumna</parameter> numer kolumny w dokumencie</para></listitem>
<listitem><para><parameter>tekst</parameter> tekst do wprowadzenia</para></listitem>
</itemizedlist>
<para>Wstawia do dokumentu <parameter>tekst</parameter> w wierszu <parameter>wiersz</parameter> i kolumnie <parameter>kolumna</parameter>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>document.length(); [funkcja]</term>
<listitem>
<para>Zwraca rozmiar dokumentu w bajtach.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.lines(); [funkcja]</function></term>
<listitem>
<para>Zwraca liczbę wierszy w dokumencie.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>document.mixedIndent; [właściwość:tylko do odczytu]</term>
<listitem>
<para>Wartość prawda/fałsz informująca czy tryb mieszanych wcięć dla dokumentu jest włączony. Jeżeli tak, to wcięcia są optymalizowane, tak że zawierają mieszankę znaków tabulacji i spacji (podobnie jak w edytorze Emacs).</para>
</listitem>
</varlistentry>
<varlistentry>
<term>document.removeLine( <parameter>uint wiersz</parameter> ); [funkcja]</term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza dokumentu</para></listitem>
</itemizedlist>
<para>Usuwa wiersz z dokumentu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.removeText( <parameter>uint wiersz_początku</parameter>, <parameter>uint kolumna_początku</parameter>, <parameter>uint wiersz_końca</parameter>, <parameter>uint kolumna_końca</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz_początku</parameter> określa początkowy wiersz dokumentu</para></listitem>
<listitem><para><parameter>kolumna_początku</parameter> określa początkową kolumnę dokumentu</para></listitem>
<listitem><para><parameter>wiersz_końca</parameter> określa ostatni wiersz</para></listitem>
<listitem><para><parameter>kolumna_końca</parameter> określa ostatnią kolumnę</para></listitem>
</itemizedlist>
<para>Usuwa tekst w dokumencie od wiersza <parameter>wiersz_początku</parameter> i kolumny <parameter>kolumna_początku</parameter> do wiersza<parameter>wiersz_końca</parameter> i kolumny <parameter>kolumna_końca</parameter>. </para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.setText( <parameter>string tekst</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>tekst</parameter> treść dokumentu</para></listitem>
</itemizedlist>
<para>Ustawia zawartość całego dokumentu na <parameter>tekst</parameter>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.spaceIndent; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Wartość prawda/fałsz określająca czy tryb wcinania spacjami jest włączony. Jeżeli tak, to wcięcia w dokumencie są generowane odpowiednią, zdefiniowaną przez "indentWidth", liczbą spacji. W przeciwnym wypadku, wcięcia dokonywane są za pomocą znaków tabulacji (jeden znak na jeden poziom wcięcia).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.textFull(); [funkcja]</function></term>
<listitem>
<para>Zwraca pełną zawartość dokumentu. Jeżeli dokument zawiera wiele wierszy, to rozdzielane są one znakiem końca wiersza: <constant>\n</constant>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.textLine( uint wiersz ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza</para></listitem>
</itemizedlist>
<para>Zwraca tekst wiersza o numerze <parameter>wiersz</parameter>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>document.textRange( <parameter>uint wiersz_początku</parameter>, <parameter>uint kolumna_początku</parameter>, <parameter>uint wiersz_końca</parameter>, <parameter>uint kolumna_końca</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz_początku</parameter> określa początkowy wiersz dokumentu</para></listitem>
<listitem><para><parameter>kolumna_początku</parameter> określa początkową kolumnę dokumentu</para></listitem>
<listitem><para><parameter>wiersz_końca</parameter> określa ostatni wiersz</para>
</listitem>
<listitem><para><parameter>kolumna_końca</parameter> określa ostatnią kolumnę</para></listitem>
</itemizedlist>
<para>Zwraca zdefiniowany zakres tekstu dokumentu. Jeżeli zawiera on wiele wierszy, to rozdzielane są one znakiem końca wiersza: <constant>\n</constant>.</para>
</listitem>
</varlistentry>
</variablelist><!--/ document API -->
<variablelist id="advanced-editing-tools-scripting-view">
<title>Interfejs programisty (API) dla klasy <classname>view</classname></title>
<varlistentry>
<term><function>view.clearSelection(); [funkcja]</function></term>
<listitem>
<para>Usuwa zaznaczenie z tekstu.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.cursorColumn(); [funkcja]</function></term>
<listitem>
<para>Zwraca numer kolumny, w której znajduje się kursor (znaki tabulacji są rozwijane do odpowiedniej liczby spacji).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.cursorColumnReal(); [funkcja]</function></term>
<listitem>
<para>Zwraca rzeczywisty numer kolumny, w której znajduje się kursor (znaki tabulacji traktowane są jako jeden znak).</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.cursorLine(); [funkcja]</function></term>
<listitem>
<para>Zwraca numer wiersza, w którym znajduje się kursor.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.hasSelection(); [funkcja]</function></term>
<listitem>
<para>Zwraca wartość <constant>true</constant> (logiczna prawda), jeżeli widok zawiera zaznaczenie, lub <constant>false</constant> (logiczny fałsz), gdy w widoku brak zaznaczenia.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.removeSelectedText(); [funkcja]</function></term>
<listitem>
<para>Usuwa zaznaczony fragment, w przypadku gdy zaznaczenie w tekście istnieje.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selectAll(); [funkcja]</function></term>
<listitem>
<para>Zaznacza cały dokument.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selection(); [funkcja]</function></term>
<listitem>
<para>Zwraca zaznaczony fragment. Jeżeli zawiera on wiele wierszy, to rozdzielane są one znakiem końca wiersza: <constant>\n</constant>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selectionEndColumn; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Zwraca numer ostatniej kolumny zaznaczenia.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selectionEndLine; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Zwraca numer ostatniego wiersza zaznaczenia.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selectionStartColumn; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Zwraca numer pierwszej kolumny zaznaczenia.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.selectionStartLine; [właściwość:tylko do odczytu]</function></term>
<listitem>
<para>Zwraca numer pierwszego wiersza zaznaczenia.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.setCursorPosition( <parameter>uint wiersz</parameter>, <parameter>uint kolumna</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza pozycji kursora.</para></listitem>
<listitem><para><parameter>kolumna</parameter> numer kolumny pozycji kursora.</para></listitem>
</itemizedlist>
<para>Ustawia kursor w widoku w pozycji [<parameter>wiersz</parameter>, <parameter>kolumna</parameter>]. Pozycja zostaje ustalona wizualnie, czyli znaki tabulacji rozwijane są na odpowiednią (określoną przez <replaceable>tabwidth</replaceable>) liczbę spacji w zależności od pozycji w wierszu. Kursor staje się widoczny. Parametry wiersz i kolumna rozpoczynają się od zera.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.setCursorPositionReal( <parameter>uint wiersz</parameter>, <parameter>uint kolumna</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz</parameter> numer wiersza pozycji kursora.</para></listitem>
<listitem><para><parameter>kolumna</parameter> numer kolumny pozycji kursora.</para></listitem>
</itemizedlist>
<para>Ustawia kursora w pozycji podanej przez <parameter>wiersz</parameter> i <parameter>kolumnę</parameter>. Argumenty określają pozycję w tekście, czyli znaki tabulacji traktowane są jako jeden znak. Kursor stanie się widoczny. Numery wiersza i kolumny rozpoczynają się od zera.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><function>view.setSelection( <parameter>uint wiersz_początku</parameter>, <parameter>uint kolumna_początku</parameter>, <parameter>uint wiersz_końca</parameter>, <parameter>uint kolumna_końca</parameter> ); [funkcja]</function></term>
<listitem>
<itemizedlist>
<title>Parametry</title>
<listitem><para><parameter>wiersz_początku</parameter> określa początkowy wiersz dokumentu</para></listitem>
<listitem><para><parameter>kolumna_początku</parameter> określa początkową kolumnę dokumentu</para></listitem>
<listitem><para><parameter>wiersz_końca</parameter> określa ostatni wiersz</para></listitem>
<listitem><para><parameter>kolumna_końca</parameter> określa ostatnią kolumnę</para></listitem>
</itemizedlist>
<para>Zaznacza fragment tekstu począwszy od wiersza <parameter>wiersz_początku</parameter> i kolumny <parameter>kolumna_początku</parameter> do wiersza <parameter>wiersz_końca</parameter> i kolumny <parameter>kolumna_końca</parameter>.</para>
</listitem>
</varlistentry>
</variablelist>
<example id="advanced-editing-tools-scripting-example">
<title>Przykładowy skrypt</title>
<para>Przedstawiony poniżej skrypt, przerabia wszystkie litery w zaznaczonym fragmencie na duże. Pierwszym krokiem jest sprawdzenie istnienia zaznaczenia, następnie pobranie zaznaczonego tekstu, zamienienie wielkości znaków oraz wstawienie zmienionego tekstu do dokumentu. Zapis programu wygląda następująco:</para>
<programlisting>if ( view.hasSelection() )
{
// zmień na duże litery
column = view.selectionStartColumn;
line = view.selectionStartLine;
selection = view.selection().toUpperCase();
document.editBegin();
view.removeSelectedText();
document.insertText( line, column, selection );
document.editEnd();
}
</programlisting>
<para>Zgrupowanie poleceń edycyjnych tak, aby można je było wycofać jednym poleceniem <guimenuitem>Cofnij</guimenuitem>, polega na objęciu poleceń<programlisting>view.removeSelectedText()</programlisting> i <programlisting>document.insertText()</programlisting> poleceniami <programlisting>document.editBegin()</programlisting> oraz <programlisting>document.editEnd()</programlisting>.</para>
</example>
<example id="advanced-editing-tools-desktop-example">
<title>Przykładowy plik <filename>.desktop</filename></title>
<para>Poniżej przedstawiono zawartość przykładowego pliku .desktop powiązanego z powyższym skryptem.</para>
<programlisting># Example of a .desktop file
[Desktop Entry]
Encoding=UTF-8
Name=Kate Part JavaScript Uppercase
Comment=Skrypt zamieniający treść zaznaczenia na duże litery
X-Kate-Command=uppercase-selection
X-Kate-Help=<p>Pomoc: <code>uppercase-selection</code></p>
</programlisting>
<para>W pliku tym, możliwe jest zdefiniowanie kodowania znaków (Encoding), nazwy skryptu (Name), komentarza (Comment), tekstu pomocy (X-Kate-Help) i polecenia linii poleceń (X-Kate-Command). Jeżeli plik .desktop znajdzie się w repozytoriach SVN środowiska KDE, to parametry: Name, Comment i X-Kate-Help będą automatycznie tłumaczone na inne języki przez zespoły tłumaczy KDE.</para>
</example>
<sect3>
<title>Wykorzystanie skryptów</title>
<para>Program &kate; przeszuka katalogi ze skryptami (patrz <link linkend="advanced-editing-tools-scripting-introduction">wyżej</link>) w poszukiwaniu plików o nazwie <filename>*.js</filename>. Dla każdego znalezionego pliku sprawdzane jest istnienie odpowiadającego mu pliku <filename>.desktop</filename> (np. dla skryptu: uppercase.js, poszukiwany będzie plik uppercase.desktop). </para>
<para>Jeżeli plik <filename>.desktop</filename> nie zostanie znaleziony, to skrypt zostanie zarejestrowany przez linię poleceń edytora pod nazwą pliku bez rozszerzenia .js. W opisywanym przykładzie będzie to <literal>uppercase</literal>. Jeżeli taka nazwa skryptu odpowiada użytkownikowi oraz nie ma potrzeby korzystania z innych możliwości, jakie daje plik <filename>.desktop</filename>, to wtedy użycie pliku <filename>.desktop</filename> nie jest wymagane. </para>
<para>Jeżeli istnieje plik <filename>.desktop</filename>, edytor odczyta nazwę skryptu z tego pliku z pozycji X-Kate-Command, na przykład: X-Kate-Command=uppercase-selection.</para>
</sect3>
</sect2>
</sect1>
</chapter>
|