Для этого служит функция jabber-chat-with, которая в качестве аргумента принимает jc и jid.
С jid все понятно - это string аргумент с jid получателя, а вот с jc ситуация сложнее. jc это список jabber-connections, каждый элемент коготорого в свою очередь список из параметров jabber-соединения. Все усложняется тем, что этот список каждый раз меняется, он зависит от порядка, в котором соединились ваши аккаунты.
Для получения этого jc из jabber-connections используется функция jabber-read-account. Если у вас больше одного аккаунта, то эта функция может взять jabber connection из положения курсора в ростере, активного буффера или интерактивно спрашивает jid. Работать не-интерактивно, принимая в качестве аргумента ваш jid, она не умеет.
Для биндинга клавиш понадобился не-интерактивный вариант, который принимает в качестве аргумента jid и возвращает jc, вот он:
(defun my-jabber-read-account (my-jid)
(let ((my-jid-list
(mapcar (lambda (c)
(cons
(jabber-connection-bare-jid c)
c))
jabber-connections)))
(cdr (assoc my-jid my-jid-list))))Использовать например так:
; Открыть буффер чата с juick@juick.com через аккаунт vyazovoi@jabber.ru
(global-set-key "\C-x\C-jj" '(lambda ()
(interactive)
(jabber-chat-with (my-jabber-read-account "vyazovoi@jabber.ru") "juick@juick.com")))UPD: в cvs-версию emacs-jabber добавили функцию jabber-find-account

1 коммент.:
Спасибо за идею! Я добавил подобную функцию в CVS, jabber-find-account.
Отправить комментарий