jEdit jako IDE dla Ruby on Rails
Opublikowane przez Jarosław Zabiełło
Gdy myśli się o jakimś dobrym edytorze do kodowania w Ruby on Rails, to najczęściej słychać o RadRails lub Textmate. Tymczasem jest edytor, który po odpowiednim “dopaleniu” pluginami znacznie przewyższa to, co potrafią tamte oba razem. Mowa o darmowym, multiplatformowym edytorze jEdit. Cały szkopuł w tym, że właściwy dobór i konfiguracja stosownych pluginów nie jest dla każdego oczywista.
Dyskutowaliśmy o tym kiedyś na polskim forum Railsów ale jakoś nikt nie wpadł na to, aby to jeszcze bardziej uprościć proces konfiguracji jEdita. Ja dałem pomysł, Piotr Hlawski przygotował plik z konfiguracją. Należy:
- Zainstalować jEdit w wersji stabilnej 4.2
- Pobrać i rozpakować plik z folderem .jedit (22MB) i nadpisać ten co powstał podczas instalacji edytora (dla Windows XP będzie to C:\Documents and Settings\username)
- Uruchomić jEdita. To wszystko.

Co dostajesz w zamian? W pełni skonfigurowany jEdit do pracy z Railsami. Dodano snippety Textmate oraz uzupełnianie składni Rubiego poszerzone o zintegrowane wyświetlanie dokumentacji RDOC’a. Działa kolorowanie dla *.rb, *.rhtml, *.rxml, *rjs oraz *haml (szablony Haml są także dodane, a jakże. :)
Działa dopełnianie kodu HTML, tzn. gdziekolwiek wpiszesz </ a jEdit (podobnie jak u Dreamweavera) uzupełni odpowiedni tag.
Pod Ctrl+Shift-F podpięto wyskakujące okno pozwalające błyskawicznie znaleźć metodę Rubiego w kodzie. Wystarczy zacząć pisać, metody są błyskawicznie filtrowane. Przydatne do nawigacji po większym pliku.
Pod Ctrl+Shift-C podpięto wybieranie kodu koloru.
Dodany Project Manager pozwala na grupowanie projektów w wielowymiarowe grupy (RadRails tego nie potrafi)
Snippety
Poza masą zdefiniowanych snippetów(skopiowanych z Textmate) Jedit pozwala na bardzo łatwe dodanie nowych. Np. załóżmy że mamy chcemy, aby napisanie akuku i wciśnięcie znaku tabulacji rozwinęło coś w stylu
<div id="nazwa" name="nazwa">tresc</div>.<div id="${1:id}" name="${1:id}">${2:tekst}</div>$endSkładnia jest prosta. Wystarczy popatrzeć na więcej przykładów (są w Plugins -> Plugin Options -> SuperAbbrevs -> Abbreviations). jEdit korzysta tu z pluginu SuperAbbrevs (zobacz artykuł)
Makra w Pythonie
Jedit pozwala na bardzo łatwe dodawanie makr w Pythonie. Np. stwórzmy plik toUpper.py o treści:
textArea.setSelectedText(textArea.getSelectedText().upper())Wstawmy go do .jedit/macros. Następnie w JEdicie należy przeładować listę makr (Macros -> Rescan Macros) i na liście Macros powinniśmy zobaczyć naszą metodę toUpper. Teraz wystaczy zaznaczyć dowolny tekst, wybrać makro i nasz zaznaczony tekst będzie posiadał duże znaki. Pełne API do makr zawiera wiele innych metod do wykorzystania w makrach.
Opcji jEdita jest mnóstwo. Być może co ciekawsze opiszę w jakimś innym artykule. Zobacz też artykuł jEdit – tekstowy edytor programisty i webmastera.
Updated 2007-02-17:
Warto wspomnieć o niezłym dodatkowym pluginie Open Related – najlepiej zobacz załączone video.



