Scott Tiger Tech Blog

Blog technologiczny firmy Scott Tiger S.A.

Archiwum dla Wrzesień 3rd, 2010

CodeMirror & Ymacs

Autor: Piotr Karpiuk o 3. września 2010

Ymacs

W świecie bardzo efektownych aplikacji WWW z bogatymi animacjami, wykresami, formatkami, tabelkami z zaokrąglonymi rogami itd. paradoksalnie trudno jest znaleźć bibliotekę JavaScriptu która udostępniałaby funkcjonalność prostego edytorka tekstu wspomagającego edycję kodu źródłowego (np. JSONa, JavaScriptu, XMLa, HTMLa czy innego języka programowania) dającego się osadzić we własnej stronie WWW. Chodzi o coś więcej niż oferuje zwykły TextArea, a więc podświetlanie składni, automatyczne wcinanie wierszy, pokazywanie pozycji kursora, wizualne parowanie nawiasów…

Okazuje się że technologie webowe kiepsko wspomagają programistę w tak zakreślonym temacie, o czym pisze Marijn Haverbeke w swoim artykule Implementing a syntax-higlighting JavaScript editor in JavaScript. Artykuł Comparison of JavaScript-based source code editors na angielskiej Wikipedii wylicza i porównuje znane rozwiązania, ale moim zdaniem tylko dwa wymienione w tytule: CodeMirror a zwłaszcza Ymacs zasługują na uznanie.

CodeMirror ciągle objawia rażące błędy i różnice w działaniu pomiędzy przeglądarkami, które dyskwalifikują go w produkcyjnych zastosowaniach. Poza tym trudno osadza się go we własnej stronie WWW, a podświetlanie składni działa wolno i czyni edycję większych dokumentów nieprzyjemnym. Do zalet należy zaliczyć w miarę łatwe definiowanie podświetlania składni wedle zdefiniowanych przez siebie reguł.

Wielkim zaskoczeniem na plus jest Ymacs, który działa zadowalająco szybko i bez rzucających się w oczy błędów. Mamy podświetlanie składni i wcinanie tekstu, a nawet wyszukiwanie przyrostowe. Edycja pliku o długości kilku tysięcy wierszy wydaje się zupełnie realna. Wśród wad Ymacsa należy wymienić to że nie działa pod Internet Explorerem oraz że skróty klawiaturowe nawiązują do zupełnie niepopularnego dziś edytora Emacs, ale to zapewne każdy może sobie zmienić.

Tags: , ,
Napisany w JavaScript, WWW | Brak komentarzy »