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