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)))