LINUX.ORG.RU
ФорумTalks

Пользователям jabber.el


0

2

Сколько не гуглил по такой фиче jabber.el как блеклист - ничего не нагуглил. Нашкрябал сам. Если кто-то поможет довести до ума или просто будет использовать - будет круто. Суть такова, в конфиг ~/.emacs пишем:

(defvar *jabber-blacklist* nil)

(defun jabber-reload-blacklist ()
  "Reload blacklist from file"
  (interactive)
  (load "~/.emacs-jabber-blacklist"))

(defun jabber-check-blacklist (&optional from)
  "Is JID blacklisted?"
  (interactive)
  (when (not from)
    (setf from (read-string "JID: " nil nil from)))
  (if (member* from *jabber-blacklist* :test 'string=)
      t nil))
(defun jabber-process-chat (jc xml-data)
  "If XML-DATA is a one-to-one chat message, handle it as such."
  (when (not (jabber-muc-message-p xml-data))
    (let ((from (jabber-xml-get-attribute xml-data 'from))
	  (error-p (jabber-xml-get-children xml-data 'error))
	  (body-text (car (jabber-xml-node-children
			   (car (jabber-xml-get-children
				 xml-data 'body))))))
      (if (not (jabber-check-blacklist from))
	  (progn
	    (when (or error-p
		      (run-hook-with-args-until-success 'jabber-chat-printers xml-data :foreign :printp))
	      (with-current-buffer (if (jabber-muc-sender-p from)
				       (jabber-muc-private-create-buffer
					jc
					(jabber-jid-user from)
					(jabber-jid-resource from))
				     (jabber-chat-create-buffer jc from))
		(let ((node
		       (ewoc-enter-last jabber-chat-ewoc (list (if error-p :error :foreign) xml-data :time (current-time)))))
		  (jabber-maybe-print-rare-time node))
		
		(dolist (hook '(jabber-message-hooks jabber-alert-message-hooks))
		  (run-hook-with-args hook
				from (current-buffer) body-text
				(funcall jabber-alert-message-function 
					 from (current-buffer) body-text))))))
	(message "Message from %s blacklisted" from)))))

Файл ~/.emacs-jabber-blacklist выглядит так:

(setf *jabber-blacklist* (list
"jid1"
"jid2"
"jid3"
...
"jidN"
))

Любые советы принимаю с благодарностью.

★★★★★

По C-x-j-b выводить запрос на добавление идентификатора под курсором в blacklist. Ну не руками же файл править?

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

кстати да :) спасибо за идею. обязательно сделаю завтра.

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

http://pastebin.com/nfcif5fB

собственно тут все. получился отдельный файлик который загружаю из основного конфига. на функции jabber-add-to-blacklist-jid-at-point и jabber-remove-from-blacklist-jid-at-point можно добавить хоткеи по вкусу.

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