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

Огромное вам спасибо. Очень полезная информация. Если можно то сразу вопрос. А как вставлять многосторочные тексты? а то я отказался от него только из-за того, что этот тект отправляется собеседнику по одной строке кучей сообщения.
Если вы вставляете текст из буфера, он будет вставлен уже многострочным, то есть в том виде, что был… Если вы пишете самостоятельно многострочный текст, то для перехода на новую строку нужно вместо Enter использовать комбинацию Ctrl+j.
Про то как написать много сточный я знаю, но как победить отсылание собеседнику 20 сообщений если я отправил ему 20 строчный кусок текста?
Каким образом вы вставляете текст в буфер емакса? И еще вопрос, отправка сообщения у вас получается сразу при вставке или уже после нажатия на RET?
Очень плохая статья, вводящая в заблуждение
Не указано, что почти всё продемонстрированное легко делается через Customize. Рецепт установки из гит нерабочий. Добавление нового пользователя: просто «s» в ростере. One-way – это односторонняя подписка на presence. Всё это, а также многое другое отлично описано в info jabber. Актуальная документация это один из приоритетов проекта.
Попробуйте jabber-compose.
Что делать при вставке многострочников, это вопрос. Тут ведь не отличишь от просто последовательного набора многих строк вручную. Предлагайте варианты.
Чем же конкретно статья плохая? В чем она вводит в заблуждение?
Да, этот момент не указал, поправлю в будущем. Рецепт установки из гит рабочий, сам так долгое время ставил, пока в ауре не обратил внимание на гитовский пакет… Добавление нового пользователя, как впрочем и много другое реализуется несколькими способами, описал тот, что использую сам.
Спасибо за уточнение по One-way, долго думал, как это точно охарактеризовать…
$make install в /usr/lib/? Уточнение, как и многое другое… ну, вы понимаете
Читайте доки, люди, они рулез!
да, про make install ошибся, я им не пользовался… всегда использовал сам каталог репозитория, в котором проводил компиляцию… прописывая пути до него, в систему не устанавливал…
тут вы правы… судо не помешает…
что еще?
Поправить статью?
Да, уже вношу изменения…
А как можно сделать автоконнект при загрузки емакса?
После описания аккаунтов jabber в файле .emacs, просто прописать строку
jabber-connect-allТеперь при загрузке емакса jabber будет запускаться автоматом…
небольшое дополнение, или точнее забыл заключить команду в круглые скобки… должно быть так:
(jabber-connect-all)
Спасибо за статью. Не нахожу варианта решения следующей проблемы: во время использования jabber-транспорта серьезно раздражают многострочные статусы в ростере. Каким образом их можно отключить?
Я давно уже не использую emacs для работы с jabber, потому не могу припомнить уже варианта решения вашей проблемы.