Function: gnus-summary-update-info

gnus-summary-update-info is a byte-compiled function defined in gnus-sum.el.gz.

Signature

(gnus-summary-update-info &optional NON-DESTRUCTIVE)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/gnus-sum.el.gz
(defun gnus-summary-update-info (&optional non-destructive)
  (save-excursion
    (let ((group gnus-newsgroup-name))
      (when group
	(when gnus-newsgroup-kill-headers
	  (setq gnus-newsgroup-killed
		(range-compress-list
		 (gnus-sorted-union
		  (range-list-intersection
		   gnus-newsgroup-unselected gnus-newsgroup-killed)
		  gnus-newsgroup-unreads))))
	(unless (listp (cdr gnus-newsgroup-killed))
	  (setq gnus-newsgroup-killed (list gnus-newsgroup-killed)))
	(let ((headers gnus-newsgroup-headers)
	      (ephemeral-p (gnus-ephemeral-group-p group))
	      info)
	  (unless ephemeral-p
	    (setq info (copy-sequence (gnus-get-info group))
		  info (delq (gnus-info-params info) info)))
	  ;; Set the new ranges of read articles.
	  (with-current-buffer gnus-group-buffer
	    (gnus-undo-force-boundary))
	  (gnus-update-read-articles
	   group (gnus-sorted-union
		  gnus-newsgroup-unreads gnus-newsgroup-unselected))
	  ;; Set the current article marks.
	  (let ((gnus-newsgroup-scored
		 (if (and (not gnus-save-score)
			  (not non-destructive))
		     nil
		   gnus-newsgroup-scored)))
	    (save-excursion
	      (gnus-update-marks)))
	  ;; Do the cross-ref thing.
	  (when gnus-use-cross-reference
	    (gnus-mark-xrefs-as-read group headers gnus-newsgroup-unreads))
	  ;; Do not switch windows but change the buffer to work.
	  (set-buffer gnus-group-buffer)
	  (unless ephemeral-p
	    (gnus-group-update-group
	     group nil
	     (equal info
		    (setq info (copy-sequence (gnus-get-info group))
			  info (delq (gnus-info-params info) info))))))))))