Добавление комментариев в ЖЖ при помощи Емакса

May 05, 2006 16:15

Как я уже писал автору ljupdate, после того, как я начал использовать ljupdate, единственное, чего мне не хватало, это возможности отвечать на ЖЖ комментарии в Емаксе.

Я посмотрел, как это сделано в Semagic, и обнаружил, что там это делается через ж... ужасный хак. В браузере на ссылке, ведущей на добавление комментария, из меню запускается Semagic. Дальше в Semagic пишется комментарий, и после нажатия на кнопку Post, этот комментарий автоматически копируется в поля формы в браузере, после чего опять нужно нажать на кнопку Post, только на этот раз уже в браузере.

Увидев это, я сразу вспомнил, что уже видел что-то подобное в Firefox. Соответствующее расширение называется mozex. Я его пару лет назад использовал в Mozilla, но оно перестало работать в Firefox. Теперь я нашел новую версию, настроил, и все прекрасно заработало.

Итак, что нужно сделать для того, чтобы писать ЖЖ комментарии в Емаксе:

  1. Идем на сайт mozex.mozdev.org, оттуда идем дальше по ссылке на http://www.gatsby.ucl.ac.uk/~iam23/code/mozex, и на этой странице кликаем на ссылку с текстом "Install a UTF-8 forcing, Firefox 1.5 compatible version of Mozex." Эта ссылка ведёт на файл mozex_utf8-1.071.xpi, т.е. mozex с поддержкой Unicode.
  2. После установки mozex и перезагрузки браузера, открываем Tools->Extension и Preferences для mozex. В настройках в поле Textareas пишем `/full-path/emacsclient %t', где full-path - полный путь к emacsclient. Если используется Емакс из CVS, то и путь тоже должен быть к emacsclient из CVS, т.е. из подкаталога lib-src, т.к. emacsclient из CVS не совместим с более старыми версиями.
  3. В свой .emacs добавляем (и запускаем) такой код:

    (server-start)
    (defun my-lj-reply-visit ()
    (when (string-match "^mozex\\.textarea"
    (file-name-nondirectory (buffer-file-name)))
    (recode-region (point-min) (point-max) 'utf-8 'koi8)
    (set-buffer-file-coding-system 'utf-8)))
    (add-hook 'server-visit-hook 'my-lj-reply-visit)
    (defun my-lj-reply-switch ()
    (when (string-match "^mozex\\.textarea"
    (file-name-nondirectory (buffer-file-name)))
    (html-mode)))
    (add-hook 'server-switch-hook 'my-lj-reply-switch)

    При желании берём у akshaal код для добавления времени написания комментария и вешаем его на хуки server-visit-hook и server-done-hook.
  4. Теперь для использования всего этого хозяйства, в пустом поле для ответа в браузере из popup-меню выбираем mozex->Edit Textarea, и переключааемся в Емакс. Пишем ответ и нажимаем `C-x #'. Переключаемся обратно в Firefox, и кликаем левой кнопкой мышки в Textarea. Написанный в Емаксе текст появляется в браузере. Нажимаем кнопку Post, и вуаля!
User-Agent: Emacs-ljupdate/3.9.0 Emacs/22.0 (i686-pc-linux-gnu)

lj, prog, emacs

Previous post Next post
Up