Publikowanie prosto z Emacsa, jej!

Obumarło się blogowi znowu. Szeroko zakrojone badania pokazały jasno i wyraźnie, że to wszystko przez nowoinformatyczne badziewne interfejsy 🙂 Za duże tarcie między pomysłem, a gotowym postem. Ale jest lekarstwo…

Moje największe uzależnienie (z którym walczę mężnie acz bezskutecznie od lutego) czyli Emacs czasem spycha mnie w różne zakątki internetów. I wczoraj mnie zwiało w rejony org2blog – pakietu Emacsa pozwalającego publikować teksty napisane w org-mode bezpośrednio do WordPressa. Pobawiłem się wczoraj godzinkę, dziś dwie i chyba coś z tego będzie.

Oczywiście jeszcze nie opisałem czym jest org-mode – więc post przyda się osobom z grubsza obeznanym z tematem. Ale jak nie opiszę to będzie wisiało – więc piszę.

Pakiet nazywa się org2blog i jest dostepny normalnie z managera pakietów Emacsa (czyli spod M-x list-packages). Instalujemy.

Ustawienia

Podstawy

Nie wiem czy jest sens opisywać – wchodzimy na https://github.com/punchagan/org2blog, przeklejamy konfigi do swojego init.el, ustawiamy adres bloga i dane logowania i już. Działa z kopa.

Publikowanie w UTF-8

Tyle że ten ‚kop’ to tak bardziej po nerach jest 😉 org2blog wywala się przy publikacji tekstów z polskimi (chińskimi itp.) literkami – niby obsługuje UTF-8 ale tylko wtedy gdy znaki są kodowane jednobajtowo.

Publikacja się wywala i ruca błędem: error in process sentinel: Multibyte text in HTTP request: POST /xmlrpc.php HTTP/1.1

Lekarstwo – wchodzimy tu: https://github.com/hexa00/emacs/blob/82945d2139f5c2bc09611746e698cce945a491d3/lib/custom-lib.el interesują nas linie: 38-185 – to jest łatka pozwalająca publikowac dowolne znaczki. Kradniemy bezwstydnie do własnego init.el

Kolorowanie kodów źródłowych

Domyślnie org2blog kody źródłowe z org-mode wrzuca w tagi [sourcecode]. Popularniejszy jest plugin Crayon i z tego ja korzystam. Więc:

  1. wchodzimy tu: https://gist.github.com/marcoimmel/79b7a58685d9da9f74ebbbd6aea2e42a
  2. ściągamy plik ox-wp-crayon.el
  3. wrzucamy go gdzieś do swoich elispów (u mnie katalog ~/elisp/)
  4. do init.el dodajemy: (require 'ox-wp-crayon.el)

Działa: