Sterowanie Emacsem z Firefoxa

2007-01-27, hack

Od jakiegoś czasu miałem na tapecie głębsze zapoznanie się z GreaseMonkey. Dla tych co nie wiedzą, jest to takie sprytne rozszerzenie pozwalające na wykonywanie własnych skryptów w JavaScripcie przy oglądaniu stron. Głównym celem tych skryptów jest naprawianie bądź rozszerzanie funkcjonalności używanych aplikacji webowych. Kiedyś użyłem tego rozszerzenie do naprawienia konsoli mojego rutera.

Tym razem postanowiłem ulepszyć swoje środowisko developerskie. Zamarzyła mi się integracja Firefoxa i Emacsa. Miałem dwa pomysły:

  • edycja zawartości pól typu textarea, do sprawnego pisania bloga i maili w gmailu
  • otwieranie plików z szablonami użytych do zbudowania oglądanego ekranu aplikacji (brzmi skomplikowanie)

Opiszę ten pierwszy.

W dokumentacji GreaseMonkey znalazłem możliwość wykonywania zapytań ajaxopodobych. A jakimś przypadkiem wcześniej znalazłem elserv. Jest to serwer HTTP uruchamiany w Emacsie. Zatem mam transport i to mój ulubiony.

Się zacząłęm zastanawiać jakiego to użyć protokołu RPC. Pomysły typu SOAP, XML-RPC odpadają z racji alergii na XML (objawia się tylko w domu :-)). Myślę sobie użyję JSON, jest lekki, przyjemny i działa :-). Na szczęście jest implemetnacja w elispie json.el, więc nie obejdzie się bez pisania kodera/dekodera. Zatem mam wszystko co trzeba. Pozostanie tylko napisać kawałek kodu “kleju”, lepiącego elserv z json.

Poszukując inspiracji w źródłach elserva znalazłem plik o obiecującej nazwie remote.el. Po uruchomieniu go i skierowaniu przeglądarki na podpowiedziany adres, oczom mym ukazał się następujący obrazek:





Sushi, Wazabi. Arigato. ??? :-)

Nic nie zrozumiem po japońsku, ale zrozumiałem po htmlowemu i elispowemu. Jest to prosty formularz, pozwalający przekazywać Emacsowi kod do wykonania. :-). Ha! To jest to! Proste, zawsze działające wołanie po czystym HTTP.

Procesu lepienia nie opiszę. Opiszę za to proces instalacji i użycia w aplikacji Railsowej

Oto co należy zainstalować:

  1. w Firefoxie greasemonkey
  2. w OSie elserv (jest w Debianie)
  3. w Firefoxie emacs-ctrl.user.js
  4. ten fragment kodu emacs-ctrl.el wkleić do swojego .emacs

Po zrestartowaniu Emacs i Firefoxa możemy przystąpić do przystosowania aplikacji:

  1. w pliku
    config/environments/development.rb dodajemy definicję stałej określającą bezwzględną ścieżkę do naszej aplikacji:

       PROJECT_ROOT = '/home/rafal/work/labs.nablaone.net/secmail/'
      

    Nie jest to eleganckie rozwiązanie.

  2. do domyślnego layoutu dodajemy zawartość tego pliku layout.rhtml

Po uruchomieniu aplikacji, na ekranie pojawią się linki otwierające stosowne pliki w Emacsie. Jak w przykładzie:





Jak to działa pozostawiam w gestii czytelnika. Ostrzegam, zawiera małe hack-value.

Oczywiście jestem otwarty na współpracę celem wdrożenia tego mechanizmu w Twojej organizacji ;-)

0 Comments

Jeszcze nikt tego nie skomentował.

Kanał RSS dla tego wpisu.

Niestety, skomentowanie tego wpisu jest niemożliwe.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2009 nablaone.net | powered by WordPress with Barecity