Function: gnus-setup-news
gnus-setup-news is a byte-compiled function defined in
gnus-start.el.gz.
Signature
(gnus-setup-news &optional RAWFILE LEVEL DONT-CONNECT)
Documentation
Setup news information.
If RAWFILE is non-nil, the .newsrc file will also be read. If LEVEL is non-nil, the news will be set up at level LEVEL.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/gnus-start.el.gz
;;;
;;; Active & Newsrc File Handling
;;;
(defun gnus-setup-news (&optional rawfile level dont-connect)
"Setup news information.
If RAWFILE is non-nil, the .newsrc file will also be read.
If LEVEL is non-nil, the news will be set up at level LEVEL."
(require 'nnmail)
(let ((init (not (and gnus-newsrc-alist gnus-active-hashtb (not rawfile))))
;; Binding this variable will inhibit multiple fetchings
;; of the same mail source.
(nnmail-fetched-sources (list t)))
(when init
;; Clear some variables to re-initialize news information.
(setq gnus-newsrc-alist nil
gnus-active-hashtb nil)
;; Read the newsrc file and create `gnus-newsrc-hashtb'.
(gnus-read-newsrc-file rawfile))
;; Make sure the archive server is available to all and sundry.
(let ((method (or (and (stringp gnus-message-archive-method)
(gnus-server-to-method
gnus-message-archive-method))
gnus-message-archive-method)))
;; Check whether the archive method is writable.
(unless (or (not method)
(stringp method)
(memq 'respool (assoc (format "%s" (car method))
gnus-valid-select-methods)))
(setq method "archive")) ;; The default.
(when (stringp method)
(setq method `(nnfolder
,method
(nnfolder-directory
,(nnheader-concat message-directory method))
(nnfolder-active-file
,(nnheader-concat message-directory
(concat method "/active")))
(nnfolder-get-new-mail nil)
(nnfolder-inhibit-expiry t))))
(if (assoc "archive" gnus-server-alist)
(when gnus-update-message-archive-method
(if method
(setcdr (assoc "archive" gnus-server-alist) method)
(setq gnus-server-alist (delq (assoc "archive" gnus-server-alist)
gnus-server-alist))))
(when method
(push (cons "archive" method) gnus-server-alist))))
;; If we don't read the complete active file, we fill in the
;; hashtb here.
(when (or (null gnus-read-active-file)
(eq gnus-read-active-file 'some))
(gnus-update-active-hashtb-from-killed))
(unless gnus-active-hashtb
(setq gnus-active-hashtb (gnus-make-hashtable 4000)))
;; Initialize the cache.
(when gnus-use-cache
(gnus-cache-open))
;; Possibly eval the dribble file.
(and init
(or gnus-use-dribble-file gnus-child)
(gnus-dribble-eval-file))
;; Child Gnusii should then clear the dribble buffer.
(when (and init gnus-child)
(gnus-dribble-clear))
(gnus-update-format-specifications)
;; See whether we need to read the description file.
(when (and (boundp 'gnus-group-line-format)
(stringp gnus-group-line-format)
(let ((case-fold-search nil))
(string-match "%[-,0-9]*D" gnus-group-line-format))
(not gnus-description-hashtb)
(not dont-connect)
gnus-read-active-file)
(gnus-read-all-descriptions-files))
;; Find new newsgroups and treat them.
(when (and init gnus-check-new-newsgroups (not level)
(gnus-check-server gnus-select-method)
(not gnus-child)
gnus-plugged)
(gnus-find-new-newsgroups))
;; Check and remove bogus newsgroups.
(when (and init gnus-check-bogus-newsgroups
gnus-read-active-file (not level)
(gnus-server-opened gnus-select-method))
(gnus-check-bogus-newsgroups))
;; Read any child files.
(gnus-parent-read-child-newsrc)
;; Find the number of unread articles in each non-dead group.
(let ((gnus-read-active-file (and (not level) gnus-read-active-file)))
(gnus-get-unread-articles level dont-connect))))