Jak wykorzystać w pełni platformę eclipse europa

Celem tego artykułu jest zgromadzenie porad, sztuczek i złotych myśli, które pozwolą efektywniej wykorzystywać środowiska programistyczne oparte o platformę eclipse.

Edytory i widoki

Jedna z zasad Pragmatycznego Programisty podaje, że edytor powinien być dla programisty jak przedłużenie ręki, dlatego szczególnie ważne jest opanowanie jego wszystkich możliwości.

Podpowiadanie argumentów funkcji

Na początek krótki, oczywisty i łatwy do zastosowania tips: podpowiedź argumentów funkcji można uzyskać poprzez wciśnięcie skrótu:

ctrl + shift + spacja

Szybkie uzupełnianie w oparciu o wpisany tekst (words completion)

Prawie każdy, kto korzysta z środowisk opartych o eclipse wykorzystuje w swojej pracy dobrodziejstwo zwane Context Assist, a znane też pod nazwą Intellisense. Nie każdy jednak zdaje sobie sprawę, że nie jest to jedyna forma, w jakiej eclipse europa jest w stanie pisać za nas tekst. Otóż programiści eclipse dali nam również do pomocy znaną z Emacsa (i wielu innych edytorów) funkcjonalność uzupełniania słów (Word Completion) w oparciu o już wpisany (innymi słowy - znajdujący się w którymkolwiek z otwartych edytorów) tekst. Jest to o tyle wygodne, że w tym przypadku nie ma znaczenia, czy piszemy kod, czy też napis (w wielu językach między cudzysłowami albo apostrofami), czy komentarze - uzupełnianie słów działa zawsze - nawet w plikach, które nie są obsługiwane przez żadną z naszych wtyczek (a więc też pliki tekstowe).

Żeby skorzystać z uzupełniania słów, wystarczy wpisać kilka pierwszych liter wyrazu (może być nawet jedna), a następnie skorzystać z magicznego skrótu klawiszowego:

alt + /

Jeśli kilka słów pasuje do wpisanego przedrostka, to pojawi się najbliższe "od góry". Wciskając jeszcze raz alt + / przechodzimy do następnego pasującego słowa itd.

Uwaga: Po ustawieniu w opcjach klawiatury trybu emacsa, alt + / jest rezerwowany na asystę kontekstową, co nadpisuje dotychczasowe zastosowanie tego skrótu. Trzeba sobie to przekonfigurować (ja ustawiłem Context Assist: alt+., Word Completion: alt + /).

Podświetlanie składni w plikach nieobsługiwanych przez środowiska.

To, co jest takie fajne w edytorach typu mcedit, gedit, emacs, vi itd., to to, że domyślnie zawierają reguły podświetlania składni dla ponad kilkudziesięciu języków. Jest to bardzo przydatne, ponieważ czasami system program pisany jest w jednym języku, skrypty budujące w drugim, testy w trzecim, dokumentacja w czwartym, a narzędzia dotyczące opieki nad projektem (np. system zgłaszania błędów przez użytkowników) w następnych kilku innych. W eclipse zazwyczaj edytory z podświetlaniem składni są częścią środowiska dla określonego języka lub zastosowania. Co w takim razie zrobić, kiedy chcemy edytować np. pliki bisona, flexa, albo YAMLa, a nie możemy znaleźć do nich wtyczek? Czy jesteśmy skazani na czarne litery na białym tle i nic więcej?

Odpowiedź brzmi nie. Wystarczy zainstalować wtyczkę EclipseColorer, która zapewnia podświetlanie składni dla ponad 150 języków programowania. Teraz już możemy spokojnie używać eclipse do wszelkiego rodzaju projektów, nie tylko tych, do których mamy zainstalowane środowiska. Można zatem w większości przypadków pozostać wiernym zasadzie, żeby używać jednego edytora do wszystkiego.

Eksport kodu do html

Czasami wygodnie jest wyeksportować pokolorowany kod gdzieś na zewnątrz platformy eclipse, choćby po to, by umieścić go na stronie internetowej. W tym celu można również użyć wspomnianej już wtyczki EclipseColorer. Wystarczy kliknąć prawym przyciskiem myszy na plik (albo zaznaczoną grupę plików) i wybrać z menu kontekstowego Colorer HTMLGenerator->Generate HTML, następnie wypełnić prosty formularz (podpowiedź - w tym formularzu ścieżka pod GNU/Linuxem jest podawana względem katalogu domowego użytkownika. Innymi słowy: katalog domowy użytkownika to './'), a następnie kliknąć Generate.

Nawigacja "co słowo", zamiast "co znak".

