Function: nndiary-request-expire-articles
nndiary-request-expire-articles is a byte-compiled function defined in
nndiary.el.gz.
Signature
(nndiary-request-expire-articles ARTICLES GROUP &optional SERVER FORCE)
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/nndiary.el.gz
(deffoo nndiary-request-expire-articles (articles group &optional server force)
(nndiary-possibly-change-directory group server)
(let ((active-articles
(nnheader-directory-articles nndiary-current-directory))
article rest number)
(nnmail-activate 'nndiary)
;; Articles not listed in active-articles are already gone,
;; so don't try to expire them.
(setq articles (nreverse (seq-intersection articles active-articles #'eq)))
(while articles
(setq article (nndiary-article-to-file (setq number (pop articles))))
(if (and (nndiary-deletable-article-p group number)
;; Don't use nnmail-expired-article-p. Our notion of expiration
;; is a bit peculiar ...
(or force (nndiary-expired-article-p article)))
(progn
;; Allow a special target group.
(unless (eq nnmail-expiry-target 'delete)
(with-temp-buffer
(nndiary-request-article number group server (current-buffer))
(let ((nndiary-current-directory nil))
(nnmail-expiry-target-group nnmail-expiry-target group)))
(nndiary-possibly-change-directory group server))
(nnheader-message 5 "Deleting article %s in %s" number group)
(condition-case ()
(funcall nnmail-delete-file-function article)
(file-error (push number rest)))
(setq active-articles (delq number active-articles))
(nndiary-nov-delete-article group number))
(push number rest)))
(let ((active (nth 1 (assoc group nndiary-group-alist))))
(when active
(setcar active (or (and active-articles
(apply #'min active-articles))
(1+ (cdr active)))))
(nnmail-save-active nndiary-group-alist nndiary-active-file))
(nndiary-save-nov)
(nconc rest articles)))