link0ff: Juri (Default)
[personal profile] link0ff
Как я уже писал автору 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)
    

    При желании берём у [info]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)

Date: 2006-05-05 09:59 pm (UTC)
From: [identity profile] akshaal.livejournal.com
вот если по c-c c-c коментарий сразу на сервер отправлялся... только я кажется не видел в протоколе lj работу с коментариями.

Date: 2006-05-05 10:29 pm (UTC)
From: [identity profile] link0ff.livejournal.com
Автор ljupdate говорит, что нет такого API для отправки комментариев на сервер. Я тоже посмотрел в документации, ничего такого не могу найти.

Можно, конечно, попробовать посылать (POST) комментарии через HTTP, заполняя поля формы правильными значениями. Но мне еще не понятно, откуда брать значения для полей lj_form_auth, login_chal, chrp1 и т.д. В HTML-source страницы с формой для ответа видно, что эти поля с типом hidden имеют значения, уже полученные с сервера.

Date: 2006-05-06 05:05 am (UTC)
From: [identity profile] akshaal.livejournal.com
да прям оттуда и брать.. из хтмл.
Другой вопрос, что после того как коментарий отослан, то надо бы перегрузить html страницу в браузере. Как это сделать - идей пока нет.

Date: 2006-05-07 07:49 pm (UTC)
From: [identity profile] link0ff.livejournal.com
Можно сделать и без перегрузки html-страницы. Например, если mozex настроить так, чтобы из меню mozex->Link=>Send_link запускался бы, например, emacsclient -e (send-link"%r"), то в Емаксе можно при помощи http-get выкачивать html, парсить, и после C-c C-c при помощи http-post отсылать на talkpost_do.bml. Можно сделать проще: повесить (send-link"%t") на mozex->View_Page_Source, тогда Емакс будет получать уже готовый html-source.
Всё остальное можно делать также в Емаксе.

December 2020

S M T W T F S
  12345
6789101112
13141516171819
2021222324 2526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 24th, 2025 04:23 am
Powered by Dreamwidth Studios