Ten wpis ma tylko na celu przypomnienie, że nawigacja "co słowo" (która na dobrą sprawę jest niemalże w każdym okienkowym edytorze tekstu) jest jazzy i trendy;). Wystarcz po prostu zamiast 'lewo' i 'prawo', wciskać odpowiednio ctrl + 'lewo' i ctrl + 'prawo'. Jeśli dociśnie się jeszcze shift, to dostajemy zaznaczanie "co słowo", które czasami potrafi oszczędzić czasu. To co wyróżnia tego typu funkcjonalność w edytorach kodu od podobnej w zwykłych edytorach/procesorach tekstu, to rozpoznawanie konwencji. I tak np. edytor Javy w JDT rozpoznaje nazwy typu MojaNowaNazwa jako trzy słowa i posłusznie zatrzymuje się przy każdej wielkiej literze. analogicznie jest z nazwami moja_nowa_nazwa. Wspominam o tym dlatego, że mało osób (z tego co zauważyłem) tego używa, a warto:).

Menu widoku.

Bardzo łatwo przeoczyć znajdującą się w prawym-górnym rogu (zaraz obok ikonki minimalizacji) małą kontrolkę przypominającą skierowaną w dól strzałkę (albo trójkąt). Kliknięcie w niego rozwinie Menu widoku, zawierające opcje wymyślone przez twórcę danego widoku. Na przykład dla widoku Shell udostępnionego przez wtyczkę Wicked Shell, znajduje się tam m. in. niedostępna nigdzie indziej opcja zmiany domyślnej konfiguracji powłoki na własną.

Konfiguracja i personalizacja.

Automatyczne wyzwalanie asysty kontekstowej podczas pisania (JDT).

Jest to coś, co domyślnie ma Microsoft Visual C#, a eclipse JDT nie. Jeśli zajrzymy w konfigurację edytora dla JDT, to zauważymy, że wyzwalacze asysty są dostosowywalne, jednak ilość miejsc na znaki wyzwalające jest mocno ograniczona. Z tego powodu trzeba zastosować małej sztuczki:

  1. edytujemy plik <WORKSPACE>\.metadata\.plugins\org.eclipse.core.runtime\.settings\org.eclipse.jdt.ui.prefs
  2. Znajdujemy linijkę o treści content_assist_autoactivation_triggers_java=cośtam (a jeśli jej nie ma, to sami ją dopisujemy) .
  3. w tej linijce po znaku = dopisujemy ręcznie cały alfabet (wielkie i małe litery) oraz inne znaki, po których chcemy mieć asystę.
  4. zapisujemy plik.
  5. po odpaleniu eclipse ustawiamy w opcjach czas reakcji asysty na 0.
  6. próbujemy;).

Uwaga: Nie testowałem mocno tego sposobu, także możliwe, że nie działa tak jak powinien.

Przypisywanie kombinacji klawiszy dla komend, które nie mają przypisanej domyślnie przypisanego skrótu.

Edytując i przeglądając skróty klawiszowe łatwo nie zauważyć małego niezaznaczonego pola podpisanego "include unbound commands" tuż pod listą komend. Ja sam nie zauważyłem jej kiedyś, kiedy szukałem komendy do minimalizacji widoku (przydaje się przy tzw. szybkich widokach, o czym poniżej). Warto przejrzeć komendy bez przypisanych skrótów - okazuje się, że za pomocą kombinacji klawiszy można np. odświeżyć aktualny plik z repozytorium Subversion, przełączyć się na konkretny widok itd.

Szybkie widoki.

Jeśli klikniemy prawym przyciskiem myszy na zakładce widoku, pokaże się menu kontekstowe, w którym mamy m. in. opcję fast view. Jeśli ją klikniemy, to widok zminimalizuje się do paska w lewym-dolnym rogu ekranu i można będzie go stamtąd przywoływać. Jest to bardzo użyteczny mechanizm, który omówię na przykładzie widoku console. Konsola nie jest nam potrzebna cały czas, a jeśli już to najlepiej na pełnym ekranie, poniewać tam pokazują wiadomości z kompilacji, wykonania programu itp. Najlepszym zatem wyjściem jest zrobienie z niej szybkiego widoku, następnie kliknięcie na ikonkę, która pojawi się w lewym-dolnym rogu ekranu. To przywoła konsolę na ekran. Teraz można złapać za prawą krawędź tego widoku i maksymalnie go rozszerzyć. następnie kliknąć jeszcze raz na ikonkę w lewym-dolnym rogu, co zminimalizuje konsolę. Teraz, jeśli mamy zaznaczoną gdzieś tam w preferencjach, żeby eclipse podczas budowania automatycznie wyświetlał konsolę, będzie ona dla nas dostępna wtedy kiedy jej potrzebujemy. Żeby ją schować z powrotem, można kliknąć na jej ikonkę, albo przypisać jakąś kombinację klawiszy do zdarzenia Minimize Active View or Editor (należy zaznaczyć Include unbound commands w menu skrótów klawiszowych) i używać tej kombinacji. W podobny sposób można się pozbyć z ekranu innych elementów, które chcemy widzieć na ekranie tylko wtedy, gdy ich używamy.

