Na przestrzeni czasu zaprzyjaźniłem się ze świetnym edytorem jakim jest Emacs. Nasza długotrwała relacja spowodowała, że postanowiłem przenieść ten związek na wyższy poziom.. i udało się, jest jeszcze lepiej :). Teraz rozstajemy się jeszcze rzadziej. Jeśli Drogi Czytelniku też masz ochotę na głębszy romans, zapraszam do lektury tego wpisu.
Destrukcja
Podobno czasem bywa, że aby coś zbudować, trzeba coś zniszczyć. Tak zrobimy i tym razem i tworzenie nowego, lepszego świata zaczniemy od… usunięcia Emacsa i wszystkiego co z nim związane z systemu. Większość osób instaluje edytor z dystrybucyjnego repozytorium. Takie rozwiązanie jest wygodne, ale ma kilka przykrych konsekwencji. Przede wszystkim repozytoria często zawierają nieaktualne wersje, a wbrew pozorom Emacs rozwija się całkiem szybko, więc łatwo pozostać w tyle. Drugą sprawą są zależności, które instalują się przy okazji – nie zawsze wiadomo co to jest. Różne dystrybucje wykorzystują różne rodzaje repozytoriów, a więc ewentualne przeniesienie naszego środowiska pomiędzy dystrybucjami może sprawić niepotrzebny kłopot. Odpowiedzią na te problemy jest kompilacja – proces sporo trudniejszy, no ale coś za coś. W każdym razie pacman -R (czy co tam kto używa) do rąk i do dzieła! Ważne, aby wszystko usunąć – nie tylko podstawowy edytor, ale również wszystkie pakiety wspomagające – dodatkowe mody itd.
Budowanie
Po słodkim zniszczeniu pora zacząć budowanie nowego świata. Pierwszym krokiem będzie sklonowanie najnowszej wersji z repozytorium:
git clone git://git.savannah.gnu.org/emacs.git
a następnie kompilacja i instalacja:
./autogen.sh
./configure
make
sudo make install
i gotowe! Nasz nowy, błyszczący Emacs jest gotowy. W przypadku gdybyśmy chcieli zaktualizować naszą kompilację należy wyczyścić stare efekty, pobrać zmiany i powtórzyć cały proces:
make clean
git pull
./autogen.sh
./configure
make
sudo make install
Prace wykończeniowe
Nie od dziś wiadomo, że to prace wykończeniowe zajmują najwięcej zasobów – tak też jest w tym wypadku.
Dodatki
„Goły” Emacs, mimo że bardzo rozbudowany, nie posiada wszystkiego, co potrzebne do szczęścia. Z tego powodu na pewno chcielibyśmy wyposażyć naszą kompilację w szereg dodatków. Wszystkie dodatkowe moduły warto trzymać uporządkowane, w jednym miejscu. W ten sposób przeniesienie ich na inny system będzie wymagało zaledwie skopiowania pojedynczego katalogu. Genialne w swej prostocie, prawda? Osobiście preferuję przechowywanie dodatków w katalogu ~/.emacs.d, w którym utworzyłem sobie dwa katalogi: modules i themes, które odpowiednio zawierają moduły i motywy graficzne.
Konfiguracja
Skonfigurowanie Emacsa, skrojone do indywidualnych potrzeb jest zadaniem dosyć skomplikowanym. Zajmę się tym w kolejnej notce z serii emacsowej. Na chwilę obecną proponuję obejrzeć mój plik konfiguracyjny, który jest dosyć obszernie skomentowany.
Uruchamianie
Gdy mamy już wszystko elegancko skonfigurowane można swobodnie zacząć używać Emacsa, ale… wpisanie w konsoli „emacs” jest passe, demode i w ogóle bleee. Osobiście, w trakcie uruchamiania systemu odpalam Emacsa w trybie daemona:
emacs --daemon
Wtedy Emacs będzie pracował zawsze w tle, a jego uruchomienie za pomocą polecenia:
emacsclient
będzie się odbywało niemal natychmiastowo. Istotną zaletą takiego podejścia jest ciągłe przechowywanie sesji no i wysoka efektywność i wygoda. Wadą natomiast może być konieczność rozsądnego zarządzania buforami, które nie zamykają się same. W tym miejscu warto również stworzyć dla powyższego polecenia wygodny alias – w moim wypadku jest to po prostu e. e nazwa_pliku uruchamia mi ramkę Emacsa z plikiem gotowym do edycji i jest to co najmniej tak wygodne jak vim ;>.
Na zakończenie
Używanie Emacsa w ten sposób jest bardzo wygodne i już wiem, że nie zamienię go na nic innego :). Serdecznie polecam wszystkim spróbowanie takiego podejścia. Niedoświadczonym proponuję sklonowanie sobie mojego repozytorium z dotfiles:
git clone git://github.com/luksow/dotfiles.git
Można tam znaleźć mój katalog .emacs.d, plik konfiguracyjny Emacsa .emacs oraz plik .bash_rc z ustawieniami aliasów.
Powodzenia!