Function: gnus-notifications
gnus-notifications is an autoloaded and byte-compiled function defined
in gnus-notifications.el.gz.
Signature
(gnus-notifications)
Documentation
Send a notification on new message.
This check for new messages that are in group with a level lower
or equal to gnus-notifications-minimum-level and send a
notification using notifications-notify for it.
This is typically a function to add in
gnus-after-getting-new-news-hook
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-notifications.el.gz
;;;###autoload
(defun gnus-notifications ()
"Send a notification on new message.
This check for new messages that are in group with a level lower
or equal to `gnus-notifications-minimum-level' and send a
notification using `notifications-notify' for it.
This is typically a function to add in
`gnus-after-getting-new-news-hook'"
(dolist (entry gnus-newsrc-alist)
(let ((group (car entry)))
;; Check that the group level is less than
;; `gnus-notifications-minimum-level' and the group has unread
;; messages.
(when (and (<= (gnus-group-level group) gnus-notifications-minimum-level)
(let ((unread (gnus-group-unread group)))
(and (numberp unread)
(> unread 0))))
;; Each group should have an entry in the `gnus-notifications-sent'
;; alist. If not, we add one at this time.
(let ((group-notifications (or (assoc group gnus-notifications-sent)
;; Nothing, add one and return it.
(assoc group
(add-to-list
'gnus-notifications-sent
(cons group nil))))))
(dolist (article (gnus-list-of-unread-articles group))
;; Check if the article already has been notified
(unless (memq article (cdr group-notifications))
(with-current-buffer nntp-server-buffer
(gnus-request-head article group)
(article-decode-encoded-words) ; to decode mail addresses, subjects, etc
(let* ((address-components (mail-extract-address-components
(or (mail-fetch-field "From") "")))
(address (cadr address-components)))
;; Ignore mails from ourselves
(unless (and gnus-ignored-from-addresses
address
(cond ((functionp gnus-ignored-from-addresses)
(funcall gnus-ignored-from-addresses address))
(t (string-match-p
(gnus-ignored-from-addresses)
address))))
(let* ((photo-file (gnus-notifications-get-photo-file address))
(notification-id (gnus-notifications-notify
(or (car address-components) address)
(mail-fetch-field "Subject")
photo-file)))
(when notification-id
;; Register that we did notify this message
(setcdr group-notifications (cons article (cdr group-notifications)))
(unless (eq notification-id t)
;; Register the notification id for later actions
(add-to-list 'gnus-notifications-id-to-msg (list notification-id group article))))
(when photo-file
(delete-file photo-file)))))))))))))