Function: nnfolder-possibly-change-group

nnfolder-possibly-change-group is a byte-compiled function defined in nnfolder.el.gz.

Signature

(nnfolder-possibly-change-group GROUP &optional SERVER DONT-CHECK)

Source Code

;; Defined in /usr/src/emacs/lisp/gnus/nnfolder.el.gz
(defun nnfolder-possibly-change-group (group &optional server dont-check)
  ;; Change servers.
  (when (and server
	     (not (nnfolder-server-opened server)))
    (nnfolder-open-server server))
  (unless (gnus-buffer-live-p nnfolder-current-buffer)
    (setq nnfolder-current-buffer nil
	  nnfolder-current-group nil))
  ;; Change group.
  (let ((file-name-coding-system nnmail-pathname-coding-system))
    (when (and group
	       (not (equal group nnfolder-current-group))
	       (progn
		 (nnmail-activate 'nnfolder)
		 (and (assoc group nnfolder-group-alist)
		      (file-exists-p (nnfolder-group-pathname group)))))
      (if dont-check
	  (setq nnfolder-current-group group
		nnfolder-current-buffer nil)
	(let (file) ;; inf
	  ;; If we have to change groups, see if we don't already have
	  ;; the folder in memory.  If we do, verify the modtime and
	  ;; destroy the folder if needed so we can rescan it.
	  (setq nnfolder-current-buffer
		(nth 1 (assoc group nnfolder-buffer-alist)))

	  ;; If the buffer is not live, make sure it isn't in the
	  ;; alist.  If it is live, verify that nobody else has
	  ;; touched the file since last time.
	  (when (and nnfolder-current-buffer
		     (not (gnus-buffer-live-p nnfolder-current-buffer)))
	    (setq nnfolder-buffer-alist (delq nil nnfolder-buffer-alist) ;; inf
		  nnfolder-current-buffer nil))

	  (setq nnfolder-current-group group)

	  (when (or (not nnfolder-current-buffer)
		    (not (verify-visited-file-modtime
			  nnfolder-current-buffer)))
	    (save-excursion
	      (setq file (nnfolder-group-pathname group))
	      ;; See whether we need to create the new file.
	      (unless (file-exists-p file)
		(gnus-make-directory (file-name-directory file))
		(let ((nnmail-file-coding-system
		       (or nnfolder-file-coding-system-for-write
			   nnfolder-file-coding-system-for-write)))
		  (nnmail-write-region (point-min) (point-min)
				       file t 'nomesg nil 'excl)))
	      (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
		(set-buffer nnfolder-current-buffer)
		(push (list group nnfolder-current-buffer)
		      nnfolder-buffer-alist)))))))))