LINUX.ORG.RU

Emacs jabber.el уведомление о сообщениях.

 ,


1

2

Всем доброе время суток, может кто знает как сделать уведомление о поступивших сообщениях в Emacs JabberEL. Как вообще отлавливать эти события. В имаксе есть функция (raise-frame) которая поднимает окно имакса на передний план. Вот как сделать чтоб при получении мессаги окно всплывало на передний план.

если есть хук на полученное сообщение - просто запили туда эту функцию
если нет попробуй добавить в сам jabber.el врятли будет сложно

(run-hooks 'my-hook)
(defun my-hook ()
  (raise-frame))

proofit404
()

Я у кого-то брал для notify-send, вот пример

(defvar libnotify-program "/usr/bin/notify-send")

(defun notify-send (title message)
  (start-process "notify" " notify"
                 libnotify-program "--expire-time=4000" title message))

(defun libnotify-jabber-notify (from buf text proposed-alert)
  "(jabber.el hook) Notify of new Jabber chat messages via libnotify"
  (when (or jabber-message-alert-same-buffer
            (not (memq (selected-window) (get-buffer-window-list buf))))
    (if (jabber-muc-sender-p from)
        (notify-send (format "(PM) %s"
                       (jabber-jid-displayname (jabber-jid-user from)))
               (format "%s: %s" (jabber-jid-resource from) text)))
      (notify-send (format "%s" (jabber-jid-displayname from))
             text)))

(add-hook 'jabber-alert-message-hooks 'libnotify-jabber-notify)

Думаю сюда можно приделать, и то, что ты хочешь.

Т.е. как сказали выше, просто сделать hook.

SAA ★★★
()
Ответ на: комментарий от SAA

Спасибо, теперь врубился придется чего нить почитать про Elisp, чтоб не задавать таких глупых вопросов.

suvor-07
() автор топика
Ответ на: комментарий от SAA

Вообщем сделал так добавил в ~/.emacs такие строки и все заработало

 (defun jabber-message-raise-fr(from buffer text proposed-alert)
    (when proposed-alert
    (raise-frame)))
(add-hook 'jabber-message-hooks 'jabber-message-raise-fr 'jabber-message-echo) 

suvor-07
() автор топика
Ответ на: комментарий от suvor-07

гы, просто когда открываешь какой-нито comint.el и там на несколько К строк отсутствует кодстайл...
сильно бесит, а так я не со зла ;)

proofit404
()
Ответ на: комментарий от proofit404

Если не ты я совсем бы невспомнил про автовыравнивание. Так как только постигаю азы Лиспа.

suvor-07
() автор топика
Ответ на: комментарий от psh

Добавил в закладки, как нибудь опробую эту штуку.

suvor-07
() автор топика

У меня так:

(add-hook 'jabber-activity-update-hook (lambda ()
  (start-process-shell-command "awesome-notify" nil  
    (format "echo jabber_new_message(%s) | awesome-client" (length jabber-activity-jids)))))
А awesome уже сам разбирается: подсвечивает иконки, разворачивает окна или пишит динамиком — что надо (вернее, что ему скажешь), то и делается.

mix_mix ★★★★★
()

Вот тут мой вариант: http://www.emacswiki.org/JabberEl#toc16

(чуть пониже отмотай до urgency hint)

Там функция повешена на jabber-activity-update-hook, но можно сделать вариант через связку jabber-activity-update-hook и jabber-message-hook. Если подойдет идеологически этот вариант, то кастуй.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.