Robert Važan

Zvýrazňovače syntaxe pre Javu

Zvýrazňovanie syntaxe sa zvyčajne robí na úrovni používateľského rozhrania, pretože výstup zvýrazňovača musí zodpovedať možnostiam média. Existuje však potreba univerzálnych zvýrazňovačov, ktoré nie sú viazané na žiadnu platformu užívateľského rozhrania alebo ktoré aspoň produkujú výstup, z ktorého sa dá odfiltrovať všetko platformovo špecifické. Tu hľadám takéto univerzálne zvýrazňovače, ktoré sa dajú použiť v Jave.

Je niekoľko situácií, kedy príde platformovo nezávislý zvýrazňovač vhod:

Prehľadal som veľa miest: syntax-highlighting a syntax-highlighter témy na GitHube, niekoľko dotazov na SO (1, 2, 3) a hľadal som aj na internete. Vyzerá to tak, že ľudia väčšinou používajú zvýrazňovače špecifické pre danú platformu, konkrétne Highlight.js v prehliadači, RSyntaxTextArea vo Swingu, a CodeView v Androide. Žiadny z nich sa nedá priamo adaptovať na univerzálny platformovo nezávislý zvýrazňovač.

Existuje niekoľko polomŕtvych a mŕtvych zvýrazňovačov v čistej Jave:

Keďže zvýrazňovače v čistej Jave sú dosť chudobné, zvážme možnosti integrácie z iných jazykov:

Kompromisy sú všade. Vyberte si, čo bude pre vás najmenšie utrpenie. Nie je až také ťažké napísať modernú Javy knižnicu na zvýraznenie syntaxe pomocou Scintilluy alebo Sublime definícií. Je to zaujímavý námet pre nový opensource projekt, ale ja teraz nemám čas, tak asi len narýchlo obalím pygmentize alebo niečo podobné. Dajte mi vedieť, ak napíšete riadnu Java knižnicu na zvýrazňovanie syntaxe.