Mam pytanko do tego edytora, zainstalowalem wersje stable i nie dziala mi zwijanie blokow np funkcji, petli for itp. aby jedit wiedzial ze ma zwinac linie pomiedzy ktorymis wierszami musze dodac znaki {{{ wiersze do zwiniecia }}}, czy da sie go skonfigurowac jakos aby sam wiedzial ktore fragmenty tekstu ma zwijac? Nie chodzi mi o ruby i o konfiguracje dostarzana przez pana Jarosława tylko o suchy edytor i rozne jezyki programowania, ktorych skladnie on podswietla.
P.S sorry ze tu pisze z tym problemem, ale moze sie jeszcze komus przyda kto pod wplywem tego newsa chcial przetestowac ten edytor.
Sposób zwijania bloków w domyślnej konfiguracji zależy od ustawienia (albo globalnego albo per język) w Global Options->Editing->Folding mode. Jeśli chcesz kontrolować fragmenty kodu, które mają być zwijane, musisz użyć trybu explicit – wtedy działa zazanaczanie fragmentów via {{{ i }}}. Domyślnym trybem o ile pamiętam jest tryb indent – taki tryb sprawdza się dobrze np. w ruby czy python, i takiego używam. Tryb explicit dobry jest dla np. PHP. Zawsze musisz sprawdzić co masz ustawione w Folding Mode dla (w change settings for mode), a co masz ustawione dla konkretnego języka.
Dziwne, ja nie mam żadnego problemu. Klasy, funkcje i bloki mają po lewej stronie taki trójkącik do zwijania.
utilities->global options->editing->folding mode – indent
o to Ci chodzi?
Jest dostepny PL lang do JEDIT’a ?? Tak z ciekawosci pytam, poniewaz niektorym przyjemniej sie pracuje gdy GUI jest w rodzimym jezyku :)
Super, dzieki fisher, mialem tam ustawione explicity dlatego nie dzialalo.
Warsztat pracy w JEdit :).
Ustawilem sobie fajna czcionke, nazywa sie: EFN Manhattan Bold, font-size(16).
Fajnie wyglada: wygladzona i w dodatku na czarnym tle.
Link: http://www.tusla.pl/temp/warsztat-pracy.jpg
Pracowalem na jedit do czasu pojawienia sie PDT dla eclipse – narzedzie bylo calkiem wygodne jednak to co mnie w nim denerwowalo – to toporny interfejs, i brak podowiadania skladni na poziomie mnie zadowalajacym oraz czeste problemy z niektorymi pluginami – svn, console i jakies jeszcze – nie pamietam dokladnie. Prawde mowiac nie ciagnie mnie zeby sprawdzic czy od lipca/sierpnia sytuacja sie pojawila ;S
jakim skrotem klawiszowym wywoluje sie te snippety? bo jakoś dojść nie mogę
Wpisujesz skrót i wciskasz Tab.
a jeszcze ostatnie pytanie, bo troche nie rozumim jak działa ten Project Viewer, dodaje sobie projekt, powiedzmy czysty railsowy, pozniej tworze jakiś controller w railsach, naciskam prawym na projekt daje re-import a w widoku projekt nie pokazuja sie wszystkie pliki i foldery (np u mnie nie pojawia sie w app/views katalog utworzonego kontrolera, pliki na dysku są, do tego jesli dodam recznie do folderu views folder z widokiem kontrolera to jest widoczny, i mozna pracowac na jego plikach, ale juz ponowny reimport calego prjektu nie importuje tych plikow i znowy nie mam olderu views, miał ktos cos takiego?
i czy da sie ustawic tak, zeby widok projektu byl synchronizowany w tle np co 30 sekund z plikami na dysku ?
Tak, ja tez sie zgadzam, ze Project Viewer dziala troche dziwnie. Dla mnie jest on, ze sie brzydko wyraze, najslabszym ogniwem calego jedita. Chcialbym, ze dzialal tak ladnie jak ma to miejsce w RadRails – tzn. automatyczna aktualizacja.
Pozdrawiam.
Ewidentnie, wygląda na to, że jEdit jest wzorowany na emacs i chce go naśladować w środowisku Windows. Stąd bogate sterowanie za pomocą skrótów klawiaturowych C-e C-b, ,dzielenie okien,pojęcie bufora dla kopii otwartego pliku etc. Nie wiem tylko czy rozszerzenia pisze się tak prosto w “przegadanej” Javie dla JEdit jak w ELispie dla Emacs. Np. funkcja w ELISP skrolująca ekran o jedną linię bez ruszania kursora
(defun my-scroll-down () (interactive) (scroll-down 1))
I jedna linijka żeby podpiąć pod Ctrl-Alt-p
(global-set-key ”\C-\M-p” ‘my-scroll-down)
Wydaje się, że jEdit może pełnić rolę mostu między emacs a środowiskami okienkowymi IDE