From dc1337cbf2756e826ae74e604ce5e2da8234ccc9 Mon Sep 17 00:00:00 2001 From: defanor Date: Sun, 11 Apr 2021 21:21:56 +0300 Subject: xmpp.el: add message notifications --- emacs/xmpp.el | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/emacs/xmpp.el b/emacs/xmpp.el index 803d64f..6f6c008 100644 --- a/emacs/xmpp.el +++ b/emacs/xmpp.el @@ -36,6 +36,7 @@ (require 'xml) (require 'seq) +(require 'alert) (defvar xmpp-command "rexmpp_xml_interface" "A command to run an XMPP client subprocess.") @@ -78,6 +79,9 @@ "The buffer size at which to truncate an XMPP-related buffer by approximately halving it.") +(defun xmpp-message-notify () + (alert (concat "A new message in " (buffer-name)) :category "xmpp")) + (defun xmpp-jid-to-bare (jid) (let* ((jid-list (reverse (string-to-list jid))) (resource-pos (seq-position jid-list ?/))) @@ -143,13 +147,15 @@ (when message-body (with-current-buffer (xmpp-query message-from proc) (xmpp-insert - (concat "< " (car (xml-node-children message-body)) "\n"))))) + (concat "< " (car (xml-node-children message-body)) "\n")) + (xmpp-message-notify)))) ("groupchat" (when message-body (with-current-buffer (xmpp-muc-buffer message-from proc) (xmpp-insert (concat (xmpp-jid-resource message-from) ": " - (car (xml-node-children message-body)) "\n"))))))))))) + (car (xml-node-children message-body)) "\n")) + (xmpp-message-notify)))))))))) (defun xmpp-set-from (proc xml) (let* ((name (xml-node-name xml)) @@ -297,7 +303,7 @@ (> xmpp-input-point xmpp-truncate-buffer-at)) (goto-char (/ xmpp-truncate-buffer-at 2)) (search-forward "\n") - (setq xmpp-input-point (- xmpp-input-point (1- (point)))) + (setq xmpp-input-point (- xmpp-input-point (- (point) (point-min)))) (delete-region (point-min) (point))) (goto-char xmpp-input-point) (funcall 'insert args) @@ -382,9 +388,7 @@ (bare-jid (xmpp-jid-to-bare jid))) (with-current-buffer (process-buffer process) (if (assoc bare-jid xmpp-query-buffers) - (let ((query-buf (cdr (assoc bare-jid xmpp-query-buffers)))) - (display-buffer query-buf) - query-buf) + (cdr (assoc bare-jid xmpp-query-buffers)) (let ((query-buf (generate-new-buffer (concat "*xmpp:" bare-jid "*")))) (with-current-buffer query-buf (xmpp-query-mode) @@ -427,9 +431,7 @@ (bare-jid (xmpp-jid-to-bare jid))) (with-current-buffer (process-buffer process) (if (assoc bare-jid xmpp-muc-buffers) - (let ((muc-buf (cdr (assoc bare-jid xmpp-muc-buffers)))) - (display-buffer muc-buf) - muc-buf) + (cdr (assoc bare-jid xmpp-muc-buffers)) (let ((muc-buf (generate-new-buffer (concat "*xmpp:" bare-jid "*")))) (with-current-buffer muc-buf (xmpp-muc-mode) -- cgit v1.2.3