Emacs jabber

14 August 2009 #emacs#jabber

За время использование операционной системой Linux я перепробовал массу jabber-клиентов. И в конце концов остановился на jabber-el.

Как все созданное для Emacs, этот модуль обладает массой возможностей и потрясающей гибкостью. При работе я сам столкнулся с тем, что некоторые вещи выполняются не так тривиально, как хотелось бы и ответа на эти вопросы в интернете я так и не нашел. Поэтому решился написать эту статью, с описанием некоторых моментов, которые могут пригодиться в работе с jabber-el.

Сначала jabber-el необходимо установить. В Archlinux это тривиально, причем существует два пакета emacs-jabber и emacs-jabber-git. Первый является стабильной версией, которая представлена на офсайте, а вот второй пакет, это более новая версия jabber-el от Кирилла Коринского (одного из разработчиков jabber-el). В новой версии появляются группы в ростере, это то, что первым бросается в глаза при использование данной версии. Вот ее и установим:

$ yaourt -S emacs-jabber-git

После чего нужно в файл конфигурации .emacs прописать:

(require 'jabber)

В главном меню появляется Jabber, где есть пункт Customize. Выбрав который, можно настроить все необходимые параметры или воспользовавшись командой:

M-x jabber-customize

То есть нажимаем Alt-x и набираем jabber-customize, завершая ввод нажатием на RET. Все необходимые параметры можно найти в открывшемся буфере.

Первым делом необходимо задать свою учетную запись, которая будет использоваться. Это же можно сделать добавив в .emacs следующие строки:

(setq  jabber-account-list
    (quote (
           ("user@jabber.ru/emacs" (:password . "mypassword") (:network-server . "jabber.ru") (:connection-type . starttls))
           ("username@gmail.com" (:password . "gmailpassword") (:network-server . "talk.google.com") (:connection-type . ssl))
           )
    )
)

В данном случае прописаны два аккаунта, один на jabber.ru, второй на gtalk. Вместо значений user, username, password и gmailpassword необходимо внести свои.

Рекомендую для того, чтобы убрать из ростера отображение отключенных пользователей и справки по работе с ростером, прописать в .emacs следующее:

(jabber-roster-toggle-binding-display)
(jabber-roster-toggle-offline-display)

В дальнейшем, для вызова списка отключенных пользоваталей используется клавиша o в буфере ростера, а справка вызывается клавишей H.

Для проверки правописания в буферах jabber и для назначения некоторых комбинаций клавиш используем:

(add-hook 'jabber-chat-mode-hook 'flyspell-mode)
(global-set-key "\C-x\C-a" 'jabber-activity-switch-to)
(global-set-key (kbd "<f12>") 'jabber-switch-to-roster-buffer)

В данном случае используется комбинация Ctrl+x Ctrl+A для перехода к буферу, в котором было получено новое сообщение. Клавиша F12 используется для быстрого открытия ростера.

На этом простейшая настройка jabber-el заканчивается.

Для установки jabber-el вручную из git Кирилла Коринского (в случае, если используется дистрибутив линукса, в репозитории которого нет новой версии) выполняем следующие действия:

$ cd Temp
$ git clone git://catap.ru/emacs-jabber/emacs-jabber.git
$ cd emacs-jabber
$ autoreconf -i
$ ./configure --prefix=/usr --with-gconf-schema-file-dir=/etc/gconf/schemas \
 --libexecdir=/usr/lib/emacs-jabber
$ make
# make install

После чего повторяем действия по конфигурации файла .emacs, что было описано выше.

Установив и отконфигурировав, запускаем jabber-el, используя команду:

M-x jabber-connect

Эта запись значит, что нажимаем сочетание клавиш Alt-x и вводим строку jabber-connect, или просто жмем комбинацию клавиш Ctrl+x Ctrl+j Ctrl+c. Вообще практически все комбинации клавиш начинающиеся с Ctrl+x Ctrl+j закреплены за модулем  jabber, если конечно он используется.

Теперь несколько тонкостей при работе с jabber-el.

  1. Добавление нового пользователя в ростер. Для этого в ростере используется комбинация клавиш Ctrl-c Ctrt-r, после чего жмем 1 (единица). Затем в минибуфере отвечаем на вопросы, то есть вводим JID добавляемого пользователя и выбираем, как он будет показываться в ростере, под каким именем. Как подсказали в комментариях, можно то же самое сделать, нажав на s в буфере ростера.
  2. Авторизация пользователя. Когда другой человек добавляет нас к себе, приходит запрос авторизации. При этом в Emacs открывается новый буфер чата с приглашением авторизации, в котором будут прописаны несколько действий, типа Mutual, One-way и Decline. Эти действия, как я недавно выяснил есть не что иное, как обычные кнопки. И для того, чтобы выполнить нужно действие, просто наводим курсор на необходимый пункт и жмем RET. Decline -- отклонить запрос авторизации. One-way -- односторонняя подписка. Mutual -- авторизовать собеседника.
  3. Редактирование данных в ростере. Выбрав нужного нам пользователя, нажимаем клавишу e и отвечаем на ряд вопросов, таких как уточнение, кого именно будем редактировать, как он будет отображаться в ростере, то есть его имя и в какой группе он будет располагаться.

Вот как раз про эти элементарные операции в интернете нет ни слова. Надеюсь начинающим пользователям Emacs эти сведения не покажутся лишними…