Wygodne przełączanie się pomiędzy perspektywami.

W prawym górnym rogu ekranu zazwyczaj znajduje się podręczny pasek perspektyw. można do niego dodawać nowe perspektywy i przełączać się pomiędzy dodanymi za pomocą znajdującej się tam ikonki. Niestety, miejsca wydaje się być za mało na wszystkie. Najłatwiejszym sposobem uporania się z tym, jest zastosowanie się do poniższych kroków:

  1. kliknij prawym przyciskiem myszy na ikonce przełączania perspektyw (najbardziej po lewej stronie paska) i odznaczyć opcję Show Text.
  2. złap myszą za lewą krawędź paska (zaznaczona na czerwono na załączonym gdzieś niżej obrazku) i rozciągnij go w lewo.
  3. dodaj za pomocą ikonki dodawania/przełączania nowe perspektywy do paska.

Końcowy efekt powinien wyglądać mniej więcej tak:

PerspectiveBar.png

Wbudowana powłoka.

Podziękowania dla Stefana Reicherta (autora wtyczki Wicked Shell) za okazaną mi pomoc w formie wyczerpujących odpowiedzi na maile popartych zrzutami ekranu.

Wtyczka o nazwie Wicked Shell autorstwa Stefana Reicherta pozwala na dostęp do powłoki z eclipse. Mimo, że nie jest jeszcze idealna, można jej już spokojnie używać. W tym rozdziale postaram się pokrótce wyjaśnić kłopoty, jakie może sprawić konfiguracja i używanie Wicked Shell.

Po pierwsze i najważniejsze - domyślna powłoka raczej nie będzie działała tak jak chcemy, chyba że zależy nam na działaniu z windowsową linią poleceń. Jeśli chodzi np. o basha, to, mimo że jest już domyślną powłoką dla eclipse pod Linuksem, najprawdopodobniej trzeba będzie go przekonfigurować.

Żeby to zrobić, pierwsze co należy zrobić, to sprawdzić, jaką unikatową sekwencją znaków kończy się prompt naszej powłoki. U mnie np. domyślny prompt wygląda tak:

astral@astral-laptop:~$

Chociaż tego nie widać, mój prompt kończy się spacją. Także unikatowa sekwencja, którą kończy się prompt ma postać '$ '. Ta informacja przyda się za moment.

Teraz należy utworzyć własną definicję powłoki. W tym celu udajemy się do Window->Preferences->Wicked Shell->Custom Shells. Następnie na formularzu klikamy na Create New, podajemy unikatowe ID (to może być cokolwiek, np. custom.bash) i wypełniamy resztę pól w następujący sposób (bez apostrofów na początku i na końcu):

  1. Name: dowolne
  2. Executable: 'bash -i'
  3. Path Delimeter: '$ ' (ta wartość jest zależna od prompta)
  4. Systempath Separator: ';'
  5. Line Feed: 'LF_ONLY'
  6. Command Delimeter: '|'
  7. Path Separator: 'SLASH'
  8. Character Encoding: Default' (nie ma sensu zmieniać na UTF-8, bo i tak wybór nie zostanie zapisany).
  9. Supported OSs: 'Linux', 'FreeBSD', 'Unix'
  10. Reszta: nie ruszać.

Przy okazji można w formularzu Style (podformularz gałęzi Wicked Shell) pozmieniać kolory etc.

Teraz warto by odpalić nową powłokę. Wybieramy Window->Show View->Other…->Wicked Shell->Shell. Powinien pojawić się widok powłoki. Teraz z menu widoku (ten trójkącik w prawym górnym rogu ekranu) wybieramy Active Shell i wybieramy tam nazwę naszej własnej powłoki. Teraz powinno działać wszystko z wyjątkiem kodowania.

Na skutek błędu w aktualnie stabilnej wersji Wicked Shell, wartość encoding jest zawsze zapisywana jako US-ASCII. Możesz się o tym przekonać otwierając jeszcze raz preferencje własnej powłoki - mimo, że ustawione było tam 'Default', teraz jest US-ASCII. Tę wartość trzeba, niestety, ręcznie wyedytować w pliku konfiguracyjnym (tak naprawdę trzeba robić to po każdym otwarciu formularza własnej powłoki). Zamykamy zatem eclipse, odnajdujemy plik: <WORKSPACE>\.metadata\.plugins\net.sf.wickedshell.domain/xmlShellDesciptors.xml i zamieniamy tam jedyne wystąpienie łańcucha 'US-ASCII' na 'UTF-8'. Teraz po ponownym odpaleniu eclipse powinniśmy mieć kodowanie UTF-8 w powłoce.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.