Function: nnmairix-request-marks

nnmairix-request-marks is a byte-compiled function defined in nnmairix.el.gz.

Signature

(nnmairix-request-marks GROUP INFO &optional SERVER)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnmairix.el.gz
(deffoo nnmairix-request-marks (group info &optional server)
  ;; propagate info from underlying IMAP folder to nnmairix group
  ;; This is currently experimental and must be explicitly activated
  ;; with nnmairix-propagate-marks-to-nnmairix-group
  (when server
    (nnmairix-open-server server))
  (let* ((qualgroup (gnus-group-prefixed-name
		    group
		    (list 'nnmairix nnmairix-current-server)))
	 (readmarks (gnus-group-get-parameter qualgroup 'readmarks))
	 (propmarks (gnus-group-get-parameter qualgroup 'propmarks))
	 (folder (nnmairix-get-backend-folder group server))
	 (corr (nnmairix-get-numcorr group server))
	 (docorr (and corr (not (zerop (cadr corr)))))
	 (folderinfo `(,group 1 ((1 . 1))))
	 ) ;; readrange marks
      (when (and propmarks
		 nnmairix-propagate-marks-to-nnmairix-groups)
	;; these groups are not subscribed, so we have to ask the back end directly
	(if (eq nnmairix-backend 'nnimap)
	    (nnimap-request-update-info-internal folder folderinfo nnmairix-backend-server)
	  (nnmairix-call-backend "request-update-info" folder folderinfo nnmairix-backend-server))
	;; set range of read articles
	(setf (gnus-info-read info)
	      (if docorr
                  (nnmairix-map-range
                   (let ((off (cadr corr)))
                     (lambda (x) (+ x off)))
                   (gnus-info-read folderinfo))
                (gnus-info-read folderinfo)))
	;; set other marks
	(setf (gnus-info-marks info)
	      (if docorr
		  (mapcar (lambda (cur)
			    (cons
			     (car cur)
			     (nnmairix-map-range
			      (let ((off (cadr corr)))
                                (lambda (x) (+ x off)))
			      (list (cadr cur)))))
			  (gnus-info-marks folderinfo))
		(gnus-info-marks folderinfo))))
      (when (eq readmarks 'unread)
	(setf (gnus-info-read info) nil))
      (when (eq readmarks 'read)
	(setf (gnus-info-read info) (gnus-active qualgroup))))
  t)