+Fri Mar 14 20:11:01 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
+
+ * gnus.el: Gnus v5.4.26 is released.
+
+Fri Mar 14 19:57:41 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-setup.el (gnus-use-sc): Changed default.
+
+Fri Mar 14 19:53:05 1997 Kurt Swanson <kurt@dna.lth.se>
+
+ * gnus-art.el (gnus-article-goto-next-page): Place point.
+
+Fri Mar 14 18:46:54 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-art.el (gnus-article-mode-syntax-table): Make "-"
+ word-constituant.
+
+ * gnus-sum.el (gnus-article-sort-by-author): Don't bug out on
+ Froms without names.
+
+ * messagexmas.el (message-xmas-make-caesar-translation-table): Use
+ char-int.
+
+Fri Mar 14 18:44:33 1997 Per Abrahamsen <abraham@dina.kvl.dk>
+
+ * message.el (message-faces): New group.
+
+Fri Mar 14 18:43:16 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-sum.el (gnus-summary-limit-to-unread): Also exclude souped
+ articles.
+
+Fri Mar 14 18:35:06 1997 Matt Armstrong <Matt_Armstrong@geoworks.com>
+
+ * gnus-score.el (gnus-all-score-files): Remove duplicates.
+
+Fri Mar 14 18:21:07 1997 Andy Norman <ange@hplb.hpl.hp.com>
+
+ * gnus-xmas.el (gnus-xmas-switch-horizontal-scrollbar-off): Check
+ whether we have a scrollbar first.
+
+Fri Mar 14 18:15:32 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnfolder.el (nnfolder-save-mail): Don't fold case when doing
+ From_.
+
+Wed Mar 12 06:51:49 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * nnfolder.el (nnfolder-possibly-change-group): Accept a
+ dont-check param.
+ (nnfolder-request-group): Don't load folder.
+
+ * gnus.el (gnus-home-directory): New variable.
+
+Tue Mar 11 17:25:46 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-async.el (gnus-async-prefetch-article): Raise the level of
+ the message.
+
+Mon Mar 10 06:30:59 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus-score.el (gnus-score-find-trace): Would clobber the score
+ of other articles.
+
+ * nneething.el (nneething-create-mapping): Make sure
+ nneething-directory exists.
+
+ * nnfolder.el (nnfolder-adjust-min-active): New function.
+ (nnfolder-request-expire-articles): Use it.
+ (nnfolder-request-move-article): Ditto.
+ (nnfolder-request-scan): Switch to the right server first.
+
+Mon Mar 10 06:28:58 1997 Joev Dubach <dubach1@husc.harvard.edu>
+
+ * nnfolder.el (nnfolder-generate-active-file): Didn't work.
+
Sun Mar 9 18:38:37 1997 Lars Magne Ingebrigtsen <larsi@menja.ifi.uio.no>
* gnus.el: Gnus v5.4.25 is released.
(defface gnus-header-from-face
'((((class color)
(background dark))
- (:foreground "spring green" :bold t :italic t))
+ (:foreground "spring green" :bold t))
(((class color)
(background light))
- (:foreground "indianred" :bold t :italic t))
+ (:foreground "red3" :bold t))
(t
(:bold t :italic t)))
"Face used for displaying from headers."
(defface gnus-header-subject-face
'((((class color)
(background dark))
- (:foreground "SeaGreen3" :bold t :italic t))
+ (:foreground "SeaGreen3" :bold t))
(((class color)
(background light))
- (:foreground "firebrick" :bold t :italic t))
+ (:foreground "red4" :bold t))
(t
(:bold t :italic t)))
"Face used for displaying subject headers."
(defvar gnus-article-mode-syntax-table
(let ((table (copy-syntax-table text-mode-syntax-table)))
- ;;(modify-syntax-entry ?_ "w" table)
+ (modify-syntax-entry ?- "w" table)
table)
"Syntax table used in article mode buffers.
Initialized from `text-mode-syntax-table.")
"Show the next page of the article."
(interactive)
(when (gnus-article-next-page)
+ (goto-char (point-min))
(gnus-article-read-summary-keys nil (gnus-character-to-event ?n))))
(defun gnus-article-goto-prev-page ()
(nntp-server-buffer
(get-buffer gnus-async-prefetch-article-buffer)))
(when do-message
- (gnus-message 7 "Prefetching article %d in group %s"
+ (gnus-message 9 "Prefetching article %d in group %s"
article group))
(gnus-request-article article group))))))))))
(when (and (or force (not (eq gnus-use-cache 'passive)))
(numberp article)
(> article 0)
- (vectorp headers))
- ; This might be a dummy article.
+ (vectorp headers)) ; This might be a dummy article.
;; If this is a virtual group, we find the real group.
(when (gnus-virtual-group-p group)
(let ((result (nnvirtual-find-group-art
"clewis@ferret.ocunix.on.ca;" ; Chris Lewis
"jem@xpat.com;" ; Despammer from Korea
"snowhare@xmission.com" ; Benjamin "Snowhare" Franz
- "red@redpoll.mrfs.oh.us (Richard E. Depew)"
+ "red@redpoll.mrfs.oh.us (Richard E. Depew)" ; ARMM! ARMM!
)
"List of NoCeM issuers to pay attention to."
:group 'gnus-nocem
(defun gnus-score-find-trace ()
"Find all score rules that applies to the current article."
(interactive)
- (let ((gnus-newsgroup-headers
- (list (gnus-summary-article-header)))
- (gnus-newsgroup-scored nil)
- trace)
- (save-excursion
- (nnheader-set-temp-buffer "*Score Trace*"))
- (setq gnus-score-trace nil)
- (gnus-possibly-score-headers 'trace)
- (if (not (setq trace gnus-score-trace))
- (gnus-error
- 1 "No score rules apply to the current article (default score %d)."
- gnus-summary-default-score)
- (set-buffer "*Score Trace*")
- (gnus-add-current-to-buffer-list)
- (while trace
- (insert (format "%S -> %s\n" (cdar trace)
- (file-name-nondirectory (caar trace))))
- (setq trace (cdr trace)))
- (goto-char (point-min))
- (gnus-configure-windows 'score-trace))))
+ (let ((old-scored gnus-newsgroup-scored))
+ (let ((gnus-newsgroup-headers
+ (list (gnus-summary-article-header)))
+ (gnus-newsgroup-scored nil)
+ trace)
+ (save-excursion
+ (nnheader-set-temp-buffer "*Score Trace*"))
+ (setq gnus-score-trace nil)
+ (gnus-possibly-score-headers 'trace)
+ (if (not (setq trace gnus-score-trace))
+ (gnus-error
+ 1 "No score rules apply to the current article (default score %d)."
+ gnus-summary-default-score)
+ (set-buffer "*Score Trace*")
+ (gnus-add-current-to-buffer-list)
+ (while trace
+ (insert (format "%S -> %s\n" (cdar trace)
+ (file-name-nondirectory (caar trace))))
+ (setq trace (cdr trace)))
+ (goto-char (point-min))
+ (gnus-configure-windows 'score-trace)))
+ (set-buffer gnus-summary-buffer)
+ (setq gnus-newsgroup-scored old-scored)))
(defun gnus-score-find-favourite-words ()
"List words used in scoring."
(pop score-files))
(let ((files score-files))
(while (cdr files)
- (when (member (cadr files) (cddr files))
- (setcdr files (cddr files)))
- (pop files)))
+ (if (member (cadr files) (cddr files))
+ (setcdr files (cddr files))
+ (pop files))))
;; Do the scoring if there are any score files for this group.
score-files))
"Set this if you want to use SENDMAIL for mail reading")
(defvar gnus-use-vm nil
"Set this if you want to use the VM package for mail reading")
-(defvar gnus-use-sc t
+(defvar gnus-use-sc nil
"Set this if you want to use Supercite")
(defvar gnus-use-mailcrypt t
"Set this if you want to use Mailcrypt for dealing with PGP messages")
;;; User Variables:
-(defvar gnus-soup-directory "~/SoupBrew/"
+(defvar gnus-soup-directory (nnheader-concat gnus-home-directory "SoupBrew/")
"*Directory containing an unpacked SOUP packet.")
-(defvar gnus-soup-replies-directory (concat gnus-soup-directory "SoupReplies/")
+(defvar gnus-soup-replies-directory
+ (nnheader-concat gnus-soup-directory "SoupReplies/")
"*Directory where Gnus will do processing of replies.")
(defvar gnus-soup-prefix-file "gnus-prefix"
"*Format string command for unpacking a SOUP packet.
The SOUP packet file name will be inserted at the %s.")
-(defvar gnus-soup-packet-directory "~/"
+(defvar gnus-soup-packet-directory gnus-home-directory
"*Where gnus-soup will look for REPLIES packets.")
(defvar gnus-soup-packet-regexp "Soupin"
(require 'gnus-util)
(require 'message)
-(defcustom gnus-startup-file "~/.newsrc"
+(defcustom gnus-startup-file (nnheader-concat gnus-home-directory ".newsrc")
"Your `.newsrc' file.
`.newsrc-SERVER' will be used instead if that exists."
:group 'gnus-start
:type 'file)
-(defcustom gnus-init-file "~/.gnus"
+(defcustom gnus-init-file (nnheader-concat gnus-home-directory ".gnus")
"Your Gnus elisp startup file.
If a file with the .el or .elc suffixes exist, it will be read
instead."
(let ((extract (funcall
gnus-extract-address-components
(mail-header-from h1))))
- (or (car extract) (cdr extract)))
+ (or (car extract) (cadr extract) ""))
(let ((extract (funcall
gnus-extract-address-components
(mail-header-from h2))))
- (or (car extract) (cdr extract)))))
+ (or (car extract) (cadr extract) ""))))
(defun gnus-thread-sort-by-author (h1 h2)
"Sort threads by root author."
gnus-killed-mark gnus-kill-file-mark
gnus-low-score-mark gnus-expirable-mark
gnus-canceled-mark gnus-catchup-mark gnus-sparse-mark
- gnus-duplicate-mark)
+ gnus-duplicate-mark gnus-souped-mark)
'reverse)))
(defalias 'gnus-summary-delete-marked-with 'gnus-summary-limit-exclude-marks)
This is ugly, but it works around a bug in `window-displayed-height'.")
(defun gnus-xmas-switch-horizontal-scrollbar-off ()
- (set-specifier scrollbar-height (cons (current-buffer) 0)))
+ (when (featurep 'scrollbar)
+ (set-specifier scrollbar-height (cons (current-buffer) 0))))
(defun gnus-xmas-summary-recenter ()
"\"Center\" point in the summary window.
:link '(custom-manual "(gnus)Exiting Gnus")
:group 'gnus)
-(defconst gnus-version-number "5.4.25"
+(defconst gnus-version-number "5.4.26"
"Version number for this version of Gnus.")
(defconst gnus-version (format "Gnus v%s" gnus-version-number)
(require 'gnus-util)
(require 'nnheader)
-(defcustom gnus-directory (or (getenv "SAVEDIR") "~/News/")
+(defcustom gnus-home-directory "~/"
+ "Directory variable that specifies the \"home\" directory.
+All other Gnus path variables are initialized from this variable."
+ :group 'gnus-files
+ :type 'directory)
+
+(defcustom gnus-directory (or (getenv "SAVEDIR")
+ (nnheader-concat gnus-home-directory "News/"))
"Directory variable from which all other Gnus file variables are derived."
:group 'gnus-files
:type 'directory)
"Composing Mail Messages"
:group 'message)
+(defgroup message-faces nil
+ "Faces used for message composing."
+ :group 'message
+ :group 'faces)
+
(defcustom message-directory "~/Mail/"
"*Directory from which all other mail file variables are derived."
:group 'message-various
(t
(:bold t :italic t)))
"Face used for displaying From headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-cc-face
'((((class color)
(t
(:bold t)))
"Face used for displaying Cc headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-subject-face
'((((class color)
(t
(:bold t)))
"Face used for displaying subject headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-newsgroups-face
'((((class color)
(t
(:bold t :italic t)))
"Face used for displaying newsgroups headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-other-face
'((((class color)
(t
(:bold t :italic t)))
"Face used for displaying newsgroups headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-name-face
'((((class color)
(t
(:bold t)))
"Face used for displaying header names."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-header-xheader-face
'((((class color)
(t
(:bold t)))
"Face used for displaying X-Header headers."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-separator-face
'((((class color)
(t
(:bold t)))
"Face used for displaying the separator."
- :group 'message-headers)
+ :group 'message-faces)
(defface message-cited-text-face
'((((class color)
(t
(:bold t)))
"Face used for displaying cited text names."
- :group 'message-headers)
+ :group 'message-faces)
(defvar message-font-lock-keywords
(let* ((cite-prefix "A-Za-z")
"Create a rot table with offset N."
(let ((i -1)
(table (make-string 256 0))
- (a (char-to-int ?a))
- (A (char-to-int ?A)))
+ (a (char-int ?a))
+ (A (char-int ?A)))
(while (< (incf i) 256)
(aset table i i))
(concat
(defun nneething-create-mapping ()
;; Read nneething-active and nneething-map.
- (let ((map-file (nneething-map-file))
- (files (directory-files nneething-directory))
- touched map-files)
- (when (file-exists-p map-file)
- (ignore-errors
- (load map-file nil t t)))
- (unless nneething-active
- (setq nneething-active (cons 1 0)))
- ;; Old nneething had a different map format.
- (when (and (cdar nneething-map)
- (atom (cdar nneething-map)))
- (setq nneething-map
- (mapcar (lambda (n)
- (list (cdr n) (car n)
- (nth 5 (file-attributes
- (nneething-file-name (car n))))))
- nneething-map)))
- ;; Remove files matching the exclusion regexp.
- (when nneething-exclude-files
- (let ((f files)
+ (when (file-exists-p nneething-directory)
+ (let ((map-file (nneething-map-file))
+ (files (directory-files nneething-directory))
+ touched map-files)
+ (when (file-exists-p map-file)
+ (ignore-errors
+ (load map-file nil t t)))
+ (unless nneething-active
+ (setq nneething-active (cons 1 0)))
+ ;; Old nneething had a different map format.
+ (when (and (cdar nneething-map)
+ (atom (cdar nneething-map)))
+ (setq nneething-map
+ (mapcar (lambda (n)
+ (list (cdr n) (car n)
+ (nth 5 (file-attributes
+ (nneething-file-name (car n))))))
+ nneething-map)))
+ ;; Remove files matching the exclusion regexp.
+ (when nneething-exclude-files
+ (let ((f files)
+ prev)
+ (while f
+ (if (string-match nneething-exclude-files (car f))
+ (if prev (setcdr prev (cdr f))
+ (setq files (cdr files)))
+ (setq prev f))
+ (setq f (cdr f)))))
+ ;; Remove deleted files from the map.
+ (let ((map nneething-map)
prev)
- (while f
- (if (string-match nneething-exclude-files (car f))
- (if prev (setcdr prev (cdr f))
- (setq files (cdr files)))
- (setq prev f))
- (setq f (cdr f)))))
- ;; Remove deleted files from the map.
- (let ((map nneething-map)
- prev)
- (while map
- (if (and (member (cadar map) files)
- ;; We also remove files that have changed mod times.
- (equal (nth 5 (file-attributes
- (nneething-file-name (cadar map))))
- (caddar map)))
- (progn
- (push (cadar map) map-files)
- (setq prev map))
+ (while map
+ (if (and (member (cadar map) files)
+ ;; We also remove files that have changed mod times.
+ (equal (nth 5 (file-attributes
+ (nneething-file-name (cadar map))))
+ (caddar map)))
+ (progn
+ (push (cadar map) map-files)
+ (setq prev map))
+ (setq touched t)
+ (if prev
+ (setcdr prev (cdr map))
+ (setq nneething-map (cdr nneething-map))))
+ (setq map (cdr map))))
+ ;; Find all new files and enter them into the map.
+ (while files
+ (unless (member (car files) map-files)
+ ;; This file is not in the map, so we enter it.
(setq touched t)
- (if prev
- (setcdr prev (cdr map))
- (setq nneething-map (cdr nneething-map))))
- (setq map (cdr map))))
- ;; Find all new files and enter them into the map.
- (while files
- (unless (member (car files) map-files)
- ;; This file is not in the map, so we enter it.
- (setq touched t)
- (setcdr nneething-active (1+ (cdr nneething-active)))
- (push (list (cdr nneething-active) (car files)
- (nth 5 (file-attributes
- (nneething-file-name (car files)))))
- nneething-map))
- (setq files (cdr files)))
- (when (and touched
- (not nneething-read-only))
- (nnheader-temp-write map-file
- (insert "(setq nneething-map '")
- (gnus-prin1 nneething-map)
- (insert ")\n(setq nneething-active '")
- (gnus-prin1 nneething-active)
- (insert ")\n")))))
+ (setcdr nneething-active (1+ (cdr nneething-active)))
+ (push (list (cdr nneething-active) (car files)
+ (nth 5 (file-attributes
+ (nneething-file-name (car files)))))
+ nneething-map))
+ (setq files (cdr files)))
+ (when (and touched
+ (not nneething-read-only))
+ (nnheader-temp-write map-file
+ (insert "(setq nneething-map '")
+ (gnus-prin1 nneething-map)
+ (insert ")\n(setq nneething-active '")
+ (gnus-prin1 nneething-active)
+ (insert ")\n"))))))
(defun nneething-insert-head (file)
"Insert the head of FILE."
(point) (progn (end-of-line) (point)))))))))))
(deffoo nnfolder-request-group (group &optional server dont-check)
- (nnfolder-possibly-change-group group server)
+ (nnfolder-possibly-change-group group server t)
(save-excursion
- (nnmail-activate 'nnfolder)
(if (not (assoc group nnfolder-group-alist))
(nnheader-report 'nnfolder "No such group: %s" group)
(if dont-check
(car range) (cdr range) group))))))))
(deffoo nnfolder-request-scan (&optional group server)
+ (nnfolder-possibly-change-group nil server)
(when nnfolder-get-new-mail
(nnfolder-possibly-change-group group server)
(nnmail-get-new-mail
(unless nnfolder-inhibit-expiry
(nnheader-message 5 "Deleting articles...done"))
(nnfolder-save-buffer)
- ;; Find the lowest active article in this group.
- (let* ((active (cadr (assoc newsgroup nnfolder-group-alist)))
- (marker (concat "\n" nnfolder-article-marker))
- (number "[0-9]+")
- (activemin (cdr active)))
- (goto-char (point-min))
- (while (and (search-forward marker nil t)
- (re-search-forward number nil t))
- (setq activemin (min activemin
- (string-to-number (buffer-substring
- (match-beginning 0)
- (match-end 0))))))
- (setcar active activemin))
+ (nnfolder-adjust-min-active newsgroup)
(nnmail-save-active nnfolder-group-alist nnfolder-active-file)
(nconc rest articles))))
(when (search-forward (nnfolder-article-string article) nil t)
(nnfolder-delete-mail))
(when last
- (nnfolder-save-buffer))))
+ (nnfolder-save-buffer)
+ (nnfolder-adjust-min-active group))))
result))
(deffoo nnfolder-request-accept-article (group &optional server last)
\f
;;; Internal functions.
+(defun nnfolder-adjust-min-active (group)
+ ;; Find the lowest active article in this group.
+ (let* ((active (cadr (assoc group nnfolder-group-alist)))
+ (marker (concat "\n" nnfolder-article-marker))
+ (number "[0-9]+")
+ (activemin (cdr active)))
+ (goto-char (point-min))
+ (while (and (search-forward marker nil t)
+ (re-search-forward number nil t))
+ (setq activemin (min activemin
+ (string-to-number (buffer-substring
+ (match-beginning 0)
+ (match-end 0))))))
+ (setcar active activemin)))
+
(defun nnfolder-article-string (article)
(if (numberp article)
(concat "\n" nnfolder-article-marker (int-to-string article) " ")
(point))
(point-max))))))
-(defun nnfolder-possibly-change-group (group &optional server)
+(defun nnfolder-possibly-change-group (group &optional server dont-check)
;; Change servers.
(when (and server
(not (nnfolder-server-opened server)))
(push (list group (cons 1 0)) nnfolder-group-alist)
(nnmail-save-active nnfolder-group-alist nnfolder-active-file))
- (let (inf file)
- ;; 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.
- (when (setq inf (assoc group nnfolder-buffer-alist))
- (setq nnfolder-current-buffer (nth 1 inf)))
-
- ;; 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 inf nnfolder-buffer-alist)
- 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))
- (nnmail-write-region 1 1 file t 'nomesg))
- (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
- (set-buffer nnfolder-current-buffer)
- (push (list group nnfolder-current-buffer)
- nnfolder-buffer-alist)))))))
+ (unless dont-check
+ (let (inf file)
+ ;; 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.
+ (when (setq inf (assoc group nnfolder-buffer-alist))
+ (setq nnfolder-current-buffer (nth 1 inf)))
+
+ ;; 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 inf nnfolder-buffer-alist)
+ 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))
+ (nnmail-write-region 1 1 file t 'nomesg))
+ (when (setq nnfolder-current-buffer (nnfolder-read-folder group))
+ (set-buffer nnfolder-current-buffer)
+ (push (list group nnfolder-current-buffer)
+ nnfolder-buffer-alist))))))))
(defun nnfolder-save-mail (group-art-list)
"Called narrowed to an article."
(goto-char (point-min)))
;; Quote all "From " lines in the article.
(forward-line 1)
- (while (re-search-forward "^From " nil t)
- (beginning-of-line)
- (insert "> "))
+ (let (case-fold-search)
+ (while (re-search-forward "^From " nil t)
+ (beginning-of-line)
+ (insert "> ")))
(setq save-list group-art-list)
(nnmail-insert-lines)
(nnmail-insert-xref group-art-list)
(while (setq file (pop files))
(when (and (not (backup-file-name-p file))
(message-mail-file-mbox-p
- (concat nnfolder-directory file)))
- (nnheader-message 5 "Adding group %s..." file)
- (push (list file (cons 1 0)) nnfolder-group-alist)
- (nnfolder-possibly-change-group file)
- (nnfolder-close-group file))
- (message ""))))
+ (nnheader-concat nnfolder-directory file)))
+ (let ((oldgroup (assoc file nnfolder-group-alist)))
+ (if oldgroup
+ (nnheader-message 5 "Refreshing group %s..." file)
+ (nnheader-message 5 "Adding group %s..." file))
+ (setq nnfolder-group-alist (remove oldgroup nnfolder-group-alist))
+ (push (list file (cons 1 0)) nnfolder-group-alist)
+ (nnfolder-possibly-change-folder file)
+ (nnfolder-possibly-change-group file)
+ (nnfolder-close-group file))))
+ (message "")))
(defun nnfolder-group-pathname (group)
"Make pathname for GROUP."
+Wed Mar 12 06:57:14 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+
+ * gnus.texi (Various Various): Addition.
+
Sat Mar 8 03:41:47 1997 Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
* gnus.texi (Group Parameters): Added example.
@table @code
+@item gnus-home-directory
+All Gnus path variables will be initialized from this variable, which
+defaults to @file{~/}.
+
@item gnus-directory
@vindex gnus-directory
-All Gnus directories will be initialized from this variable, which
-defaults to the @samp{SAVEDIR} environment variable, or @file{~/News/}
-if that variable isn't set.
+Most Gnus storage path variables will be initialized from this variable,
+which defaults to the @samp{SAVEDIR} environment variable, or
+@file{~/News/} if that variable isn't set.
@item gnus-default-directory
@vindex gnus-default-directory
+.gnus repository:
+http://superdave.socom.com/gnus/
+
I would like the zombie-page to contain an URL to the source of the
latest version of gnus or some explanation on where to find it.
* cache the newsgroups file locally to avoid reloading it all the time.
* a command to import a buffer into a group.
+
+* nnweb should allow fetching by Message-ID from servers.
+
+* point in the article buffer doesn't always go to the
+beginning of the buffer when selecting new articles.