Synch with Oort Gnus (Translating gnus-ja.texi is incompleted).
authoryamaoka <yamaoka>
Tue, 21 Aug 2001 03:44:40 +0000 (03:44 +0000)
committeryamaoka <yamaoka>
Tue, 21 Aug 2001 03:44:40 +0000 (03:44 +0000)
32 files changed:
GNUS-NEWS
lisp/ChangeLog
lisp/earcon.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-ems.el
lisp/gnus-msg.el
lisp/gnus-score.el
lisp/gnus-spec.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus.el
lisp/imap.el
lisp/lpath.el
lisp/message.el
lisp/mm-decode.el
lisp/mm-view.el
lisp/mml.el
lisp/nnbabyl.el
lisp/nnfolder.el
lisp/nnimap.el
lisp/nnmbox.el
lisp/nnmh.el
lisp/nnml.el
lisp/nnslashdot.el
lisp/smiley-ems.el
lisp/smime.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index f780719..898c768 100644 (file)
--- a/GNUS-NEWS
+++ b/GNUS-NEWS
@@ -8,7 +8,17 @@ For older news, see Gnus info node "New Features".
 \f
 * Changes in Oort Gnus
 
-** Menu bar: "Misc" -> "Gnus".
+** Nnml stores marks in the file ".marks" for each groups.
+
+This makes it possible to take backup of nnml servers independently of
+.newsrc.eld.  It also makes it possible to share articles and marks
+between users (without sharing .newsrc.eld) within e.g. a department.
+
+** The menu bar (in Group and Summary buffer) named "Misc" has been
+   renamed to "Gnus".
+
+** The menu bar (in Message mode) named "MML" has been renamed to
+   "Attachment".
 
 ** gnus-group-charset-alist and gnus-group-ignored-charsets-alist
 
index f9eff16..955fd7f 100644 (file)
@@ -1,3 +1,249 @@
+2001-08-20 16:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-start.el (gnus-activate-group): If dont-check, don't update
+       active.
+
+2001-08-20 15:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnslashdot.el (nnslashdot-retrieve-headers-1): Replace
+       nnslashdot-*-retrieve-headers.
+       (nnslashdot-request-article): Fix for slashcode 2.2.
+       (nnslashdot-make-tuple): New.
+       (nnslashdot-read-groups): Use it.
+
+2001-08-20 01:34:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.el (gnus-expand-group-parameters): Don't alter the variable
+       list. 
+
+       * gnus-sum.el (gnus-summary-move-article): Don't select article. 
+
+2001-08-20  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-msg.el (gnus-inews-do-gcc): If archive server can't be
+       opened, error instead of continuing (and exploding later).
+
+2001-08-20 01:34:03  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.el (gnus-expand-group-parameters): Return the parameter
+       list. 
+
+       * gnus-sum.el (gnus-summary-show-article): Doc fix.
+       (gnus-summary-show-article): Guess at charset if required.
+
+       * gnus-spec.el (gnus-correct-substring): Stopped one character
+       before we wanted.
+
+2001-08-19  Pavel Jan\e,Bm\e(Bk  <Pavel@Janik.cz>
+
+       * earcon.el (earcon-auto-play): Remove unused option.
+
+2001-08-19 16:14:41  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-score.el (gnus-score-headers): Move the "Scoring..."
+       message down in levels, since it happens very fast.
+
+       * smiley-ems.el (smiley-update-cache): Respect the symbol version
+       of smiley-regexp-alist.
+
+       * mm-view.el (mm-inline-text): Ignore vcard errors.
+
+       * gnus-art.el (gnus-ignored-headers): Added more junk headers. 
+
+       * gnus-score.el (gnus-all-score-files): Use append instead of
+       nconc. 
+
+       * gnus.el (gnus-splash-face): Doc fix.
+
+       * mm-decode.el (mm-mailcap-command): Use
+       mm-path-name-rewrite-functions. 
+       (mm-path-name-rewrite-functions): New variable.
+
+       * gnus-spec.el (gnus-parse-complex-format): React to ?=.
+       (gnus-complex-form-to-spec): Insert tab.
+       (gnus-spec-tab): New function.
+
+       * gnus-sum.el (gnus-select-newsgroup): Set the marks before
+       entering the group.
+
+       * gnus-spec.el (gnus-complex-form-to-spec): Insert Lisp to match
+       the positional spec.
+       (gnus-parse-complex-format): React to %C.
+
+       * gnus-ems.el (gnus-char-width): Moved here.
+
+       * gnus-sum.el (gnus-select-newsgroup): Set
+       gnus-newsgroup-articles. 
+       (gnus-unseen-mark): New variable.
+       (gnus-newsgroup-unseen): Ditto.
+       (gnus-newsgroup-seen): Ditto.
+       (gnus-adjust-marked-articles): Use them.
+       (gnus-update-marks): Use them.
+       (gnus-summary-update-secondary-mark): Display.
+       (gnus-summary-prepare-threads): Display.
+
+       * gnus-msg.el (gnus-inews-group-method): Use and return the
+       method, not the server.
+
+2001-08-19  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-srvr.el (gnus-server-agent-face): New.
+       (gnus-server-agent-face): New.
+       (gnus-server-mode): Turn on font-lock-mode.
+
+       * gnus.el (gnus-server-visual): Add defgroup.
+
+2001-08-19  Simon Josefsson  <jas@extundo.com>
+       From Joe Casadonte <jcasadonte@northbound-train.com>
+
+       * gnus-srvr.el (gnus-server-opened-face, gnus-server-closed-face,
+       gnus-server-denied-face): New.
+       (gnus-server-opened-face, gnus-server-closed-face,
+       gnus-server-denied-face): New.
+       (gnus-server-font-lock-keywords): Add.
+
+2001-08-19  Simon Josefsson  <jas@extundo.com>
+
+       * nnml.el (nnml-request-set-mark): Return nil.
+       (nnml-save-marks): Use nnml-possibly-create-directory.
+       (nnml-open-marks): Only work in temp buffer when inserting/reading
+       .marks file.
+
+2001-08-18 19:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.el (gnus-expand-group-parameters): Fix.
+
+       * gnus-spec.el (gnus-char-width): New.
+       (gnus-correct-substring, gnus-correct-length): Use it.
+
+       * message.el (message-required-mail-headers): Fix doc.
+
+2001-08-18 18:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-sum.el (gnus-group-make-articles-read): gnus-request-set-mark.
+
+       * mm-decode.el (mm-save-part-to-file): Insert the handle.
+
+2001-08-18 13:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnslashdot.el (nnslashdot-threaded-retrieve-headers):
+       slashdot 2.2 (not fully fixed yet).
+       (nnslashdot-request-article): Ditto.
+
+2001-08-18  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-util.el (gnus-remassoc, gnus-update-alist-soft): Moved from
+       nnimap.
+
+       * nnimap.el (nnimap-remassoc, nnimap-update-alist-soft): Moved to
+       gnus-util.
+       (nnimap-request-update-info-internal): Use new functions.
+
+       * nnml.el (nnml-request-set-mark, nnml-request-update-info): Use
+       new functions.
+
+2001-08-18  Simon Josefsson  <jas@extundo.com>
+
+       Make nnml groups self-contained as far as marks are concerned.
+
+       * nnml.el (nnml-request-delete-group): Delete marks file.
+       (nnml-request-rename-group): Move marks file.
+       (nnml-marks-file-name, nnml-marks-is-evil, nnml-marks): New server
+       variables.
+       (nnml-request-set-mark, nnml-request-update-info): New server
+       functions.
+       (nnml-save-marks, nnml-open-marks): New functions.
+
+2001-08-18  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-sum.el (gnus-summary-move-article): Use `add' instead of
+       `set' when setting marks.
+
+2001-08-17 22:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.el (gnus-info-find-node): Take an argument.
+
+       * gnus-art.el (gnus-button-handle-info): New.
+       (gnus-url-unhex-string): Replace "+" with " ".
+
+2001-08-17 21:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-check-news-header-syntax): Check bad From.
+
+2001-08-18 00:14:45  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-spec.el (gnus-correct-length): New function.
+       (gnus-correct-substring): New function.
+       (gnus-tilde-max-form): Use it.
+
+2001-08-17  Nevin Kapur  <nevin@jhu.edu>
+
+       * nnmh.el: Docstring changes as below.
+
+       * nnml.el: Docstring changes as below.
+
+       * nnbabyl.el: Docstring changes as below.
+
+       * nnmbox.el: Docstring changes as below.
+
+       * nnfolder.el: Added docstrings identifying each virtual server
+       parameter.
+
+2001-08-18  Simon Josefsson  <jas@extundo.com>
+
+       * mml.el (mml-menu): Collapse Attach, Insert and Security submenu.
+
+2001-08-17  Bj\e,Av\e(Brn Torkelsson  <torkel@acc.kth.se>
+
+       * message.el: rename "Abort Message" to "Postpone Message".
+       Remove "Attach file as MIME" from Message menu, it's already in
+       the MIME menu.
+
+2001-08-17 14:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * smime.el (smime-point-at-eol): eval-and-compile.
+       (smime-make-temp-file): New.
+       (smime-sign-region, smime-encrypt-region, smime-decrypt-region):
+       Use it.
+
+2001-08-17 10:41:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-fetch-group): Go online if offline. 
+       (gnus-agent-summary-fetch-group): New command and keystroke.
+
+       * gnus-art.el (gnus-insert-mime-button): Tiny clean-up.
+       (gnus-mime-display-security): Make it respect
+       gnus-unbuttonized-mime-type-p. 
+
+       * gnus-sum.el (gnus-articles-to-read): Comments.
+       (gnus-article-marked-p): New function.
+       (gnus-summary-display-make-predicate): New function.
+       (gnus-select-newsgroup): Use them.
+
+       * mm-decode.el (mm-save-part-to-file): Made it not error.
+
+2001-08-17  Simon Josefsson  <jas@extundo.com>
+
+       * imap.el (imap-wait-for-tag): If process-status isn't open or
+       run, return nil instead of sit-for looping.
+
+2001-08-17 10:41:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * lpath.el (featurep): fbind xml-parse-region.
+
+       * gnus.el (gnus-message-archive-method): Default to "archive".
+       (gnus-message-archive-method): Doc fix.
+       (gnus-parameters-get-parameter): Cleaned up.
+       (gnus-expand-group-parameter): New function.
+
+       * gnus-start.el (gnus-setup-news): Push the archive server only
+       the server list.
+
+       * mml.el (mml-menu): Changed name to "Attachments".
+
+       * mm-decode.el (mm-destroy-postponed-undisplay-list): Only message
+       when there is something to detroy.
+
 2001-05-21 17:11:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * gnus-srvr.el (gnus-server-browse-in-group-buffer): Default to
index 19d3fa5..ecd118f 100644 (file)
   "Turn ** sounds ** into noise."
   :group 'gnus-visual)
 
-(defcustom earcon-auto-play nil
-  "*When True, automatically play sounds as well as buttonize them."
-  :type 'boolean
-  :group 'earcon)
-
 (defcustom earcon-prefix "**"
   "*String denoting the start of an earcon."
   :type 'string
index 623c136..1e6340a 100644 (file)
@@ -291,6 +291,7 @@ If this is `ask' the hook will query the user."
 (defvar gnus-agent-summary-mode-map (make-sparse-keymap))
 (gnus-define-keys gnus-agent-summary-mode-map
   "Jj" gnus-agent-toggle-plugged
+  "Ju" gnus-agent-summary-fetch-group
   "J#" gnus-agent-mark-article
   "J\M-#" gnus-agent-unmark-article
   "@" gnus-agent-toggle-mark
@@ -305,6 +306,7 @@ If this is `ask' the hook will query the user."
        ["Mark as downloadable" gnus-agent-mark-article t]
        ["Unmark as downloadable" gnus-agent-unmark-article t]
        ["Toggle mark" gnus-agent-toggle-mark t]
+       ["Fetch downloadable" gnus-agent-summary-fetch-group t]
        ["Catchup undownloaded" gnus-agent-catchup t]))))
 
 (defvar gnus-agent-server-mode-map (make-sparse-keymap))
@@ -476,14 +478,20 @@ be a select method."
 (defun gnus-agent-fetch-group (group)
   "Put all new articles in GROUP into the Agent."
   (interactive (list (gnus-group-group-name)))
-  (unless gnus-plugged
-    (error "Groups can't be fetched when Gnus is unplugged"))
-  (unless group
-    (error "No group on the current line"))
-  (let ((gnus-command-method (gnus-find-method-for-group group)))
-    (gnus-agent-with-fetch
-      (gnus-agent-fetch-group-1 group gnus-command-method)
-      (gnus-message 5 "Fetching %s...done" group))))
+  (let ((state gnus-plugged))
+    (unwind-protect
+       (progn
+         (unless state
+           (gnus-agent-toggle-plugged gnus-plugged)
+           (unless group
+             (error "No group on the current line"))
+           (let ((gnus-command-method (gnus-find-method-for-group group)))
+             (gnus-agent-with-fetch
+               (gnus-agent-fetch-group-1 group gnus-command-method)
+               (gnus-message 5 "Fetching %s...done" group)))))
+      (when (and (not state)
+                gnus-plugged)
+       (gnus-agent-toggle-plugged gnus-plugged)))))
 
 (defun gnus-agent-add-group (category arg)
   "Add the current group to an agent category."
@@ -692,6 +700,29 @@ the actual number of articles toggled is returned."
        (pop gnus-newsgroup-undownloaded) gnus-catchup-mark)))
   (gnus-summary-position-point))
 
+(defun gnus-agent-summary-fetch-group ()
+  "Fetch the downloadable articles in the group."
+  (interactive)
+  (let ((articles gnus-newsgroup-downloadable)
+       (gnus-command-method (gnus-find-method-for-group gnus-newsgroup-name))
+       (state gnus-plugged))
+    (unwind-protect
+       (progn
+         (unless state
+           (gnus-agent-toggle-plugged t))
+         (unless articles
+           (error "No articles to download"))
+         (gnus-agent-with-fetch
+           (gnus-agent-fetch-articles gnus-newsgroup-name articles))
+         (save-excursion
+           (dolist (article articles)
+             (setq gnus-newsgroup-downloadable
+                   (delq article gnus-newsgroup-downloadable))
+             (gnus-summary-mark-article article gnus-unread-mark))))
+      (when (and (not state)
+                gnus-plugged)
+       (gnus-agent-toggle-plugged nil)))))
+
 ;;;
 ;;; Internal functions
 ;;;
@@ -1157,7 +1188,8 @@ the actual number of articles toggled is returned."
     (unless (gnus-check-group group)
       (error "Can't open server for %s" group))
     ;; Fetch headers.
-    (when (and (or (gnus-active group) (gnus-activate-group group))
+    (when (and (or (gnus-active group)
+                  (gnus-activate-group group))
               (setq articles (gnus-agent-fetch-headers group))
               (let ((nntp-server-buffer gnus-agent-overview-buffer))
                 ;; Parse them and see which articles we want to fetch.
@@ -1176,8 +1208,7 @@ the actual number of articles toggled is returned."
                 (cadr category))))
       (if (memq predicate '(gnus-agent-true gnus-agent-false))
          ;; Simple implementation
-         (setq arts
-               (and (eq predicate 'gnus-agent-true) articles))
+         (setq arts (and (eq predicate 'gnus-agent-true) articles))
        (setq arts nil)
        (setq score-param
              (or (gnus-group-get-parameter group 'agent-score t)
index 7a37910..79aaaae 100644 (file)
     "^X-Received:" "^Content-length:" "X-precedence:"
     "^X-Authenticated-User:" "^X-Comment" "^X-Report:" "^X-Abuse-Info:"
     "^X-HTTP-Proxy:" "^X-Mydeja-Info:" "^X-Copyright" "^X-No-Markup:"
-    "^X-Abuse-Info:")
+    "^X-Abuse-Info:" "^X-From_:" "^X-Accept-Language:" "^Errors-To:"
+    "^X-BeenThere:" "^X-Mailman-Version:" "^List-Help:" "^List-Post:"
+    "^List-Subscribe:" "^List-Id:" "^List-Unsubscribe:" "^List-Archive:"
+     "^X-Content-length:" "^X-Posting-Agent:" "^Original-Received:")
   "*All headers that start with this regexp will be hidden.
 This variable can also be a list of regexps of headers to be ignored.
 If `gnus-visible-headers' is non-nil, this variable will be ignored."
@@ -4073,12 +4076,9 @@ If no internal viewer is available, use an external viewer."
 
 (defun gnus-insert-mime-button (handle gnus-tmp-id &optional displayed)
   (let ((gnus-tmp-name
-        (or (mail-content-type-get (mm-handle-type handle)
-                                   'name)
-            (mail-content-type-get (mm-handle-disposition handle)
-                                   'filename)
-            (mail-content-type-get (mm-handle-type handle)
-                                   'url)
+        (or (mail-content-type-get (mm-handle-type handle) 'name)
+            (mail-content-type-get (mm-handle-disposition handle) 'filename)
+            (mail-content-type-get (mm-handle-type handle) 'url)
             ""))
        (gnus-tmp-type (mm-handle-media-type handle))
        (gnus-tmp-description
@@ -4096,8 +4096,8 @@ If no internal viewer is available, use an external viewer."
     (setq gnus-tmp-type-long (concat gnus-tmp-type
                                     (and (not (equal gnus-tmp-name ""))
                                          (concat "; " gnus-tmp-name))))
-    (or (equal gnus-tmp-description "")
-       (setq gnus-tmp-type-long (concat " --- " gnus-tmp-type-long)))
+    (unless (equal gnus-tmp-description "")
+      (setq gnus-tmp-type-long (concat " --- " gnus-tmp-type-long)))
     (unless (bolp)
       (insert "\n"))
     (setq b (point))
@@ -5185,7 +5185,7 @@ after replacing with the original article."
 
 ;;; Internal Variables:
 
-(defcustom gnus-button-url-regexp "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)\\)"
+(defcustom gnus-button-url-regexp "\\b\\(\\(www\\.\\|\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\|info\\):\\)\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?\\([-a-zA-Z0-9_=!?#$@~`%&*+|\\/:;.,]\\|\\w\\)+\\([-a-zA-Z0-9_=#$@~`%&*+|\\/]\\|\\w\\)\\)"
   "Regular expression that matches URLs."
   :group 'gnus-article-buttons
   :type 'regexp)
@@ -5204,6 +5204,9 @@ after replacing with the original article."
     ("\\(<URL: *\\)mailto: *\\([^> \n\t]+\\)>" 0 t gnus-url-mailto 2)
     ("mailto:\\([-a-zA-Z.@_+0-9%=?]+\\)" 0 t gnus-url-mailto 1)
     ("\\bmailto:\\([^ \n\t]+\\)" 0 t gnus-url-mailto 1)
+    ;; This is info
+    ("\\binfo:\\(//\\)?\\([^'\">\n\t ]+\\)" 0 t
+     gnus-button-handle-info 2)
     ;; This is how URLs _should_ be embedded in text...
     ("<URL: *\\([^<>]*\\)>" 0 t gnus-button-embedded-url 1)
     ;; Raw URLs.
@@ -5619,6 +5622,18 @@ specified by `gnus-button-alist'."
      (group
       (gnus-button-fetch-group url)))))
 
+(defun gnus-button-handle-info (url)
+  "Fetch an info URL."
+  (if (string-match 
+       "^\\([^:/]+\\)?/\\(.*\\)"
+       url)
+      (gnus-info-find-node
+       (concat "(" (or (gnus-url-unhex-string (match-string 1 url))
+                      "Gnus") 
+              ")" 
+              (gnus-url-unhex-string (match-string 2 url))))
+    (error "Can't parse %s" url)))
+
 (defun gnus-button-message-id (message-id)
   "Fetch MESSAGE-ID."
   (save-excursion
@@ -5675,7 +5690,7 @@ specified by `gnus-button-alist'."
 If optional second argument ALLOW-NEWLINES is non-nil, then allow the
 decoding of carriage returns and line feeds in the string, which is normally
 forbidden in URL encoding."
-  (setq str (or str ""))
+  (setq str (or (nnheader-replace-chars-in-string str ?+ ? ) ""))
   (let ((tmp "")
        (case-fold-search t))
     (while (string-match "%[0-9a-f][0-9a-f]" str)
@@ -6175,13 +6190,15 @@ For example:
 (defun gnus-mime-display-security (handle)
   (save-restriction
     (narrow-to-region (point) (point))
-    (gnus-insert-mime-security-button handle)
+    (unless (gnus-unbuttonized-mime-type-p (car handle))
+      (gnus-insert-mime-security-button handle))
     (gnus-mime-display-mixed (cdr handle))
     (unless (bolp)
       (insert "\n"))
-    (let ((gnus-mime-security-button-line-format
-          gnus-mime-security-button-end-line-format))
-      (gnus-insert-mime-security-button handle))
+    (unless (gnus-unbuttonized-mime-type-p (car handle))
+      (let ((gnus-mime-security-button-line-format
+            gnus-mime-security-button-end-line-format))
+       (gnus-insert-mime-security-button handle)))
     (mm-set-handle-multipart-parameter
      handle 'gnus-region
      (cons (set-marker (make-marker) (point-min))
index 69b6d48..1682e0f 100644 (file)
 ;;; Mule functions.
 
 (eval-and-compile
+  (defalias 'gnus-char-width
+    (if (fboundp 'char-width)
+       'char-width
+      (lambda (ch) 1)))) ;; A simple hack.
+
+(eval-and-compile
   (if (featurep 'xemacs)
       (gnus-xmas-define)
     (defvar gnus-mouse-face-prop 'mouse-face
index fe44147..ad0fef6 100644 (file)
@@ -1363,19 +1363,18 @@ this is a reply."
 ;;; Gcc handling.
 
 (defun gnus-inews-group-method (group)
-  (cond ((and (null (gnus-get-info group))
-             (eq (car gnus-message-archive-method)
-                 (car
-                  (gnus-server-to-method
-                   (gnus-group-method group)))))
-        ;; If the group doesn't exist, we assume
-        ;; it's an archive group...
-        gnus-message-archive-method)
-       ;; Use the method.
-       ((gnus-info-method (gnus-get-info group))
-        (gnus-info-method (gnus-get-info group)))
-       ;; Find the method.
-       (t (gnus-group-method group))))
+  (cond
+   ;; If the group doesn't exist, we assume
+   ;; it's an archive group...
+   ((and (null (gnus-get-info group))
+        (eq (car (gnus-server-to-method gnus-message-archive-method))
+            (car (gnus-server-to-method (gnus-group-method group)))))
+    gnus-message-archive-method)
+   ;; Use the method.
+   ((gnus-info-method (gnus-get-info group))
+    (gnus-info-method (gnus-get-info group)))
+   ;; Find the method.
+   (t (gnus-server-to-method (gnus-group-method group)))))
 
 ;; Do Gcc handling, which copied the message over to some group.
 (defun gnus-inews-do-gcc (&optional gcc)
@@ -1394,8 +1393,10 @@ this is a reply."
                        (message-tokenize-header gcc " ,")))
          ;; Copy the article over to some group(s).
          (while (setq group (pop groups))
-           (gnus-check-server
-            (setq method (gnus-inews-group-method group)))
+           (unless (gnus-check-server
+                    (setq method (gnus-inews-group-method group)))
+             (error "Can't open server %s" (if (stringp method) method
+                                             (car method))))
            (unless (gnus-request-group group nil method)
              (gnus-request-create-group group method))
            (save-excursion
index e76760a..497d93b 100644 (file)
@@ -1468,7 +1468,7 @@ EXTRA is the possible non-standard header."
               (headers gnus-newsgroup-headers)
               (current-score-file gnus-current-score-file)
               entry header new)
-         (gnus-message 5 "Scoring...")
+         (gnus-message 7 "Scoring...")
          ;; Create articles, an alist of the form `(HEADER . SCORE)'.
          (while (setq header (pop headers))
            ;; WARNING: The assq makes the function O(N*S) while it could
@@ -1529,7 +1529,7 @@ EXTRA is the possible non-standard header."
                  (gnus-score-advanced (car score) trace))
                (pop score))))
 
-         (gnus-message 5 "Scoring...done"))))))
+         (gnus-message 7 "Scoring...done"))))))
 
 (defun gnus-score-lower-thread (thread score-adjust)
   "Lower the score on THREAD with SCORE-ADJUST.
@@ -2779,8 +2779,8 @@ The list is determined from the variable gnus-score-file-alist."
       (while funcs
        (when (gnus-functionp (car funcs))
          (setq score-files
-               (nconc score-files
-                      (nreverse (funcall (car funcs) group)))))
+               (append score-files
+                       (nreverse (funcall (car funcs) group)))))
        (setq funcs (cdr funcs)))
       (when gnus-score-use-all-scores
        ;; Add any home score files.
index 0eb668a..1c87a0a 100644 (file)
 (require 'alist)
 (require 'gnus)
 
+(defcustom gnus-use-correct-string-widths t
+  "*If non-nil, use correct functions for dealing with wide characters."
+  :group 'gnus-format
+  :type 'boolean)
+
 ;;; Internal variables.
 
 (defvar gnus-summary-mark-positions nil)
 (defvar gnus-summary-mode-line-format-spec nil)
 (defvar gnus-group-mode-line-format-spec nil)
 
-;;; Phew.  All that gruft is over, fortunately.
+;;; Phew.  All that gruft is over with, fortunately.
 
 ;;;###autoload
 (defun gnus-update-format (var)
@@ -288,36 +293,112 @@ by `gnus-xmas-redefine'."
     'balloon-help
     ,(intern (format "gnus-balloon-face-%d" type))))
 
+(defun gnus-spec-tab (column)
+  (if (> column 0)
+      `(insert (make-string (max (- ,column (current-column)) 0) ? ))
+    `(progn
+       (if (> (current-column) ,(abs column))
+          (delete-region (point)
+                         (- (point) (- (current-column) ,(abs column))))
+        (insert (make-string (max (- ,(abs column) (current-column)) 0)
+                             ? ))))))
+
+(defun gnus-correct-length (string)
+  "Return the correct width of STRING."
+  (let ((length 0))
+    (mapcar (lambda (char) (incf length (gnus-char-width char))) string)
+    length))
+
+(defun gnus-correct-substring (string start end)
+  (let ((wstart 0)
+       (wend 0)
+       (seek 0)
+       (length (length string)))
+    ;; Find the start position.
+    (while (and (< seek length)
+               (< wstart start))
+      (incf wstart (gnus-char-width (aref string seek)))
+      (incf seek))
+    (setq wend wstart
+         wstart seek)
+    ;; Find the end position.
+    (while (and (< seek length)
+               (<= wend end))
+      (incf wend (gnus-char-width (aref string seek)))
+      (incf seek))
+    (setq wend seek)
+    (substring string wstart (1- wend))))
+
 (defun gnus-tilde-max-form (el max-width)
   "Return a form that limits EL to MAX-WIDTH."
   (let ((max (abs max-width)))
     (if (symbolp el)
-       `(if (> (length ,el) ,max)
+       `(if (> (,(if gnus-use-correct-string-widths
+                     'gnus-correct-length
+                   'length) ,el)
+               ,max)
             ,(if (< max-width 0)
-                 `(substring ,el (- (length el) ,max))
-               `(substring ,el 0 ,max))
+                 `(,(if gnus-use-correct-string-widths
+                        'gnus-correct-substring
+                      'substring)
+                   ,el (- (,(if gnus-use-correct-string-widths
+                                'gnus-correct-length
+                              'length)
+                           el) ,max))
+               `(,(if gnus-use-correct-string-widths
+                      'gnus-correct-substring
+                    'substring)
+                 ,el 0 ,max))
           ,el)
       `(let ((val (eval ,el)))
-        (if (> (length val) ,max)
+        (if (> (,(if gnus-use-correct-string-widths
+                     'gnus-correct-length
+                   'length) val) ,max)
             ,(if (< max-width 0)
-                 `(substring val (- (length val) ,max))
-               `(substring val 0 ,max))
+                 `(,(if gnus-use-correct-string-widths
+                        'gnus-correct-substring
+                      'substring)
+                   val (- (,(if gnus-use-correct-string-widths
+                                'gnus-correct-length
+                              'length) val) ,max))
+               `(,(if gnus-use-correct-string-widths
+                      'gnus-correct-substring
+                    'substring)
+                 val 0 ,max))
           val)))))
 
 (defun gnus-tilde-cut-form (el cut-width)
   "Return a form that cuts CUT-WIDTH off of EL."
   (let ((cut (abs cut-width)))
     (if (symbolp el)
-       `(if (> (length ,el) ,cut)
+       `(if (> (,(if gnus-use-correct-string-widths
+                     'gnus-correct-length
+                   'length) ,el) ,cut)
             ,(if (< cut-width 0)
-                 `(substring ,el 0 (- (length el) ,cut))
-               `(substring ,el ,cut))
+                 `(,(if gnus-use-correct-string-widths
+                        'gnus-correct-substring
+                      'substring) ,el 0
+                      (- (,(if gnus-use-correct-string-widths
+                               'gnus-correct-length
+                             'length) el) ,cut))
+               `(,(if gnus-use-correct-string-widths
+                      'gnus-correct-substring
+                    'substring) ,el ,cut))
           ,el)
       `(let ((val (eval ,el)))
-        (if (> (length val) ,cut)
+        (if (> (,(if gnus-use-correct-string-widths
+                     'gnus-correct-length
+                   'length) val) ,cut)
             ,(if (< cut-width 0)
-                 `(substring val 0 (- (length val) ,cut))
-               `(substring val ,cut))
+                 `(,(if gnus-use-correct-string-widths
+                        'gnus-correct-substring
+                      'substring) val 0
+                      (- (,(if gnus-use-correct-string-widths
+                               'gnus-correct-length
+                             'length) val) ,cut))
+               `(,(if gnus-use-correct-string-widths
+                      'gnus-correct-substring
+                    'substring) val ,cut))
           val)))))
 
 (defun gnus-tilde-ignore-form (el ignore-value)
@@ -352,6 +433,7 @@ by `gnus-xmas-redefine'."
       (replace-match "\\\"" nil t))
     (goto-char (point-min))
     (insert "(\"")
+    ;; Convert all font specs into font spec lists.
     (while (re-search-forward "%\\([0-9]+\\)?\\([«»{}()]\\)" nil t)
       (let ((number (if (match-beginning 1)
                        (match-string 1) "0"))
@@ -363,10 +445,20 @@ by `gnus-xmas-redefine'."
                                   (cond ((= delim ?\() "mouse")
                                         ((= delim ?\{) "face")
                                         (t "balloon"))
-                                  " " number " \""))
+                                  " " number " \"")
+                          t t)
          (replace-match "\")\""))))
     (goto-char (point-max))
     (insert "\")")
+    ;; Convert point position commands.
+    (goto-char (point-min))
+    (while (re-search-forward "%\\([-0-9]+\\)?C" nil t)
+      (replace-match "\"(point)\"" t t))
+    ;; Convert TAB commands.
+    (goto-char (point-min))
+    (while (re-search-forward "%\\([-0-9]+\\)=" nil t)
+      (replace-match (format "\"(tab %s)\"" (match-string 1)) t t))
+    ;; Convert the buffer into the spec.
     (goto-char (point-min))
     (let ((form (read (current-buffer))))
       (cons 'progn (gnus-complex-form-to-spec form spec-alist)))))
@@ -375,11 +467,17 @@ by `gnus-xmas-redefine'."
   (delq nil
        (mapcar
         (lambda (sform)
-          (if (stringp sform)
-              (gnus-parse-simple-format sform spec-alist t)
+          (cond
+           ((stringp sform)
+            (gnus-parse-simple-format sform spec-alist t))
+           ((eq (car sform) 'point)
+            `(gnus-put-text-property (1- (point)) (point) 'gnus-position t))
+           ((eq (car sform) 'tab)
+            (gnus-spec-tab (cadr sform)))
+           (t
             (funcall (intern (format "gnus-%s-face-function" (car sform)))
                      (gnus-complex-form-to-spec (cddr sform) spec-alist)
-                     (nth 1 sform))))
+                     (nth 1 sform)))))
         form)))
 
 (defun gnus-parse-simple-format (format spec-alist &optional insert)
index ba93d8c..bc9df3d 100644 (file)
@@ -149,6 +149,62 @@ The following specs are understood:
     "\C-c\C-i" gnus-info-find-node
     "\C-c\C-b" gnus-bug))
 
+(defface gnus-server-agent-face
+  '((((class color) (background light)) (:foreground "PaleTurquoise" :bold t))
+    (((class color) (background dark)) (:foreground "PaleTurquoise" :bold t))
+    (t (:bold t)))
+  "Face used for displaying AGENTIZED servers"
+  :group 'gnus-server-visual)
+
+(defface gnus-server-opened-face
+  '((((class color) (background light)) (:foreground "Green3" :bold t))
+    (((class color) (background dark)) (:foreground "Green1" :bold t))
+    (t (:bold t)))
+  "Face used for displaying OPENED servers"
+  :group 'gnus-server-visual)
+
+(defface gnus-server-closed-face
+  '((((class color) (background light)) (:foreground "Steel Blue" :italic t))
+    (((class color) (background dark))
+     (:foreground "Light Steel Blue" :italic t))
+    (t (:italic t)))
+  "Face used for displaying CLOSED servers"
+  :group 'gnus-server-visual)
+
+(defface gnus-server-denied-face
+  '((((class color) (background light)) (:foreground "Red" :bold t))
+    (((class color) (background dark)) (:foreground "Pink" :bold t))
+    (t (:inverse-video t :bold t)))
+  "Face used for displaying DENIED servers"
+  :group 'gnus-server-visual)
+
+(defcustom gnus-server-agent-face 'gnus-server-agent-face
+  "Face name to use on AGENTIZED servers."
+  :group 'gnus-server-visual
+  :type 'face)
+
+(defcustom gnus-server-opened-face 'gnus-server-opened-face
+  "Face name to use on OPENED servers."
+  :group 'gnus-server-visual
+  :type 'face)
+
+(defcustom gnus-server-closed-face 'gnus-server-closed-face
+  "Face name to use on CLOSED servers."
+  :group 'gnus-server-visual
+  :type 'face)
+
+(defcustom gnus-server-denied-face 'gnus-server-denied-face
+  "Face name to use on DENIED servers."
+  :group 'gnus-server-visual
+  :type 'face)
+
+(defvar gnus-server-font-lock-keywords
+  (list
+   '("(\\(agent\\))" 1 gnus-server-agent-face)
+   '("(\\(opened\\))" 1 gnus-server-opened-face)
+   '("(\\(closed\\))" 1 gnus-server-closed-face)
+   '("(\\(denied\\))" 1 gnus-server-denied-face)))
+
 (defun gnus-server-mode ()
   "Major mode for listing and editing servers.
 
@@ -173,6 +229,10 @@ The following commands are available:
   (buffer-disable-undo)
   (setq truncate-lines t)
   (setq buffer-read-only t)
+  (if (featurep 'xemacs)
+      (put 'gnus-server-mode 'font-lock-defaults '(gnus-server-font-lock-keywords t))
+    (set (make-local-variable 'font-lock-defaults)
+         '(gnus-server-font-lock-keywords t)))
   (gnus-run-hooks 'gnus-server-mode-hook))
 
 (defun gnus-server-insert-server-line (gnus-tmp-name method)
index b1bad26..85762a9 100644 (file)
@@ -923,10 +923,17 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
 
     ;; Make sure the archive server is available to all and sundry.
     (when gnus-message-archive-method
-      (setq gnus-server-alist (delq (assoc "archive" gnus-server-alist)
-                                   gnus-server-alist))
-      (push (cons "archive" gnus-message-archive-method)
-           gnus-server-alist))
+      (unless (assoc "archive" gnus-server-alist)
+       (push `("archive"
+               (nnfolder
+                "archive"
+                (nnfolder-directory
+                 ,(nnheader-concat message-directory "archive"))
+                (nnfolder-active-file
+                 ,(nnheader-concat message-directory "archive/active"))
+                (nnfolder-get-new-mail nil)
+                (nnfolder-inhibit-expiry t)))
+             gnus-server-alist)))
 
     ;; If we don't read the complete active file, we fill in the
     ;; hashtb here.
@@ -1465,18 +1472,19 @@ newsgroup."
           (quit
            (message "Quit activating %s" group)
            nil))
-        (setq active (gnus-parse-active))
-        ;; If there are no articles in the group, the GROUP
-        ;; command may have responded with the `(0 . 0)'.  We
-        ;; ignore this if we already have an active entry
-        ;; for the group.
-        (if (and (zerop (car active))
-                 (zerop (cdr active))
-                 (gnus-active group))
-            (gnus-active group)
-          (gnus-set-active group active)
-          ;; Return the new active info.
-          active))))
+        (unless dont-check
+          (setq active (gnus-parse-active))
+          ;; If there are no articles in the group, the GROUP
+          ;; command may have responded with the `(0 . 0)'.  We
+          ;; ignore this if we already have an active entry
+          ;; for the group.
+          (if (and (zerop (car active))
+                   (zerop (cdr active))
+                   (gnus-active group))
+              (gnus-active group)
+            (gnus-set-active group active)
+            ;; Return the new active info.
+            active)))))
 
 (defun gnus-get-unread-articles-in-group (info active &optional update)
   (when active
index c21cb43..d531110 100644 (file)
@@ -462,7 +462,7 @@ this variable specifies group names."
   :group 'gnus-summary-marks
   :type 'character)
 
-(defcustom gnus-forwarded-mark ?O
+(defcustom gnus-forwarded-mark ?F
   "*Mark used for articles that have been forwarded."
   :group 'gnus-summary-marks
   :type 'character)
@@ -478,7 +478,12 @@ this variable specifies group names."
   :type 'character)
 
 (defcustom gnus-saved-mark ?S
-  "*Mark used for articles that have been saved to."
+  "*Mark used for articles that have been saved."
+  :group 'gnus-summary-marks
+  :type 'character)
+
+(defcustom gnus-unseen-mark ?.
+  "*Mark used for articles that haven't been seen."
   :group 'gnus-summary-marks
   :type 'character)
 
@@ -1043,6 +1048,7 @@ that were fetched.  Say, for nnultimate groups."
 
 ;;; Internal variables
 
+(defvar gnus-summary-display-cache nil)
 (defvar gnus-article-mime-handles nil)
 (defvar gnus-article-decoded-p nil)
 (defvar gnus-article-charset nil)
@@ -1075,6 +1081,7 @@ that were fetched.  Say, for nnultimate groups."
 (defvar gnus-current-move-group nil)
 (defvar gnus-current-copy-group nil)
 (defvar gnus-current-crosspost-group nil)
+(defvar gnus-newsgroup-display nil)
 
 (defvar gnus-newsgroup-dependencies nil)
 (defvar gnus-newsgroup-adaptive nil)
@@ -1230,6 +1237,15 @@ end position and text.")
 (defvar gnus-newsgroup-dormant nil
   "List of dormant articles in the current newsgroup.")
 
+(defvar gnus-newsgroup-unseen nil
+  "List of unseen articles in the current newsgroup.")
+
+(defvar gnus-newsgroup-seen nil
+  "Range of seen articles in the current newsgroup.")
+
+(defvar gnus-newsgroup-articles nil
+  "List of articles in the current newsgroup.")
+
 (defvar gnus-newsgroup-scored nil
   "List of scored articles in the current newsgroup.")
 
@@ -1274,7 +1290,8 @@ end position and text.")
     gnus-newsgroup-expirable
     gnus-newsgroup-processable gnus-newsgroup-killed
     gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
-    gnus-newsgroup-unsendable
+    gnus-newsgroup-unsendable gnus-newsgroup-unseen
+    gnus-newsgroup-seen gnus-newsgroup-articles
     gnus-newsgroup-bookmarks gnus-newsgroup-dormant
     gnus-newsgroup-headers gnus-newsgroup-threads
     gnus-newsgroup-prepared gnus-summary-highlight-line-function
@@ -1296,7 +1313,7 @@ end position and text.")
     gnus-cache-removable-articles gnus-newsgroup-cached
     gnus-newsgroup-data gnus-newsgroup-data-reverse
     gnus-newsgroup-limit gnus-newsgroup-limits
-    gnus-newsgroup-charset
+    gnus-newsgroup-charset gnus-newsgroup-display
     gnus-newsgroup-incorporated)
   "Variables that are buffer-local to the summary buffers.")
 
@@ -4356,6 +4373,8 @@ or a straight list of headers."
                    gnus-saved-mark)
                   ((memq number gnus-newsgroup-recent)
                    gnus-recent-mark)
+                  ((memq number gnus-newsgroup-unseen)
+                   gnus-unseen-mark)
                   (t gnus-no-mark))
             gnus-tmp-from (mail-header-from gnus-tmp-header)
             gnus-tmp-name
@@ -4529,14 +4548,22 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       (error "Couldn't request group %s: %s"
             group (gnus-status-message group)))
 
-    (setq gnus-newsgroup-name group)
-    (setq gnus-newsgroup-unselected nil)
-    (setq gnus-newsgroup-unreads (gnus-list-of-unread-articles group))
-    (gnus-summary-setup-default-charset)
+    (setq gnus-newsgroup-name group
+         gnus-newsgroup-unselected nil
+         gnus-newsgroup-unreads (gnus-list-of-unread-articles group))
 
-    ;; Adjust and set lists of article marks.
-    (when info
-      (gnus-adjust-marked-articles info))
+    (setq gnus-newsgroup-display (gnus-group-find-parameter group 'display))
+    (setq gnus-newsgroup-display
+         (cond
+          ((eq gnus-newsgroup-display 'all)
+           (setq gnus-newsgroup-display 'identity))
+          ((arrayp gnus-newsgroup-display)
+           (gnus-summary-display-make-predicate
+            (mapcar 'identity gnus-newsgroup-display)))
+          (t
+           nil)))
+
+    (gnus-summary-setup-default-charset)
 
     ;; Kludge to avoid having cached articles nixed out in virtual groups.
     (when (gnus-virtual-group-p group)
@@ -4551,6 +4578,10 @@ If SELECT-ARTICLES, only select those articles from GROUP."
 
     (gnus-update-read-articles group gnus-newsgroup-unreads)
 
+    ;; Adjust and set lists of article marks.
+    (when info
+      (gnus-adjust-marked-articles info))
+    
     (if (setq articles select-articles)
        (setq gnus-newsgroup-unselected
              (gnus-sorted-intersection
@@ -4582,12 +4613,22 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       ;; Set the initial limit.
       (setq gnus-newsgroup-limit (copy-sequence articles))
       ;; Remove canceled articles from the list of unread articles.
+      (setq fetched-articles
+           (mapcar (lambda (headers) (mail-header-number headers))
+                   gnus-newsgroup-headers))
+      (setq gnus-newsgroup-articles fetched-articles)
       (setq gnus-newsgroup-unreads
            (gnus-set-sorted-intersection
-            gnus-newsgroup-unreads
-            (setq fetched-articles
-                  (mapcar (lambda (headers) (mail-header-number headers))
-                          gnus-newsgroup-headers))))
+            gnus-newsgroup-unreads fetched-articles))
+
+      (let ((marks (assq 'seen (gnus-info-marks info))))
+       ;; The `seen' marks are treated specially.
+       (when (setq gnus-newsgroup-seen (cdr marks))
+         (dolist (article gnus-newsgroup-articles)
+           (unless (gnus-member-of-range
+                    article gnus-newsgroup-seen)
+             (push article gnus-newsgroup-unseen)))))
+
       ;; Removed marked articles that do not exist.
       (gnus-update-missing-marks
        (gnus-sorted-complement fetched-articles articles))
@@ -4619,6 +4660,58 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       ;; GROUP is successfully selected.
       (or gnus-newsgroup-headers t)))))
 
+(defun gnus-summary-display-make-predicate (display)
+  (require 'gnus-agent)
+  (when (= (length display) 1)
+    (setq display (car display)))
+  (unless gnus-summary-display-cache
+    (dolist (elem gnus-article-mark-lists)
+       (push (cons (cdr elem)
+                   (gnus-byte-compile
+                    `(lambda () (gnus-article-marked-p ',(cdr elem)))))
+             gnus-summary-display-cache)))
+  (let ((gnus-category-predicate-alist gnus-summary-display-cache))
+    (gnus-get-predicate display)))
+
+;; Uses the dynamically bound `number' variable.
+(defvar number)
+(defun gnus-article-marked-p (type &optional article)
+  (let ((article (or article number)))
+    (cond
+     ((eq type 'tick)
+      (memq article gnus-newsgroup-marked))
+     ((eq type 'unsend)
+      (memq article gnus-newsgroup-unsendable))
+     ((eq type 'undownload)
+      (memq article gnus-newsgroup-undownloaded))
+     ((eq type 'download)
+      (memq article gnus-newsgroup-downloadable))
+     ((eq type 'unread)
+      (memq article gnus-newsgroup-unreads))
+     ((eq type 'read)
+      (memq article gnus-newsgroup-reads))
+     ((eq type 'dormant)
+      (memq article gnus-newsgroup-dormant) )
+     ((eq type 'expire)
+      (memq article gnus-newsgroup-expirable))
+     ((eq type 'reply)
+      (memq article gnus-newsgroup-replied))
+     ((eq type 'killed)
+      (memq article gnus-newsgroup-killed))
+     ((eq type 'bookmark)
+      (assq article gnus-newsgroup-bookmarks))
+     ((eq type 'score)
+      (assq article gnus-newsgroup-scored))
+     ((eq type 'save)
+      (memq article gnus-newsgroup-saved))
+     ((eq type 'cache)
+      (memq article gnus-newsgroup-cached))
+     ((eq type 'forward)
+      (memq article gnus-newsgroup-forwarded))
+     ((eq type 'recent)
+      (memq article gnus-newsgroup-recent))
+     (t t))))
+
 (defun gnus-articles-to-read (group &optional read-all)
   "Find out what articles the user wants to read."
   (let* ((articles
@@ -4627,11 +4720,15 @@ If SELECT-ARTICLES, only select those articles from GROUP."
          (if (or read-all
                  (and (zerop (length gnus-newsgroup-marked))
                       (zerop (length gnus-newsgroup-unreads)))
-                 (eq (gnus-group-find-parameter group 'display)
-                     'all))
+                 gnus-newsgroup-display)
+             ;; We want to select the headers for all the articles in
+             ;; the group, so we select either all the active
+             ;; articles in the group, or (if that's nil), the
+             ;; articles in the cache.
              (or
               (gnus-uncompress-range (gnus-active group))
               (gnus-cache-articles-in-group group))
+           ;; Select only the "normal" subset of articles.
            (sort (append gnus-newsgroup-dormant gnus-newsgroup-marked
                          (copy-sequence gnus-newsgroup-unreads))
                  '<)))
@@ -4734,34 +4831,38 @@ If SELECT-ARTICLES, only select those articles from GROUP."
         (uncompressed '(score bookmark killed))
         marks var articles article mark)
 
-    (while marked-lists
-      (setq marks (pop marked-lists))
-      (set (setq var (intern (format "gnus-newsgroup-%s"
-                                    (car (rassq (setq mark (car marks))
-                                                types)))))
-          (if (memq (car marks) uncompressed) (cdr marks)
-            (gnus-uncompress-range (cdr marks))))
+    (dolist (marks marked-lists)
+      (setq mark (car marks))
+      (unless (eq mark 'seen)
+       ;; Do the rest of the marks.
+       (set (setq var (intern (format "gnus-newsgroup-%s"
+                                      (car (rassq mark types)))))
+            (cond
+             ((memq mark uncompressed)
+              (cdr marks))
+             (t
+              (gnus-uncompress-range (cdr marks)))))
 
-      (setq articles (symbol-value var))
+       (setq articles (symbol-value var))
 
-      ;; All articles have to be subsets of the active articles.
-      (cond
-       ;; Adjust "simple" lists.
-       ((memq mark '(tick dormant expire reply save))
-       (while articles
-         (when (or (< (setq article (pop articles)) min) (> article max))
-           (set var (delq article (symbol-value var))))))
-       ;; Adjust assocs.
-       ((memq mark uncompressed)
-       (when (not (listp (cdr (symbol-value var))))
-         (set var (list (symbol-value var))))
-       (when (not (listp (cdr articles)))
-         (setq articles (list articles)))
-       (while articles
-         (when (or (not (consp (setq article (pop articles))))
-                   (< (car article) min)
-                   (> (car article) max))
-           (set var (delq article (symbol-value var))))))))))
+       ;; All articles have to be subsets of the active articles.
+       (cond
+        ;; Adjust "simple" lists.
+        ((memq mark '(tick dormant expire reply save))
+         (while articles
+           (when (or (< (setq article (pop articles)) min) (> article max))
+             (set var (delq article (symbol-value var))))))
+        ;; Adjust assocs.
+        ((memq mark uncompressed)
+         (when (not (listp (cdr (symbol-value var))))
+           (set var (list (symbol-value var))))
+         (when (not (listp (cdr articles)))
+           (setq articles (list articles)))
+         (while articles
+           (when (or (not (consp (setq article (pop articles))))
+                     (< (car article) min)
+                     (> (car article) max))
+             (set var (delq article (symbol-value var)))))))))))
 
 (defun gnus-update-missing-marks (missing)
   "Go through the list of MISSING articles and remove them from the mark lists."
@@ -4782,15 +4883,14 @@ If SELECT-ARTICLES, only select those articles from GROUP."
   "Enter the various lists of marked articles into the newsgroup info list."
   (let ((types gnus-article-mark-lists)
        (info (gnus-get-info gnus-newsgroup-name))
-       (uncompressed '(score bookmark killed))
+       (uncompressed '(score bookmark killed seen))
        type list newmarked symbol delta-marks)
     (when info
       ;; Add all marks lists to the list of marks lists.
       (while (setq type (pop types))
        (setq list (symbol-value
                    (setq symbol
-                         (intern (format "gnus-newsgroup-%s"
-                                         (car type))))))
+                         (intern (format "gnus-newsgroup-%s" (car type))))))
 
        (when list
          ;; Get rid of the entries of the articles that have the
@@ -4809,6 +4909,12 @@ If SELECT-ARTICLES, only select those articles from GROUP."
                (setq arts (cdr arts)))
              (setq list (cdr all)))))
 
+       (when (eq (cdr type) 'seen)
+         (setq list 
+               (if list
+                   (gnus-add-to-range list gnus-newsgroup-unseen)
+                 (gnus-compress-sequence gnus-newsgroup-articles))))
+
        (unless (memq (cdr type) uncompressed)
          (setq list (gnus-compress-sequence (set symbol (sort list '<)) t)))
 
@@ -5036,6 +5142,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
             (gnus-group-update-group ,group t))))
       ;; Add the read articles to the range.
       (gnus-info-set-read info range)
+      (gnus-request-set-mark group (list (list range 'add '(read))))
       ;; Then we have to re-compute how many unread
       ;; articles there are in this group.
       (when active
@@ -7057,6 +7164,7 @@ fetch-old-headers verbiage, and so on."
   ;; Most groups have nothing to remove.
   (if (or gnus-inhibit-limiting
          (and (null gnus-newsgroup-dormant)
+              (eq gnus-newsgroup-display 'identity)
               (not (eq gnus-fetch-old-headers 'some))
               (not (numberp gnus-fetch-old-headers))
               (not (eq gnus-fetch-old-headers 'invisible))
@@ -7145,6 +7253,9 @@ fetch-old-headers verbiage, and so on."
                  (push (cons number gnus-low-score-mark)
                        gnus-newsgroup-reads)))
              t)
+           ;; Do the `display' group parameter.
+           (and gnus-newsgroup-display
+                (not (funcall gnus-newsgroup-display)))
            ;; Check NoCeM things.
            (if (and gnus-use-nocem
                     (gnus-nocem-unwanted-article-p
@@ -7814,15 +7925,20 @@ to save in."
   "Force re-fetching of the current article.
 If ARG (the prefix) is a number, show the article with the charset
 defined in `gnus-summary-show-article-charset-alist', or the charset
-inputed.
+input.
 If ARG (the prefix) is non-nil and not a number, show the raw article
 without any article massaging functions being run."
   (interactive "P")
   (cond
    ((numberp arg)
+    (gnus-summary-show-article t)
     (let ((gnus-newsgroup-charset
           (or (cdr (assq arg gnus-summary-show-article-charset-alist))
-              (mm-read-coding-system "Charset: ")))
+              (mm-read-coding-system
+               "View as charset: "
+               (save-excursion
+                 (set-buffer gnus-article-buffer)
+                 (detect-coding-region (point) (point-max) t)))))
          (gnus-newsgroup-ignored-charsets 'gnus-all))
       (gnus-summary-select-article nil 'force)
       (let ((deps gnus-newsgroup-dependencies)
@@ -7844,9 +7960,8 @@ without any article massaging functions being run."
         header)
        (gnus-summary-update-article-line
         (cdr gnus-article-current) header)
-       (if (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
-           (gnus-summary-update-secondary-mark
-            (cdr gnus-article-current))))))
+       (when (gnus-summary-goto-subject (cdr gnus-article-current) nil t)
+         (gnus-summary-update-secondary-mark (cdr gnus-article-current))))))
    ((not arg)
     ;; Select the article the normal way.
     (gnus-summary-select-article nil 'force))
@@ -7983,10 +8098,6 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
   (interactive "P")
   (unless action
     (setq action 'move))
-  ;; Disable marking as read.
-  (let (gnus-mark-article-hook)
-    (save-window-excursion
-      (gnus-summary-select-article)))
   ;; Check whether the source group supports the required functions.
   (cond ((and (eq action 'move)
              (not (gnus-check-backend-function
@@ -8164,7 +8275,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
                  (setq marks (cdr marks)))
 
                (gnus-request-set-mark to-group (list (list (list to-article)
-                                                           'set
+                                                           'add
                                                            to-marks))))
 
              (gnus-dribble-enter
@@ -8983,6 +9094,8 @@ Iff NO-EXPIRE, auto-expiry will be inhibited."
          gnus-saved-mark)
         ((memq article gnus-newsgroup-recent)
          gnus-recent-mark)
+        ((memq article gnus-newsgroup-unseen)
+         gnus-unseen-mark)
         (t gnus-no-mark))
    'replied)
   (when (gnus-visual-p 'summary-highlight 'highlight)
index 51d4242..3be8990 100644 (file)
 
 (defun gnus-goto-colon ()
   (beginning-of-line)
-  (search-forward ":" (gnus-point-at-eol) t))
+  (let ((eol (gnus-point-at-eol)))
+    (goto-char (or (text-property-any (point) eol 'gnus-position t)
+                  (search-forward ":" eol t)
+                  (point)))))
 
 (defun gnus-remove-text-with-property (prop)
   "Delete all text in the current buffer with text property PROP."
@@ -1094,6 +1097,23 @@ Return the modified alist."
        (byte-compile form))
     form))
 
+(defun gnus-remassoc (key alist)
+  "Delete by side effect any elements of LIST whose car is `equal' to KEY.
+The modified LIST is returned.  If the first member
+of LIST has a car that is `equal' to KEY, there is no way to remove it
+by side effect; therefore, write `(setq foo (remassoc key foo))' to be
+sure of changing the value of `foo'."
+  (when alist
+    (if (equal key (caar alist))
+       (cdr alist)
+      (setcdr alist (gnus-remassoc key (cdr alist)))
+      alist)))
+
+(defun gnus-update-alist-soft (key value alist)
+  (if value
+      (cons (cons key value) (gnus-remassoc key alist))
+    (gnus-remassoc key alist)))
+
 (provide 'gnus-util)
 
 ;;; gnus-util.el ends here
index 48f0707..896860e 100644 (file)
   :group 'news
   :group 'mail)
 
+(defgroup gnus-format nil
+  "Dealing with formatting issues."
+  :group 'news
+  :group 'mail)
+
 (defgroup gnus-charset nil
   "Group character set issues."
   :link '(custom-manual "(gnus)Charsets")
   "Options related to newsservers and other servers used by Gnus."
   :group 'gnus)
 
+(defgroup gnus-server-visual nil
+  "Highlighting and menus in the server buffer."
+  :group 'gnus-visual
+  :group 'gnus-server)
+
 (defgroup gnus-message '((message custom-group))
   "Composing replies and followups in Gnus."
   :group 'gnus)
@@ -747,7 +757,7 @@ be set in `.emacs' instead."
      (:foreground "Brown"))
     (t
      ()))
-  "Face of the splash screen.")
+  "Face for the splash screen.")
 
 (defun gnus-splash ()
   (save-excursion
@@ -1085,23 +1095,9 @@ see the manual for details."
   :group 'gnus-server
   :type 'gnus-select-method)
 
-(defcustom gnus-message-archive-method
-  (progn
-    ;; Don't require it at top level to avoid circularity.
-    (require 'message)
-    `(nnfolder
-      "archive"
-      (nnfolder-directory ,(nnheader-concat message-directory "archive"))
-      (nnfolder-active-file
-       ,(nnheader-concat message-directory "archive/active"))
-      (nnfolder-get-new-mail nil)
-      (nnfolder-inhibit-expiry t)))
+(defcustom gnus-message-archive-method "archive"
   "*Method used for archiving messages you've sent.
-This should be a mail method.
-
-It's probably not very effective to change this variable once you've
-run Gnus once.  After doing that, you must edit this server from the
-server buffer."
+This should be a mail method."
   :group 'gnus-server
   :group 'gnus-message
   :type 'gnus-select-method)
@@ -1829,7 +1825,7 @@ covered by that variable."
     (scored . score) (saved . save)
     (cached . cache) (downloadable . download)
     (unsendable . unsend) (forwarded . forward)
-    (recent . recent)))
+    (recent . recent) (seen . seen)))
 
 (defvar gnus-headers-retrieved-by nil)
 (defvar gnus-article-reply nil)
@@ -2412,7 +2408,7 @@ STRINGS will be evaluated in normal `or' order."
        (setq strings nil)))
     string))
 
-(defun gnus-info-find-node ()
+(defun gnus-info-find-node (&optional nodename)
   "Find Info documentation of Gnus."
   (interactive)
   ;; Enlarge info window if needed.
@@ -2422,7 +2418,8 @@ STRINGS will be evaluated in normal `or' order."
             (or gnus-info-filename
                 (get-language-info current-language-environment 'gnus-info)
                 "gnus")
-            (or (cadr (assq major-mode gnus-info-nodes))
+            (or nodename
+                (cadr (assq major-mode gnus-info-nodes))
                 (and (eq (current-buffer) (get-buffer gnus-article-buffer))
                      (cadr (assq 'gnus-article-mode gnus-info-nodes))))))
     (setq gnus-info-buffer (current-buffer))
@@ -2842,16 +2839,32 @@ You should probably use `gnus-find-method-for-group' instead."
 
 (defun gnus-parameters-get-parameter (group)
   "Return the group parameters for GROUP from `gnus-parameters'."
-  (let ((alist gnus-parameters)
-       params-list)
-    (while alist
-      (when (string-match (caar alist) group)
+  (let (params-list)
+    (dolist (elem gnus-parameters)
+      (when (string-match (car elem) group)
        (setq params-list
-             (nconc (copy-sequence (cdar alist))
-                    params-list)))
-      (pop alist))
+             (nconc (gnus-expand-group-parameters
+                     (car elem) (cdr elem) group)
+                    params-list))))
     params-list))
 
+(defun gnus-expand-group-parameters (match parameters group)
+  "Go through PARAMETERS and expand them according to the match data."
+  (let (new)
+    (dolist (elem parameters)
+      (if (and (stringp (cdr elem))
+              (string-match "\\\\" (cdr elem)))
+         (push (cons (car elem)
+                     (with-temp-buffer
+                       (insert group)
+                       (goto-char (point-min))
+                       (while (re-search-forward match nil t)
+                         (replace-match (cdr elem)))
+                       (buffer-string)))
+               new)
+       (push elem new)))
+    new))
+
 (defun gnus-group-find-parameter (group &optional symbol allow-list)
   "Return the group parameters for GROUP.
 If SYMBOL, return the value of that symbol in the group parameters."
index 61306f1..d84aab6 100644 (file)
@@ -1620,19 +1620,19 @@ on failure."
 (defun imap-wait-for-tag (tag &optional buffer)
   (with-current-buffer (or buffer (current-buffer))
     (while (and (null imap-continuation)
+               (memq (process-status imap-process) '(open run))
                (< imap-reached-tag tag))
-      (or (and (not (memq (process-status imap-process) '(open run)))
-              (sit-for 1))
-         (let ((len (/ (point-max) 1024))
-               message-log-max)
-           (unless (< len 10)
-             (message "imap read: %dk" len))
-           (accept-process-output imap-process 1))))
+      (let ((len (/ (point-max) 1024))
+           message-log-max)
+       (unless (< len 10)
+         (message "imap read: %dk" len))
+       (accept-process-output imap-process 1)))
     (message "")
-    (or (assq tag imap-failed-tags)
-       (if imap-continuation
-           'INCOMPLETE
-         'OK))))
+    (and (memq (process-status imap-process) '(open run))
+        (or (assq tag imap-failed-tags)
+            (if imap-continuation
+                'INCOMPLETE
+              'OK)))))
 
 (defun imap-sentinel (process string)
   (delete-process process))
index eba2a3b..bf39359 100644 (file)
@@ -73,7 +73,8 @@
                     set-face-stipple set-frame-face-alist track-mouse
                     url-retrieve w3-form-encode-xwfu window-at
                     window-edges x-color-values x-popup-menu browse-url
-                    frame-char-height frame-char-width))
+                    frame-char-height frame-char-width
+                    xml-parse-region))
       (maybe-bind '(buffer-display-table
                    buffer-file-coding-system font-lock-defaults
                    global-face-data gnus-article-x-face-too-ugly
                 set-face-doc-string set-glyph-image set-glyph-property
                 specifier-instance url-generic-parse-url
                 valid-image-instantiator-format-p w3-do-setup
-                window-pixel-height window-pixel-width)))
+                window-pixel-height window-pixel-width
+                xml-parse-region)))
 
 ;; T-gnus.
 (let ((functions-variables
        (cond
        ((featurep 'xemacs)
-        '((xml-parse-region)))
+        nil)
        ((>= emacs-major-version 21)
         '((function-max-args smiley-encode-buffer)))
        ((boundp 'MULE)
         '((coding-system-get
            compose-mail file-name-extension find-coding-systems-region
            function-max-args get-charset-property shell-command-to-string
-           smiley-encode-buffer xml-parse-region)))
+           smiley-encode-buffer)))
        (t
-        '((function-max-args smiley-encode-buffer xml-parse-region))))))
+        '((function-max-args smiley-encode-buffer))))))
   (maybe-fbind (car functions-variables))
   (maybe-bind (car (cdr functions-variables))))
 
index c2780bc..a710df2 100644 (file)
@@ -53,6 +53,8 @@
   (require 'mail-parse)
   (require 'mml))
 
+(require 'rfc822)
+
 (defgroup message '((user-mail-address custom-variable)
                    (user-full-name custom-variable))
   "Mail and news message composing."
@@ -221,7 +223,7 @@ header, remove it from this list."
   '(From Subject Date (optional . In-Reply-To) Message-ID Lines
         (optional . User-Agent))
   "*Headers to be generated or prompted for when mailing a message.
-RFC822 required that From, Date, To, Subject and Message-ID be
+It is recommended that From, Date, To, Subject and Message-ID be
 included.  Organization, Lines and User-Agent are optional."
   :group 'message-mail
   :group 'message-headers
@@ -1754,7 +1756,7 @@ Point is left at the beginning of the narrowed-to region."
    ["Send Message" message-send-and-exit
     ,@(if (featurep 'xemacs) '(t)
        '(:help "Send this message"))]
-   ["Abort Message" message-dont-send
+   ["Postpone Message" message-dont-send
     ,@(if (featurep 'xemacs) '(t)
        '(:help "File this draft message and exit"))]
    ["Kill Message" message-kill-buffer
@@ -3584,6 +3586,14 @@ This sub function is for exclusive use of `message-send-news'."
         (message
          "Denied posting -- the From looks strange: \"%s\"." from)
         nil)
+       ((let ((addresses (rfc822-addresses from)))
+          (while (and addresses
+                      (not (eq (string-to-char (car addresses)) ?\()))
+            (setq addresses (cdr addresses)))
+          addresses)
+        (message
+         "Denied posting -- bad From address: \"%s\"." from)
+        nil)
        (t t))))
    ;; Check the Reply-To header.
    (message-check 'reply-to
index 6774bdf..7975fae 100644 (file)
@@ -279,6 +279,14 @@ Ready-made functions include
 `capitalize', `downcase', `upcase', and
 `upcase-initials'.")
 
+(defvar mm-path-name-rewrite-functions nil
+  "*List of functions used for rewriting path names of MIME parts.
+This is used when viewing parts externally , and is meant for
+transforming the path name so that non-compliant programs can
+find the file where it's saved.
+
+Each function takes a file name as input and returns a file name.")
+
 (defvar mm-file-name-replace-whitespace nil
   "String used for replacing whitespace characters; default is `\"_\"'.")
 
@@ -406,8 +414,9 @@ for types in mm-keep-viewer-alive-types."
     (mm-handle-set-undisplayer handle function)))
 
 (defun mm-destroy-postponed-undisplay-list ()
-  (message "Destroying external MIME viewers")
-  (mm-destroy-parts mm-postponed-undisplay-list))
+  (when mm-postponed-undisplay-list
+    (message "Destroying external MIME viewers")
+    (mm-destroy-parts mm-postponed-undisplay-list)))
 
 (defun mm-dissect-buffer (&optional no-strict-mime)
   "Dissect the current buffer and return a list of MIME handles."
@@ -614,7 +623,8 @@ external if displayed external."
                  (mm-handle-set-undisplayer handle mm)))))
        ;; The function is a string to be executed.
        (mm-insert-part handle)
-       (let* ((dir (make-temp-name (expand-file-name "emm." mm-tmp-directory)))
+       (let* ((dir (make-temp-name
+                    (expand-file-name "emm." mm-tmp-directory)))
               (filename (mail-content-type-get
                          (mm-handle-disposition handle) 'filename))
               (mime-info (mailcap-mime-info
@@ -633,74 +643,76 @@ external if displayed external."
          (let ((coding-system-for-write mm-binary-coding-system))
            (write-region (point-min) (point-max) file nil 'nomesg))
          (message "Viewing with %s" method)
-         (cond (needsterm
-                (unwind-protect
-                    (if window-system
-                        (start-process "*display*" nil
-                                       mm-external-terminal-program
-                                       "-e" shell-file-name
-                                       shell-command-switch
-                                       (mm-mailcap-command
-                                        method file (mm-handle-type handle)))
-                      (require 'term)
-                      (require 'gnus-win)
-                      (set-buffer
-                       (setq buffer
-                             (make-term "display"
-                                        shell-file-name
-                                        nil
-                                        shell-command-switch
-                                        (mm-mailcap-command
-                                         method file
-                                         (mm-handle-type handle)))))
-                      (term-mode)
-                      (term-char-mode)
-                      (set-process-sentinel
-                       (get-buffer-process buffer)
-                       `(lambda (process state)
-                          (if (eq 'exit (process-status process))
-                              (gnus-configure-windows
-                               ',gnus-current-window-configuration))))
-                      (gnus-configure-windows 'display-term))
-                  (mm-handle-set-external-undisplayer handle (cons file buffer)))
-                (message "Displaying %s..." (format method file))
-                'external)
-               (copiousoutput
-                (with-current-buffer outbuf
-                  (forward-line 1)
-                  (mm-insert-inline
-                   handle
-                   (unwind-protect
-                       (progn
-                         (call-process shell-file-name nil
-                                       (setq buffer
-                                             (generate-new-buffer " *mm*"))
-                                       nil
-                                       shell-command-switch
-                                       (mm-mailcap-command
-                                        method file (mm-handle-type handle)))
-                         (if (buffer-live-p buffer)
-                             (save-excursion
-                               (set-buffer buffer)
-                               (buffer-string))))
-                     (progn
-                       (ignore-errors (delete-file file))
-                       (ignore-errors (delete-directory
-                                       (file-name-directory file)))
-                       (ignore-errors (kill-buffer buffer))))))
-                'inline)
-               (t
-                (unwind-protect
-                    (start-process "*display*"
-                                   (setq buffer
-                                         (generate-new-buffer " *mm*"))
+         (cond
+          (needsterm
+           (unwind-protect
+               (if window-system
+                   (start-process "*display*" nil
+                                  mm-external-terminal-program
+                                  "-e" shell-file-name
+                                  shell-command-switch
+                                  (mm-mailcap-command
+                                   method file (mm-handle-type handle)))
+                 (require 'term)
+                 (require 'gnus-win)
+                 (set-buffer
+                  (setq buffer
+                        (make-term "display"
                                    shell-file-name
+                                   nil
                                    shell-command-switch
                                    (mm-mailcap-command
-                                    method file (mm-handle-type handle)))
-                  (mm-handle-set-external-undisplayer handle (cons file buffer)))
-                (message "Displaying %s..." (format method file))
-                'external)))))))
+                                    method file
+                                    (mm-handle-type handle)))))
+                 (term-mode)
+                 (term-char-mode)
+                 (set-process-sentinel
+                  (get-buffer-process buffer)
+                  `(lambda (process state)
+                     (if (eq 'exit (process-status process))
+                         (gnus-configure-windows
+                          ',gnus-current-window-configuration))))
+                 (gnus-configure-windows 'display-term))
+             (mm-handle-set-external-undisplayer handle (cons file buffer)))
+           (message "Displaying %s..." (format method file))
+           'external)
+          (copiousoutput
+           (with-current-buffer outbuf
+             (forward-line 1)
+             (mm-insert-inline
+              handle
+              (unwind-protect
+                  (progn
+                    (call-process shell-file-name nil
+                                  (setq buffer
+                                        (generate-new-buffer " *mm*"))
+                                  nil
+                                  shell-command-switch
+                                  (mm-mailcap-command
+                                   method file (mm-handle-type handle)))
+                    (if (buffer-live-p buffer)
+                        (save-excursion
+                          (set-buffer buffer)
+                          (buffer-string))))
+                (progn
+                  (ignore-errors (delete-file file))
+                  (ignore-errors (delete-directory
+                                  (file-name-directory file)))
+                  (ignore-errors (kill-buffer buffer))))))
+           'inline)
+          (t
+           (unwind-protect
+               (start-process "*display*"
+                              (setq buffer
+                                    (generate-new-buffer " *mm*"))
+                              shell-file-name
+                              shell-command-switch
+                              (mm-mailcap-command
+                               method file (mm-handle-type handle)))
+             (mm-handle-set-external-undisplayer
+              handle (cons file buffer)))
+           (message "Displaying %s..." (format method file))
+           'external)))))))
 
 (defun mm-mailcap-command (method file type-list)
   (let ((ctl (cdr type-list))
@@ -717,16 +729,18 @@ external if displayed external."
        (push "%" out))
        ((string= total "%s")
        (setq uses-stdin nil)
-       (push (mm-quote-arg file) out))
+       (push (mm-quote-arg
+              (gnus-map-function mm-path-name-rewrite-functions file)) out))
        ((string= total "%t")
        (push (mm-quote-arg (car type-list)) out))
        (t
        (push (mm-quote-arg (or (cdr (assq (intern sub) ctl)) "")) out))))
     (push (substring method beg (length method)) out)
-    (if uses-stdin
-       (progn
-         (push "<" out)
-         (push (mm-quote-arg file) out)))
+    (when uses-stdin
+      (push "<" out)
+      (push (mm-quote-arg
+            (gnus-map-function mm-path-name-rewrite-functions file))
+           out))
     (mapconcat 'identity (nreverse out) "")))
 
 (defun mm-remove-parts (handles)
@@ -968,8 +982,7 @@ like underscores."
 
 (defun mm-save-part-to-file (handle file)
   (mm-with-unibyte-buffer
-    (or (mm-insert-part handle)
-       (error "Error with message"))
+    (mm-insert-part handle)
     (let ((coding-system-for-write 'binary)
          ;; Don't re-compress .gz & al.  Arguably we should make
          ;; `file-name-handler-alist' nil, but that would chop
index edd824b..82f116c 100644 (file)
       (mm-insert-inline
        handle
        (concat "\n-- \n"
-              (if (fboundp 'vcard-pretty-print)
-                  (vcard-pretty-print (mm-get-part handle))
-                (vcard-format-string
-                 (vcard-parse-string (mm-get-part handle)
-                                     'vcard-standard-filter))))))
+              (ignore-errors
+                (if (fboundp 'vcard-pretty-print)
+                    (vcard-pretty-print (mm-get-part handle))
+                  (vcard-format-string
+                   (vcard-parse-string (mm-get-part handle)
+                                       'vcard-standard-filter)))))))
      (t
       (let ((b (point))
            (charset (mail-content-type-get
index 2757551..84693d8 100644 (file)
@@ -720,22 +720,19 @@ If HANDLES is non-nil, use it instead reparsing the buffer."
 
 (easy-menu-define
  mml-menu mml-mode-map ""
- '("Mime"
-   ("Attach"
-    ["File" mml-attach-file t]
-    ["Buffer" mml-attach-buffer t]
-    ["External" mml-attach-external t])
-   ("Insert"
-    ["Multipart" mml-insert-multipart t]
-    ["Part" mml-insert-part t])
-   ("Security"
-    ["Sign PGP/MIME" mml-secure-sign-pgpmime t]
-    ["Sign S/MIME" mml-secure-sign-smime t]
-    ["Encrypt PGP/MIME" mml-secure-encrypt-pgpmime t]
-    ["Encrypt S/MIME" mml-secure-encrypt-smime t])
+ '("Attachments"
+   ["Attach File" mml-attach-file t]
+   ["Attach Buffer" mml-attach-buffer t]
+   ["Attach External" mml-attach-external t]
+   ["Insert Part" mml-insert-part t]
+   ["Insert Multipart" mml-insert-multipart t]
+   ["PGP/MIME Sign" mml-secure-sign-pgpmime t]
+   ["PGP/MIME Encrypt" mml-secure-encrypt-pgpmime t]
+   ["S/MIME Sign" mml-secure-sign-smime t]
+   ["S/MIME Encrypt" mml-secure-encrypt-smime t]
    ;;["Narrow" mml-narrow-to-part t]
-   ["Quote" mml-quote-region t]
-   ["Validate" mml-validate t]
+   ["Quote MML" mml-quote-region t]
+   ["Validate MML" mml-validate t]
    ["Preview" mml-preview t]))
 
 (defvar mml-mode nil
index 622f0e4..6e4f883 100644 (file)
 (nnoo-declare nnbabyl)
 
 (defvoo nnbabyl-mbox-file (expand-file-name "~/RMAIL")
-  "The name of the rmail box file in the users home directory.")
+  "The name of the rmail box file in the users home directory.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnbabyl-active-file (expand-file-name "~/.rmail-active")
-  "The name of the active file for the rmail box.")
+  "The name of the active file for the rmail box.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnbabyl-get-new-mail t
-  "If non-nil, nnbabyl will check the incoming mail file and split the mail.")
+  "If non-nil, nnbabyl will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
+
 
 (defvoo nnbabyl-prepare-save-mail-hook nil
-  "Hook run narrowed to an article before saving.")
+  "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 \f
 
index d55b37b..f234b8d 100644 (file)
@@ -45,7 +45,9 @@
 (nnoo-declare nnfolder)
 
 (defvoo nnfolder-directory (expand-file-name message-directory)
-  "The name of the nnfolder directory.")
+  "The name of the nnfolder directory.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnfolder-nov-directory nil
   "The name of the nnfolder NOV directory.
@@ -53,7 +55,9 @@ If nil, `nnfolder-directory' is used.")
 
 (defvoo nnfolder-active-file
     (nnheader-concat nnfolder-directory "active")
-  "The name of the active file.")
+  "The name of the active file.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 ;; I renamed this variable to something more in keeping with the general GNU
 ;; style. -SLB
@@ -75,19 +79,28 @@ message, a huge time saver for large mailboxes.")
 
 (defvoo nnfolder-newsgroups-file
     (concat (file-name-as-directory nnfolder-directory) "newsgroups")
-  "Mail newsgroups description file.")
+  "Mail newsgroups description file.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnfolder-get-new-mail t
-  "If non-nil, nnfolder will check the incoming mail file and split the mail.")
+  "If non-nil, nnfolder will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnfolder-prepare-save-mail-hook nil
   "Hook run narrowed to an article before saving.")
 
 (defvoo nnfolder-save-buffer-hook nil
-  "Hook run before saving the nnfolder mbox buffer.")
+  "Hook run before saving the nnfolder mbox buffer.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
+
 
 (defvoo nnfolder-inhibit-expiry nil
-  "If non-nil, inhibit expiry.")
+  "If non-nil, inhibit expiry.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 \f
 
@@ -119,7 +132,9 @@ This variable shouldn't be flipped much.  If you have, for some reason,
 set this to t, and want to set it to nil again, you should always run
 the `nnfolder-generate-active-file' command.  The function will go
 through all nnfolder directories and generate nov databases for them
-all.  This may very well take some time.")
+all.  This may very well take some time.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnfolder-nov-file-suffix ".nov")
 
index a715e4a..9895171 100644 (file)
@@ -912,7 +912,7 @@ function is generally only called when Gnus is shutting down."
                                         (imap-mailbox-get 'flags))))
                    (gnus-info-set-marks
                     info
-                    (nnimap-update-alist-soft
+                    (gnus-update-alist-soft
                      (cdr pred)
                      (gnus-compress-sequence
                       (imap-search (nnimap-mark-to-predicate (cdr pred))))
@@ -925,7 +925,7 @@ function is generally only called when Gnus is shutting down."
          ;; so we remove that mark for gnus since we support dormant
          (gnus-info-set-marks
           info
-          (nnimap-update-alist-soft
+          (gnus-update-alist-soft
            'tick
            (gnus-remove-from-range
             (cdr-safe (assoc 'tick (gnus-info-marks info)))
@@ -1352,23 +1352,6 @@ be used in a STORE FLAGS command."
   "Return t iff MARK can be permanently (between IMAP sessions) saved on articles, in GROUP."
   (imap-message-flag-permanent-p (nnimap-mark-to-flag mark)))
 
-(defun nnimap-remassoc (key alist)
-  "Delete by side effect any elements of LIST whose car is `equal' to KEY.
-The modified LIST is returned.  If the first member
-of LIST has a car that is `equal' to KEY, there is no way to remove it
-by side effect; therefore, write `(setq foo (remassoc key foo))' to be
-sure of changing the value of `foo'."
-  (when alist
-    (if (equal key (caar alist))
-       (cdr alist)
-      (setcdr alist (nnimap-remassoc key (cdr alist)))
-      alist)))
-
-(defun nnimap-update-alist-soft (key value alist)
-  (if value
-      (cons (cons key value) (nnimap-remassoc key alist))
-    (nnimap-remassoc key alist)))
-
 (when nnimap-debug
   (require 'trace)
   (buffer-disable-undo (get-buffer-create nnimap-debug))
@@ -1429,8 +1412,6 @@ sure of changing the value of `foo'."
            nnimap-mark-to-flag-1
            nnimap-mark-to-flag
            nnimap-mark-permanent-p
-           nnimap-remassoc
-           nnimap-update-alist-soft
            )))
 
 (provide 'nnimap)
index 2c29861..f45b7f2 100644 (file)
 (nnoo-declare nnmbox)
 
 (defvoo nnmbox-mbox-file (expand-file-name "~/mbox")
-  "The name of the mail box file in the user's home directory.")
+  "The name of the mail box file in the user's home directory.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmbox-active-file (expand-file-name "~/.mbox-active")
-  "The name of the active file for the mail box.")
+  "The name of the active file for the mail box.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmbox-get-new-mail t
-  "If non-nil, nnmbox will check the incoming mail file and split the mail.")
+  "If non-nil, nnmbox will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmbox-prepare-save-mail-hook nil
-  "Hook run narrowed to an article before saving.")
+  "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 \f
 
index e086f4d..ef374ec 100644 (file)
 (nnoo-declare nnmh)
 
 (defvoo nnmh-directory message-directory
-  "*Mail spool directory.")
+  "*Mail spool directory.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmh-get-new-mail t
-  "*If non-nil, nnmh will check the incoming mail file and split the mail.")
+  "*If non-nil, nnmh will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmh-prepare-save-mail-hook nil
-  "*Hook run narrowed to an article before saving.")
+  "*Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnmh-be-safe nil
   "*If non-nil, nnmh will check all articles to make sure whether they are new or not.
 Go through the .nnmh-articles file and compare with the actual
 articles in this folder.  The articles that are \"new\" will be marked
-as unread by Gnus.")
+as unread by Gnus.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 \f
 
index b5e8be2..18b651d 100644 (file)
 (nnoo-declare nnml)
 
 (defvoo nnml-directory message-directory
-  "Spool directory for the nnml mail backend.")
+  "Spool directory for the nnml mail backend.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-active-file
     (expand-file-name "active" nnml-directory)
-  "Mail active file.")
+  "Mail active file.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-newsgroups-file
     (expand-file-name "newsgroups" nnml-directory)
-  "Mail newsgroups description file.")
+  "Mail newsgroups description file.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-get-new-mail t
-  "If non-nil, nnml will check the incoming mail file and split the mail.")
+  "If non-nil, nnml will check the incoming mail file and split the mail.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-nov-is-evil nil
   "If non-nil, Gnus will never generate and use nov databases for mail groups.
@@ -61,13 +69,19 @@ This variable shouldn't be flipped much.  If you have, for some reason,
 set this to t, and want to set it to nil again, you should always run
 the `nnml-generate-nov-databases' command.  The function will go
 through all nnml directories and generate nov databases for them
-all.  This may very well take some time.")
+all.  This may very well take some time.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-prepare-save-mail-hook nil
-  "Hook run narrowed to an article before saving.")
+  "Hook run narrowed to an article before saving.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 (defvoo nnml-inhibit-expiry nil
-  "If non-nil, inhibit expiry.")
+  "If non-nil, inhibit expiry.
+
+This variable is a virtual server slot.  See the Gnus manual for details.")
 
 
 \f
@@ -434,7 +448,8 @@ check twice.")
           (directory-files
            nnml-current-directory t
            (concat nnheader-numerical-short-files
-                   "\\|" (regexp-quote nnml-nov-file-name) "$")))
+                   "\\|" (regexp-quote nnml-nov-file-name) "$"
+                   "\\|" (regexp-quote nnml-marks-file-name) "$")))
          article)
       (while articles
        (setq article (pop articles))
@@ -472,6 +487,10 @@ check twice.")
       (let ((overview (concat old-dir nnml-nov-file-name)))
        (when (file-exists-p overview)
          (rename-file overview (concat new-dir nnml-nov-file-name))))
+      ;; Move .marks file.
+      (let ((marks (concat old-dir nnml-marks-file-name)))
+       (when (file-exists-p marks)
+         (rename-file marks (concat new-dir nnml-marks-file-name))))
       (when (<= (length (directory-files old-dir)) 2)
        (ignore-errors (delete-directory old-dir)))
       ;; That went ok, so we change the internal structures.
@@ -846,6 +865,85 @@ check twice.")
     (setq nnml-article-file-alist
          (nnheader-article-to-file-alist nnml-current-directory))))
 
+(defvoo nnml-marks-file-name ".marks")
+(defvoo nnml-marks-is-evil nil)
+(defvoo nnml-marks nil)
+
+(deffoo nnml-request-set-mark (group actions &optional server)
+  (nnml-possibly-change-directory group server)
+  (unless nnml-marks-is-evil
+    (nnml-open-marks group server)
+    (dolist (action actions)
+      (let ((range (nth 0 action))
+           (what  (nth 1 action))
+           (marks (nth 2 action)))
+       (assert (or (eq what 'add) (eq what 'del)) t
+               "Unknown request-set-mark action: %s" what)
+       (dolist (mark marks)
+         (setq nnml-marks (gnus-update-alist-soft
+                           mark
+                           (funcall (if (eq what 'add) 'gnus-range-add
+                                      'gnus-remove-from-range)
+                                    (cdr (assoc mark nnml-marks)) range)
+                           nnml-marks)))))
+    (nnml-save-marks group server))
+  nil)
+
+(deffoo nnml-request-update-info (group info &optional server)
+  (nnml-possibly-change-directory group server)
+  (unless nnml-marks-is-evil
+    (nnml-open-marks group server)
+    ;; Update info using `nnml-marks'.
+    (mapcar (lambda (pred)
+             (gnus-info-set-marks
+              info
+              (gnus-update-alist-soft
+               (cdr pred)
+               (cdr (assq (cdr pred) nnml-marks))
+               (gnus-info-marks info))
+              t))
+           gnus-article-mark-lists)
+    (let ((seen (cdr (assq 'read nnml-marks))))
+      (gnus-info-set-read info
+                         (if (and (integerp (car seen))
+                                  (null (cdr seen)))
+                             (list (cons (car seen) (car seen)))
+                           seen))))
+  info)
+
+(defun nnml-save-marks (group server)
+  (let ((file-name-coding-system nnmail-pathname-coding-system)
+       (file (expand-file-name nnml-marks-file-name
+                               (nnmail-group-pathname group nnml-directory))))
+    (nnml-possibly-create-directory group)
+    (with-temp-file file
+      (erase-buffer)
+      (princ nnml-marks (current-buffer))
+      (insert "\n"))))
+
+(defun nnml-open-marks (group server)
+  (let ((file (expand-file-name 
+              nnml-marks-file-name 
+              (nnmail-group-pathname group nnml-directory))))
+    (if (file-exists-p file)
+       (setq nnml-marks (condition-case err
+                            (with-temp-buffer
+                              (nnheader-insert-file-contents file)
+                              (read (current-buffer)))
+                          (error (or (gnus-yes-or-no-p
+                                      (format "Error reading nnml marks file %s (%s).  Continuing will use marks from .newsrc.eld.  Continue? " file err))
+                                     (error "Cannot read nnml marks file %s (%s)" file err)))))
+      ;; User didn't have a .marks file.  Probably first time
+      ;; user of the .marks stuff.  Bootstrap it from .newsrc.eld.
+      (let ((info (gnus-get-info
+                  (gnus-group-prefixed-name
+                   group
+                   (gnus-server-to-method (format "nnml:%s" server))))))
+       (nnheader-message 6 "Boostrapping nnml marks...")
+       (setq nnml-marks (gnus-info-marks info))
+       (push (cons 'read (gnus-info-read info)) nnml-marks)
+       (nnml-save-marks group server)))))
+
 (provide 'nnml)
 
 ;;; nnml.el ends here
index 4c2f1d2..d8f926a 100644 (file)
   (nnslashdot-possibly-change-server group server)
   (condition-case why
       (unless gnus-nov-is-evil
-       (if nnslashdot-threaded
-           (nnslashdot-threaded-retrieve-headers articles group)
-         (nnslashdot-sane-retrieve-headers articles group)))
+       (nnslashdot-retrieve-headers-1 articles group))
     (search-failed (nnslashdot-lose why))))
 
-(deffoo nnslashdot-threaded-retrieve-headers (articles group)
-  (let ((last (car (last articles)))
-       (did nil)
-       (start 1)
-       (sid (caddr (assoc group nnslashdot-groups)))
-       (first-comments t)
-       (startats '(1))
-       headers article subject score from date lines parent point s)
+(deffoo nnslashdot-retrieve-headers-1 (articles group)
+  (let* ((last (car (last articles)))
+        (start (if nnslashdot-threaded 1 (pop articles)))
+        (entry (assoc group nnslashdot-groups))
+        (sid (nth 2 entry))
+        (first-comments t)
+        headers article subject score from date lines parent point cid 
+        s startats changed)
     (save-excursion
       (set-buffer nnslashdot-buffer)
       (let ((case-fold-search t))
          (nnweb-insert (format nnslashdot-article-url
                                (nnslashdot-sid-strip sid)) t)
          (goto-char (point-min))
-         (search-forward "Posted by ")
-         (when (looking-at "<a[^>]+>\\([^<]+\\)")
-           (setq from (nnweb-decode-entities-string (match-string 1))))
-         (search-forward " on ")
+         (re-search-forward "Posted by[ \t\r\n]+")
+         (when (looking-at "\\(<a[^>]+>\\)?[ \t\r\n]*\\([^<\r\n]+\\)")
+           (setq from (nnweb-decode-entities-string (match-string 2))))
+         (search-forward "on ")
          (setq date (nnslashdot-date-to-date
                      (buffer-substring (point) (1- (search-forward "<")))))
          (setq lines (/ (- (point)
             1 group from date
             (concat "<" (nnslashdot-sid-strip sid) "%1@slashdot>")
             "" 0 lines nil nil))
-          headers))
-       (while (and (setq start (pop startats))
-                   (< start last))
+          headers)
+         (setq start (if nnslashdot-threaded 2 (pop articles))))
+       (while (and start (<= start last))
          (setq point (goto-char (point-max)))
          (nnweb-insert
           (format nnslashdot-comments-url
                   (nnslashdot-sid-strip sid)
-                  nnslashdot-threshold 0 start)
+                  nnslashdot-threshold 0 (- start 2))
           t)
-         (when first-comments
+         (when (and nnslashdot-threaded first-comments)
            (setq first-comments nil)
            (goto-char (point-max))
            (while (re-search-backward "startat=\\([0-9]+\\)" nil t)
              (unless (memq s startats)
                (push s startats)))
            (setq startats (sort startats '<)))
+         (setq article (if (and article (< start article)) article start))
          (goto-char point)
          (while (re-search-forward
                  "<a name=\"\\([0-9]+\\)\"><\\(b\\|H4\\)>\\([^<]+\\)</\\(b\\|H4\\)>.*score:\\([^)]+\\))"
                  nil t)
-           (setq article (string-to-number (match-string 1))
+           (setq cid (match-string 1)
                  subject (match-string 3)
                  score (match-string 5))
+           (unless (assq article (nth 4 entry))
+             (setcar (nthcdr 4 entry) (cons (cons article cid) (nth 4 entry)))
+             (setq changed t))
            (when (string-match "^Re: *" subject)
              (setq subject (concat "Re: " (substring subject (match-end 0)))))
            (setq subject (nnweb-decode-entities-string subject))
-           (forward-line 1)
+           (search-forward "<BR>")
            (if (looking-at
-                "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
+                "by[ \t\n]+<a[^>]+>\\([^<]+\\)</a>[ \t\n]*(\\(<[^>]+>\\)*\\([^<>)]+\\))")
                (progn
                  (goto-char (- (match-end 0) 5))
                  (setq from (concat
                              (nnweb-decode-entities-string (match-string 1))
-                             " <" (match-string 2) ">")))
+                             " <" (match-string 3) ">")))
              (setq from "")
-             (when (looking-at "by \\(.+\\) on ")
+             (when (looking-at "by \\([^<>]*\\) on ")
                (goto-char (- (match-end 0) 5))
                (setq from (nnweb-decode-entities-string (match-string 1)))))
            (search-forward " on ")
            (setq date
                  (nnslashdot-date-to-date
-                  (buffer-substring (point) (progn (end-of-line) (point)))))
+                  (buffer-substring (point) (progn (skip-chars-forward "^()<>\n\r") (point)))))
            (setq lines (/ (abs (- (search-forward "<td ")
                                   (search-forward "</td>")))
                           70))
                  (if (looking-at ".*cid=\\([0-9]+\\)")
                      (match-string 1)
                    nil))
-           (setq did t)
            (push
             (cons
-             (1+ article)
+             article
              (make-full-mail-header
-              (1+ article)
+              article
               (concat subject " (" score ")")
               from date
-              (concat "<" (nnslashdot-sid-strip sid) "%"
-                      (number-to-string (1+ article))
-                      "@slashdot>")
+              (concat "<" (nnslashdot-sid-strip sid) "%" cid "@slashdot>")
               (if parent
-                  (concat "<" (nnslashdot-sid-strip sid) "%"
-                          (number-to-string (1+ (string-to-number parent)))
-                          "@slashdot>")
+                  (concat "<" (nnslashdot-sid-strip sid) "%" 
+                          parent "@slashdot>")
                 "")
               0 lines nil nil))
-            headers)))))
-    (setq nnslashdot-headers (sort headers 'car-less-than-car))
-    (save-excursion
-      (set-buffer nntp-server-buffer)
-      (erase-buffer)
-      (mm-with-unibyte-current-buffer
-       (dolist (header nnslashdot-headers)
-         (nnheader-insert-nov (cdr header)))))
-    'nov))
-
-(deffoo nnslashdot-sane-retrieve-headers (articles group)
-  (let ((last (car (last articles)))
-       (did nil)
-       (start (max (1- (car articles)) 1))
-       (sid (caddr (assoc group nnslashdot-groups)))
-       headers article subject score from date lines parent point)
-    (save-excursion
-      (set-buffer nnslashdot-buffer)
-      (erase-buffer)
-      (when (= start 1)
-       (nnweb-insert (format nnslashdot-article-url
-                             (nnslashdot-sid-strip sid)) t)
-       (goto-char (point-min))
-       (search-forward "Posted by ")
-       (when (looking-at "<a[^>]+>\\([^<]+\\)")
-         (setq from (nnweb-decode-entities-string (match-string 1))))
-       (search-forward " on ")
-       (setq date (nnslashdot-date-to-date
-                   (buffer-substring (point) (1- (search-forward "<")))))
-       (forward-line 2)
-       (setq lines (count-lines (point)
-                                (re-search-forward
-                                 "A href=\"\\(http://slashdot.org\\)?/article")))
-       (push
-        (cons
-         1
-         (make-full-mail-header
-          1 group from date (concat "<" (nnslashdot-sid-strip sid)
-                                    "%1@slashdot>")
-          "" 0 lines nil nil))
-        headers))
-      (while (or (not article)
-                (and did
-                     (< article last)))
-       (when article
-         (setq start (1+ article)))
-       (setq point (goto-char (point-max)))
-       (nnweb-insert
-        (format nnslashdot-comments-url (nnslashdot-sid-strip sid)
-                nnslashdot-threshold 4 start)
-        t)
-       (goto-char point)
-       (while (re-search-forward
-               "<a name=\"\\([0-9]+\\)\"><\\(b\\|H4\\)>\\([^<]+\\)</\\(b\\|H4\\)>.*score:\\([^)]+\\))"
-               nil t)
-         (setq article (string-to-number (match-string 1))
-               subject (match-string 3)
-               score (match-string 5))
-         (when (string-match "^Re: *" subject)
-           (setq subject (concat "Re: " (substring subject (match-end 0)))))
-         (setq subject (nnweb-decode-entities-string subject))
-         (forward-line 1)
-         (if (looking-at
-              "by <a[^>]+>\\([^<]+\\)</a>[ \t\n]*.*(\\([^)]+\\))")
+            headers)
+           (while (and articles (<= (car articles) article))
+             (pop articles))
+           (setq article (1+ article)))
+         (if nnslashdot-threaded 
              (progn
-               (goto-char (- (match-end 0) 5))
-               (setq from (concat
-                           (nnweb-decode-entities-string (match-string 1))
-                           " <" (match-string 2) ">")))
-           (setq from "")
-           (when (looking-at "by \\(.+\\) on ")
-             (goto-char (- (match-end 0) 5))
-             (setq from (nnweb-decode-entities-string (match-string 1)))))
-         (search-forward " on ")
-         (setq date
-               (nnslashdot-date-to-date
-                (buffer-substring (point) (progn (end-of-line) (point)))))
-         (setq lines (/ (abs (- (search-forward "<td ")
-                                (search-forward "</td>")))
-                        70))
-         (forward-line 2)
-         (setq parent
-               (if (looking-at ".*cid=\\([0-9]+\\)")
-                   (match-string 1)
-                 nil))
-         (setq did t)
-         (push
-          (cons
-           (1+ article)
-           (make-full-mail-header
-            (1+ article) (concat subject " (" score ")")
-            from date
-            (concat "<" (nnslashdot-sid-strip sid) "%"
-                    (number-to-string (1+ article))
-                    "@slashdot>")
-            (if parent
-                (concat "<" (nnslashdot-sid-strip sid) "%"
-                        (number-to-string (1+ (string-to-number parent)))
-                        "@slashdot>")
-              "")
-            0 lines nil nil))
-          headers))))
-    (setq nnslashdot-headers
-         (sort headers (lambda (s1 s2) (< (car s1) (car s2)))))
+               (setq start (pop startats))
+               (if start (setq start (+ start 2))))
+           (setq start (pop articles))))))
+    (if changed (nnslashdot-write-groups))
+    (setq nnslashdot-headers (sort headers 'car-less-than-car))
     (save-excursion
       (set-buffer nntp-server-buffer)
       (erase-buffer)
 
 (deffoo nnslashdot-request-article (article &optional group server buffer)
   (nnslashdot-possibly-change-server group server)
-  (let (contents)
+  (let (contents cid)
     (condition-case why
        (save-excursion
          (set-buffer nnslashdot-buffer)
            (goto-char (point-min))
            (when (and (stringp article)
                       (string-match "%\\([0-9]+\\)@" article))
-             (setq article (string-to-number (match-string 1 article))))
+             (setq cid (match-string 1 article))
+             (let ((map (nth 4 (assoc group nnslashdot-groups))))
+               (while map
+                 (if (equal (cdar map) cid)
+                     (setq article (caar map)
+                           map nil)
+                   (setq map (cdr map))))))
            (when (numberp article)
              (if (= article 1)
                  (progn
-                   (re-search-forward "Posted by *<[^>]+>[^>]*<[^>]+> *on ")
+                   (re-search-forward 
+                    "Posted by")
                    (search-forward "<BR>")
                    (setq contents
                          (buffer-substring
                           (point)
                           (progn
                             (re-search-forward
-                             "<p>.*A href=\"\\(http://slashdot.org\\)?/article")
+                             "&lt;&nbsp;[ \t\r\n]*<A HREF=\"\\(\\(http:\\)?//slashdot\\.org\\)?/article")
                             (match-beginning 0)))))
-               (search-forward (format "<a name=\"%d\">" (1- article)))
+               (setq cid (cdr (assq article 
+                                    (nth 4 (assoc group nnslashdot-groups)))))
+               (search-forward (format "<a name=\"%s\">" cid))
                (setq contents
                      (buffer-substring
-                      (re-search-forward "<td[^>]+>")
+                      (re-search-forward "<td[^>]*>")
                       (search-forward "</td>")))))))
       (search-failed (nnslashdot-lose why)))
 
              (setq gname (concat description " (" sid ")"))
              (if (setq elem (assoc gname nnslashdot-groups))
                  (setcar (cdr elem) articles)
-               (push (list gname articles sid (current-time))
+               (push (list gname articles sid (current-time) nil)
                      nnslashdot-groups))
              (goto-char (point-max))
              (widen)))
                  (setq gname (concat description " (" sid ")"))
                  (if (setq elem (assoc gname nnslashdot-groups))
                      (setcar (cdr elem) articles)
-                   (push (list gname articles sid (current-time))
+                   (push (list gname articles sid (current-time) nil)
                          nnslashdot-groups)))))
            (incf number 30)))
       (search-failed (nnslashdot-lose why)))
   (unless nnslashdot-groups
     (nnslashdot-read-groups)))
 
+(defun nnslashdot-make-tuple (tuple n)
+  (prog1
+      tuple
+    (while (> n 1)
+      (unless (cdr tuple)
+       (setcdr tuple (list nil)))
+      (setq tuple (cdr tuple)
+           n (1- n)))))
+
 (defun nnslashdot-read-groups ()
   (let ((file (expand-file-name "groups" nnslashdot-directory)))
     (when (file-exists-p file)
       (mm-with-unibyte-buffer
        (insert-file-contents file)
        (goto-char (point-min))
-       (setq nnslashdot-groups (read (current-buffer)))))))
+       (setq nnslashdot-groups (read (current-buffer))))
+      (if (and nnslashdot-groups (< (length (car nnslashdot-groups)) 5))
+         (let ((groups nnslashdot-groups))
+           (while groups
+             (nnslashdot-make-tuple (car groups) 5)
+             (setq groups (cdr groups))))))))
 
 (defun nnslashdot-write-groups ()
   (with-temp-file (expand-file-name "groups" nnslashdot-directory)
index 7ebd1ab..f2c28f0 100644 (file)
@@ -70,7 +70,9 @@ rgexp to replace with IMAGE.  IMAGE is the name of a PBM file in
 (defvar smiley-cached-regexp-alist nil)
 
 (defun smiley-update-cache ()
-  (dolist (elt smiley-regexp-alist)
+  (dolist (elt (if (symbolp smiley-regexp-alist)
+                  (symbol-value smiley-regexp-alist)
+                smiley-regexp-alist))
     (let* ((data-directory smiley-data-directory)
           (image (find-image (list (list :type 'pbm
                                          :file (nth 2 elt)
index 678042a..9146963 100644 (file)
@@ -189,6 +189,15 @@ If nil, use system defaults."
 
 (defvar smime-details-buffer "*OpenSSL output*")
 
+(eval-and-compile
+  (defalias 'smime-make-temp-file
+    (if (fboundp 'make-temp-file)
+       'make-temp-file
+      (lambda (prefix &optional dir-flag) ;; Simple implementation
+       (expand-file-name
+        (make-temp-name prefix)
+        temporary-file-directory)))))
+
 ;; Password dialog function
 
 (defun smime-ask-passphrase ()
@@ -229,7 +238,7 @@ to include in its caar."
        (certfiles (and (cdr keyfiles) (cadr keyfiles)))
        (buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
        (passphrase (smime-ask-passphrase))
-       (tmpfile (make-temp-file "smime")))
+       (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
        (setenv "GNUS_SMIME_PASSPHRASE" passphrase))
     (prog1
@@ -263,7 +272,7 @@ have proper MIME tags.  CERTFILES is a list of filenames, each file
 is expected to contain of a PEM encoded certificate."
   (smime-new-details-buffer)
   (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
-       (tmpfile (make-temp-file "smime")))
+       (tmpfile (smime-make-temp-file "smime")))
     (prog1
        (when (prog1
                  (apply 'smime-call-openssl-region b e (list buffer tmpfile)
@@ -354,7 +363,7 @@ in the buffer specified by `smime-details-buffer'."
   (smime-new-details-buffer)
   (let ((buffer (generate-new-buffer (generate-new-buffer-name " *smime*")))
        CAs (passphrase (smime-ask-passphrase))
-       (tmpfile (make-temp-file "smime")))
+       (tmpfile (smime-make-temp-file "smime")))
     (if passphrase
        (setenv "GNUS_SMIME_PASSPHRASE" passphrase))
     (if (prog1
@@ -461,10 +470,11 @@ A string or a list of strings is returned."
            (caddr curkey)
          (smime-get-certfiles keyfile otherkeys)))))
 
-(defalias 'smime-point-at-eol
-  (if (fboundp 'point-at-eol)
-      'point-at-eol
-    'line-end-position))
+(eval-and-compile
+  (defalias 'smime-point-at-eol
+    (if (fboundp 'point-at-eol)
+       'point-at-eol
+      'line-end-position)))
 
 (defun smime-buffer-as-string-region (b e)
   "Return each line in region between B and E as a list of strings."
index 7ab6263..331b802 100644 (file)
@@ -1,3 +1,43 @@
+2001-08-20  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Delayed Articles): New section.  Documents
+       gnus-delay.el.
+       (Fancy Mail Splitting): Say that nnmail-cache-accepted-message-ids
+       must be non-nil for splitting with parents to work.
+
+2001-08-19 17:31:15  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Other Marks): Addition.
+       (Positioning Point): New.
+       (Tabulation): New.
+
+2001-08-19  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Getting Started Reading Mail): Use (nnml "") rather
+       than (nnml "private") as the example server specification.  This
+       way, the example group names a few paragraphs further down are
+       correct, and I expect that most people are going to use the empty
+       string as name, anyway.  Please holler if that is wrong.
+
+2001-08-18  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi (Optional Backend Functions): Remove `set'
+       request-set-mark action.
+
+2001-08-18 00:40:10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Wide Characters): New section.
+
+2001-08-17  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi: Replace 20,20 with 23,23 for
+       gnus-summary-line-format.
+
+2001-08-17 14:24:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Group Parameters): Document regexp substitution. 
+       (Group Parameters): Addition.
+
 2001-08-11 23:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
        From Nevin Kapur <nevin@jhu.edu>
 
index 5787ab7..700db8c 100644 (file)
@@ -459,497 +459,573 @@ Emacs \e$B$,J8>O$rJT=8$9$k?M$KNO$rM?$($k$h$&$K!"\e(Bgnus \e$B$O%K%e!<%9$rFI$`?M$KNO
 @end iftex
 
 @menu
-* Starting Up::        \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$\e(B
-* Group Buffer::       \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
-* Summary Buffer::     \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
-* Article Buffer::     \e$B5-;v$rI=<($7!"07$&\e(B
-* Composing Messages:: \e$B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs\e(B
-* Select Methods::     Gnus \e$B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*BrJ}K!$GFI$`\e(B
-* Scoring::            \e$B5-;v$KCM$r$D$1$k\e(B
-* Various::            \e$B0lHLE*$J@_Dj\e(B
-* The End::            \e$B$5$i$P!"$=$7$F$5$h$&$J$i\e(B
-* Appendices::         \e$BMQ8l!"\e(BEmacs \e$BF~Lg!"\e(BFAQ\e$B!"Nr;K!"FbIt9=B$\e(B
-* Index::              \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
-* Key Index::          \e$B%-!<:w0z\e(B
+* Starting Up::                 \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN\e(B
+                                \e$B$l$J$$\e(B
+* Group Buffer::                \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
+* Summary Buffer::              \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
+* Article Buffer::              \e$B5-;v$rI=<($7!"07$&\e(B
+* Composing Messages::          \e$B%a!<%k$H%K%e!<%9$rAw$k$?$a$N>pJs\e(B
+* Select Methods::              Gnus \e$B$OA4$F$N%a%C%;!<%8$r$$$m$$$m$JA*Br\e(B
+                                \e$BJ}K!$GFI$`\e(B
+* Scoring::                     \e$B5-;v$KCM$r$D$1$k\e(B
+* Various::                     \e$B0lHLE*$J@_Dj\e(B
+* The End::                     \e$B$5$i$P!"$=$7$F$5$h$&$J$i\e(B
+* Appendices::                  \e$BMQ8l!"\e(BEmacs \e$BF~Lg!"\e(BFAQ\e$B!"Nr;K!"FbIt9=B$\e(B
+* Index::                       \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
+* Key Index::                   \e$B%-!<:w0z\e(B
 
 @detailmenu
  --- The Detailed Node Listing ---
 
 Starting Gnus
 
-* Finding the News::   \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
-* The First Time::     \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
-* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~$l$k$3$H\e(B
-                       \e$B$,$G$-$k$+\e(B
-* Slave Gnusae::       \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,$G$-$k\e(B
-* Fetching a Group::   \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
-* New Groups::         Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
-* Startup Files::      \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B--@file{.newsrc}
-* Auto Save::          \e$B%/%i%C%7%e$+$i$N2sI|\e(B
-* The Active File::    \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+$+$k\e(B
-* Changing Servers::   \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$\e(B
-* Startup Variables::  \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
+* Finding the News::            \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
+* The First Time::              \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
+* The Server is Down::          \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~\e(B
+                                \e$B$l$k$3$H$,$G$-$k$+\e(B
+* Slave Gnusae::                \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,\e(B
+                                \e$B$G$-$k\e(B
+* Fetching a Group::            \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
+* New Groups::                  Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
+* Changing Servers::            \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7\e(B
+                                \e$B$l$J$$\e(B
+* Startup Files::               \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B --
+                                @file{.newsrc}
+* Auto Save::                   \e$B%/%i%C%7%e$+$i$N2sI|\e(B
+* The Active File::             \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+\e(B
+                                \e$B$+$k\e(B
+* Startup Variables::           \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
 
 New Groups
 
-* Checking New Groups::  \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
-* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
-* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
+* Checking New Groups::         \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
+* Subscription Methods::        \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-\e(B
+                                \e$B$+\e(B
+* Filtering New Groups::        Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
 
 Group Buffer
 
-* Group Buffer Format::   \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
-* Group Maneuvering::     \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
-* Selecting a Group::     \e$B<B:]$K%K%e!<%9$rFI$`\e(B
-* Group Data::            \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
-* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
-* Group Levels::          \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
-* Group Score::           \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
-* Marking Groups::        \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9\e(B
-* Foreign Groups::        \e$B%0%k!<%W$N:n@.$H=$@5\e(B
-* Group Parameters::      \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9\e(B
-* Listing Groups::        Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9\e(B
-* Sorting Groups::        \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
-* Group Maintenance::     \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
-* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&\e(B
-* Exiting Gnus::          \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
-* Group Topics::          \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k\e(B
-* Misc Group Stuff::      \e$BB>$K$G$-$k$3$H\e(B
+* Group Buffer Format::         \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
+* Group Maneuvering::           \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
+* Selecting a Group::           \e$B<B:]$K%K%e!<%9$rFI$`\e(B
+* Subscription Commands::       \e$B9XFI!"9XFICf;_!">C5n\e(B
+* Group Data::                  \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
+* Group Levels::                \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
+* Group Score::                 \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
+* Marking Groups::              \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-\e(B
+                                \e$B$^$9\e(B
+* Foreign Groups::              \e$B%0%k!<%W$N:n@.$H=$@5\e(B
+* Group Parameters::            \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l\e(B
+                                \e$B$^$9\e(B
+* Listing Groups::              Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<(\e(B
+                                \e$B$G$-$^$9\e(B
+* Sorting Groups::              \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
+* Group Maintenance::           \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
+* Browse Foreign Server::       \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_\e(B
+                                \e$B$h$&\e(B
+* Exiting Gnus::                \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
+* Group Topics::                \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d\e(B
+                                \e$B$9$k\e(B
+* Misc Group Stuff::            \e$BB>$K$G$-$k$3$H\e(B
 
 Group Buffer Format
 
-* Group Line Specification::     \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
-* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
-* Group Highlighting::           \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
+* Group Line Specification::    \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
+* Group Modeline Specification::  \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
+* Group Highlighting::          \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
 
 Group Topics
 
-* Topic Variables::  Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Topic Commands::   \e$BD64JC1BPOC7?L?Na\e(B
-* Topic Sorting::    \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
-* Topic Topology::   \e$BA4@$3&$NCO?^\e(B
-* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?\e(B
+* Topic Variables::             Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Topic Commands::              \e$BD64JC1BPOC7?L?Na\e(B
+* Topic Sorting::               \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
+* Topic Topology::              \e$BA4@$3&$NCO?^\e(B
+* Topic Parameters::            \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k\e(B
+                                \e$B%Q%i%a!<%?\e(B
 
 Misc Group Stuff
 
-* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/\e(B
-* Group Information::     \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
-* Group Timestamp::       Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
-* File Commands::         Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
+* Scanning New Messages::       Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&\e(B
+                                \e$B$+$rJ9$/\e(B
+* Group Information::           \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
+* Group Timestamp::             Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-\e(B
+                                \e$BO?$5$;$k\e(B
+* File Commands::               Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
 
 Summary Buffer
 
-* Summary Buffer Format::      \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
-* Summary Maneuvering::        \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
-* Choosing Articles::          \e$B5-;v$rFI$`\e(B
-* Paging the Article::         \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
-* Reply Followup and Post::    \e$B5-;v$rEj9F$9$k\e(B
-* Marking Articles::           \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
-* Limiting::                   \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
-* Threading::                  \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
-* Asynchronous Fetching::      Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
-* Article Caching::            \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
-* Persistent Articles::        \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
-* Article Backlog::            \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
-* Saving Articles::            \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Decoding Articles::          Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07$($k\e(B
-* Article Treatment::          \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k\e(B
-@c * MIME Commands::              Doing MIMEy things with the articles.
-@c * Charsets::                   Character set issues.
-* Article Commands::           \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
-* Summary Sorting::            \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
-* Finding the Parent::         \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J$5$$\e(B
-* Alternative Approaches::     \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
-* Tree Display::               \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
-* Mail Group Commands::        \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
-                               \e$B$3$H$,$G$-$k\e(B
-* Various Summary Stuff::      \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
-* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
-                               \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
-* Crosspost Handling::         \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+\e(B
-* Duplicate Suppression::      \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<jCJ\e(B
+* Summary Buffer Format::       \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
+* Summary Maneuvering::         \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
+* Choosing Articles::           \e$B5-;v$rFI$`\e(B
+* Paging the Article::          \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
+* Reply Followup and Post::     \e$B5-;v$rEj9F$9$k\e(B
+* Delayed Articles::            
+* Marking Articles::            \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1\e(B
+                                \e$B$k\e(B
+* Limiting::                    \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
+* Threading::                   \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
+* Sorting the Summary Buffer::  \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k\e(B
+                                \e$B$+\e(B
+* Asynchronous Fetching::       Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
+* Article Caching::             \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
+* Persistent Articles::         \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
+* Article Backlog::             \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
+* Saving Articles::             \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Decoding Articles::           Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07\e(B
+                                \e$B$($k\e(B
+* Article Treatment::           \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G\e(B
+                                \e$B$-$k\e(B
+@c * MIME Commands::               Doing MIMEy things with the articles.
+@c * Charsets::                    Character set issues.
+* Article Commands::            \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
+* Summary Sorting::             \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
+* Finding the Parent::          \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J\e(B
+                                \e$B$5$$\e(B
+* Alternative Approaches::      \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
+* Tree Display::                \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
+* Mail Group Commands::         \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
+                                \e$B$3$H$,$G$-$k\e(B
+* Various Summary Stuff::       \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
+* Exiting the Summary Buffer::  \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
+                                \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
+* Crosspost Handling::          \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l\e(B
+                                \e$B$k$+\e(B
+* Duplicate Suppression::       \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<j\e(B
+                                \e$BCJ\e(B
 @c * Security::                    Decrypt and Verify.
-* Mailing List::               \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
+* Mailing List::                \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
 
 Summary Buffer Format
 
-* Summary Buffer Lines::     \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k\e(B
-* To From Newsgroups::       \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
-* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
-* Summary Highlighting::     \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
+* Summary Buffer Lines::        \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;X\e(B
+                                \e$BDj$G$-$k\e(B
+* To From Newsgroups::          \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
+* Summary Buffer Mode Line::    \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
+* Summary Highlighting::        \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
 
 Choosing Articles
 
-* Choosing Commands::  \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
-* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
+* Choosing Commands::           \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
+* Choosing Variables::          \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
 
 Reply, Followup and Post
 
-* Summary Mail Commands::     \e$B%a!<%k$rAw$k\e(B
-* Summary Post Commands::     \e$B%K%e!<%9$rAw$k\e(B
-* Summary Message Commands::  \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
-* Canceling and Superseding:: \e$B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y\e(B
+* Summary Mail Commands::       \e$B%a!<%k$rAw$k\e(B
+* Summary Post Commands::       \e$B%K%e!<%9$rAw$k\e(B
+* Summary Message Commands::    \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
+* Canceling and Superseding::   
 
 Marking Articles
 
-* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
-* Read Articles::   \e$B4{FI5-;v$X$N0u\e(B
-* Other Marks::     \e$B9XFIEY$K1F6A$7$J$$0u\e(B
-* Setting Marks::         \e$B0u$NIU$1J}$H>C$7J}\e(B
-* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
-* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
+* Unread Articles::             \e$BL$FI5-;v$X$N0u\e(B
+* Read Articles::               \e$B4{FI5-;v$X$N0u\e(B
+* Other Marks::                 \e$B9XFIEY$K1F6A$7$J$$0u\e(B
+
+Marking Articles
+
+* Setting Marks::               \e$B0u$NIU$1J}$H>C$7J}\e(B
+* Generic Mark Commands::       \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
+* Setting Process Marks::       \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
 
 Threading
 
-* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
-* Thread Commands::       \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
+* Customizing Threading::       \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
+* Thread Commands::             \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
 
 Customizing Threading
 
-* Loose Threads::       Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!\e(B
-* Filling In Threads::  \e$B%9%l%C%I$rKd$a$k\e(B
-* More Threading::      \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
-* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"$J$?$O4V\e(B
-                        \e$B0c$C$F$$$?\e(B!
+* Loose Threads::               Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C\e(B
+                                \e$B%I$K$9$kJ}K!\e(B
+* Filling In Threads::          \e$B%9%l%C%I$rKd$a$k\e(B
+* More Threading::              \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
+* Low-Level Threading::         \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"\e(B
+                                \e$B$J$?$O4V0c$C$F$$$?\e(B!
 
 Decoding Articles
 
-* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
-* Shell Archives::     shar \e$B5-;v$r2rE`$9$k\e(B
-* PostScript Files::   \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
-* Other Files::        \e$BIaDL$NJ]B8$H\e(B binhex.
-* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
-* Viewing Files::      \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
+* Uuencoded Articles::          \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
+* Shell Archives::              shar \e$B5-;v$r2rE`$9$k\e(B
+* PostScript Files::            \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
+* Other Files::                 \e$BIaDL$NJ]B8$H\e(B binhex.
+* Decoding Variables::          \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
+* Viewing Files::               \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
 
 Decoding Variables
 
-* Rule Variables::         \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t\e(B
-* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
-* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
+* Rule Variables::              \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$k\e(B
+                                \e$BJQ?t\e(B
+* Other Decode Variables::      \e$BB>$NI|9f2=$NJQ?t\e(B
+* Uuencoding and Posting::      uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
 
 Article Treatment
 
-* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$\e(B
-* Article Fontisizing::  \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
-* Article Hiding::       \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
-* Article Washing::      \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t\e(B
-* Article Buttons::      URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C%/$9$k\e(B
-* Article Date::         \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
-* Article Signature::    \e$B=pL>$C$F2?\e(B?
-* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
+* Article Highlighting::        \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?\e(B
+                                \e$B$$\e(B
+* Article Fontisizing::         \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
+* Article Hiding::              \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
+* Article Washing::             \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?\e(B
+                                \e$B4X?t\e(B
+* Article Buttons::             URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C\e(B
+                                \e$B%/$9$k\e(B
+* Article Date::                \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
+* Article Signature::           \e$B=pL>$C$F2?\e(B?
+* Article Miscellania::         \e$BB>$N$$$m$$$m$J$b$N\e(B
 
 Alternative Approaches
 
-* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
-* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
+* Pick and Read::               \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
+* Binary Groups::               \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
 
 Various Summary Stuff
 
-* Summary Group Information::       \e$B>pJs;X8~$NL?Na\e(B
-* Searching for Articles::          \e$BJ#?t5-;vL?Na\e(B
-* Summary Generation Commands::     \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
-* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
+* Summary Group Information::   \e$B>pJs;X8~$NL?Na\e(B
+* Searching for Articles::      \e$BJ#?t5-;vL?Na\e(B
+* Summary Generation Commands:: 
+* Really Various Summary Commands::  \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
 
 Article Buffer
 
-* Hiding Headers::       \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
-* Using MIME::           @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
-* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
-* Article Keymap::       \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
-* Misc Article::         \e$B$=$NB>\e(B
+* Hiding Headers::              \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
+* Using MIME::                  @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
+* Customizing Articles::        \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
+* Article Keymap::              \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
+* Misc Article::                \e$B$=$NB>\e(B
 
 Composing Messages
 
-* Mail::              \e$B%a!<%k$HJVEz\e(B
-* Posting Server::    \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
-* Mail and Post::     \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
-* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3$m\e(B
-* Posting Styles::    \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!\e(B
-* Drafts::            \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
-* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k\e(B?
-@c * Using GPG::         How to use GPG and MML to sign and encrypt messages
+* Mail::                        \e$B%a!<%k$HJVEz\e(B
+* Posting Server::              \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
+* Mail and Post::               \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
+* Archived Messages::           \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3\e(B
+                                \e$B$m\e(B
+* Posting Styles::              \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}\e(B
+                                \e$BK!\e(B
+* Drafts::                      \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
+* Rejected Articles::           \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K\e(B
+                                \e$B2?$,5/$3$k\e(B?
+@c * Using GPG::                   How to use GPG and MML to sign and encrypt messages
 
 Select Methods
 
-* Server Buffer::     \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
-* Getting News::      USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
-* Getting Mail::      \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
-* Browsing the Web::  \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
-* Other Sources::     \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
-* Combined Groups::   \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
-* Gnus Unplugged::    \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
+* Server Buffer::               \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Getting News::                USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
+* Getting Mail::                \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
+* Browsing the Web::            \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9\e(B
+                                \e$B$k\e(B
+* Other Sources::               \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H\e(B
+                                \e$B$rFI$`\e(B
+* Combined Groups::             \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
+* Gnus Unplugged::              \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
 
 Server Buffer
 
-* Server Buffer Format::      \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
-* Server Commands::           \e$B%5!<%P!<$rA`$kL?Na\e(B
-* Example Methods::           \e$B%5!<%P!<;XDj$NNc\e(B
-* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
-* Server Variables::          \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
-* Servers and Methods::       \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
-* Unavailable Servers::       \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A\e(B
-                              \e$B$F$$$k$+$b$7$l$J$$\e(B
+* Server Buffer Format::        \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
+* Server Commands::             \e$B%5!<%P!<$rA`$kL?Na\e(B
+* Example Methods::             \e$B%5!<%P!<;XDj$NNc\e(B
+* Creating a Virtual Server::   \e$B%;%C%7%g%s$NNc\e(B
+* Server Variables::            \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
+* Servers and Methods::         \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
+* Unavailable Servers::         \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn\e(B
+                                \e$B$A$F$$$k$+$b$7$l$J$$\e(B
 
 Getting News
 
-* NNTP::       @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
-* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+* NNTP::                        @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
+* News Spool::                  \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+
+@sc{nntp}
+
+* Direct Functions::            \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
+* Indirect Functions::          \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
+* Common Variables::            \e$B$$$/$D$+$N@\B3MQ$N4X?t$,;2>H$9$kJQ?t\e(B
 
 Getting Mail
 
-* Mail in a Newsreader::         \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
-* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
-* Splitting Mail::               \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
-* Mail Sources::                 Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
-                                 \e$B$i$;$k\e(B
-* Mail Backend Variables::       \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
-* Fancy Mail Splitting::         Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
-                                 \e$B$r$9$k$3$H$,$G$-$k\e(B
-* Group Mail Splitting::         \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W\e(B
-                                   \e$B%+%9%?%^%$%:$r;H$&!#\e(B
-* Incorporating Old Mail::       \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
-* Expiring Mail::                \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
-* Washing Mail::                 \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
-* Duplicates::                   \e$B=EJ#$7$?%a!<%k$r07$&\e(B
-* Not Reading Mail::             \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
-                                 \e$B%s%I$r;H$&\e(B
-* Choosing a Mail Backend::      Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
+* Mail in a Newsreader::        \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
+* Getting Started Reading Mail::  \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
+* Splitting Mail::              \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
+* Mail Sources::                Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
+                                \e$B$i$;$k\e(B
+* Mail Backend Variables::      \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
+* Fancy Mail Splitting::        Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
+                                \e$B$r$9$k$3$H$,$G$-$k\e(B
+* Group Mail Splitting::        \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W%+%9%?\e(B
+                                \e$B%^%$%:$r;H$&\e(B
+* Incorporating Old Mail::      \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
+* Expiring Mail::               \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
+* Washing Mail::                \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
+* Duplicates::                  \e$B=EJ#$7$?%a!<%k$r07$&\e(B
+* Not Reading Mail::            \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
+                                \e$B%s%I$r;H$&\e(B
+* Choosing a Mail Backend::     Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
 
 Mail Sources
 
-* Mail Source Specifiers::    \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
-* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
-* Fetching Mail::             \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
+* Mail Source Specifiers::      \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
+* Mail Source Customization::   \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
+* Fetching Mail::               \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
 
 Choosing a Mail Backend
 
-* Unix Mail Box::           (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
-* Rmail Babyl::             Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl format \e$B$r;H$&\e(B
-* Mail Spool::              \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
-* MH Spool::                mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
-* Mail Folders::            \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D\e(B
-* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
+* Unix Mail Box::               (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
+* Rmail Babyl::                 Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl \e$B%U%)!<\e(B
+                                \e$B%^%C%H$r;H$&\e(B
+* Mail Spool::                  \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
+* MH Spool::                    mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
+* Mail Folders::                \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k\e(B
+                                \e$B$r;}$D\e(B
+* Comparing Mail Backends::     \e$BF@<:$N?<$$F6;!\e(B
 
 Browsing the Web
 
-* Web Searches::   \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
-* Slashdot::       Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
-* Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
-* Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
-* Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
-* RSS::            RDF Site Summary \e$B$rFI$`\e(B
-* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
+* Web Searches::                \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
+* Slashdot::                    Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
+* Ultimate::                    Ultimate Bulletin Board \e$B%7%9%F%`\e(B
+* Web Archive::                 \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
+* Web Newspaper::               \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::                         RDF Site Summary \e$B$rFI$`\e(B
+* Customizing w3::              Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 
 Other Sources
 
-* Directory Groups::      \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`\e(B
-* Anything Groups::       Dired?  \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
-* Document Groups::       \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
-* SOUP::                  @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B''\e$B$GFI$`\e(B
-* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v\e(B
-                          \e$B$rEj9F$9$k\e(B
-* IMAP::                  Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
+* Directory Groups::            \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B
+                                \e$BFI$`\e(B
+* Anything Groups::             Dired?  \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
+* Document Groups::             \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
+* SOUP::                        @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$GFI$`\e(B
+* Mail-To-News Gateways::       \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7\e(B
+                                \e$B$F5-;v$rEj9F$9$k\e(B
+* IMAP::                        Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
 
 Document Groups
 
-* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
+* Document Server Internals::   \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
 
 SOUP
 
-* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
-* SOUP Groups::   @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
-* SOUP Replies::  @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!\e(B
+* SOUP Commands::               @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
+* SOUP Groups::                 @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
+* SOUP Replies::                @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;\e(B
+                                \e$B$kJ}K!\e(B
 
 IMAP
 
-* Splitting in IMAP::   nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
-* Editing IMAP ACLs::   \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B/\e$B5v2D$9$k\e(B
-* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
+* Splitting in IMAP::           nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
+* Editing IMAP ACLs::           \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B
+                                /\e$B5v2D$9$k\e(B
+* Expunging mailboxes::         "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
 
 Combined Groups
 
-* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
-* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
+* Virtual Groups::              \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
+* Kibozed Groups::              \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
 
 Gnus Unplugged
 
-* Agent Basics::      \e$B$3$l$i$O$I$&F0$/$N$+\e(B
-* Agent Categories::  \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s%H$K65$($kJ}K!\e(B
-* Agent Commands::    \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
-* Agent Expiry::      \e$B8E$$5-;v$r>C$9J}K!\e(B
-* Agent and IMAP::    \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
-* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
-* Agent Variables::   \e$B%+%9%?%^%$%:$O3Z$7\e(B
-* Example Setup::     \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
-* Batching Agents::   @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
-* Agent Caveats::     \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k$3$H\e(B
-* Control Agents::    Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
+* Agent Basics::                \e$B$3$l$i$O$I$&F0$/$N$+\e(B
+* Agent Categories::            \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
+                                \e$B%H$K65$($kJ}K!\e(B
+* Agent Commands::              \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent Expiry::                \e$B8E$$5-;v$r>C$9J}K!\e(B
+* Agent and IMAP::              \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
+* Outgoing Messages::           \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
+* Agent Variables::             \e$B%+%9%?%^%$%:$O3Z$7\e(B
+* Example Setup::               \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
+* Batching Agents::             @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
+* Agent Caveats::               \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k\e(B
+                                \e$B$3$H\e(B
+* Control Agents::              Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
 
 Agent Categories
 
-* Category Syntax::    \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* Category Buffer::    \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax::             \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer::             \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables::          \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
 
 Agent Commands
 
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 
 Scoring
 
-* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k\e(B
-* Group Score Commands::   \e$B0lHLE*$J%9%3%"L?Na\e(B
-* Score Variables::        \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
-                           (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
-* Score File Format::      \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
-* Score File Editing::     \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
-* Adaptive Scoring::       \e$BBg;P\e(B gnus \e$B$O$"$J$?$,2?$rFI$s$@$+CN$C$F$$$k\e(B
-* Home Score File::        \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&$K;X\e(B
-                           \e$BDj$9$k$+\e(B
-* Followups To Yourself::  \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+$;$k\e(B
-* Scoring Tips::           \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
-* Reverse Scoring::        \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J$$\e(B
-* Global Score Files::     \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
-* Kill Files::             \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$k\e(B
-* Converting Kill Files::  \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
-* GroupLens::              \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
-* Advanced Scoring::       \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
-* Score Decays::           \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k\e(B
+* Summary Score Commands::      \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9\e(B
+                                \e$B$k\e(B
+* Group Score Commands::        \e$B0lHLE*$J%9%3%"L?Na\e(B
+* Score Variables::             \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
+                                (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
+* Score File Format::           \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
+* Score File Editing::          \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
+* Adaptive Scoring::            \e$BBg;P\e(B (Big Sister) Gnus \e$B$O$"$J$?$,2?$rFI\e(B
+                                \e$B$s$@$+CN$C$F$$$k\e(B
+* Home Score File::             \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&\e(B
+                                \e$B$K;XDj$9$k$+\e(B
+* Followups To Yourself::       \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+\e(B
+                                \e$B$;$k\e(B
+* Scoring On Other Headers::    \e$BI8=`$G$O$J$$%X%C%@!<$G%9%3%"$rIU$1$k\e(B
+* Scoring Tips::                \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
+* Reverse Scoring::             \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J\e(B
+                                \e$B$$\e(B
+* Global Score Files::          \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
+* Kill Files::                  \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v\e(B
+                                \e$B$,$G$-$k\e(B
+* Converting Kill Files::       \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
+* GroupLens::                   \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
+* Advanced Scoring::            \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
+* Score Decays::                \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"\e(B
+                                \e$B$k\e(B
 
 GroupLens
 
-* Using GroupLens::        \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k$h$&$K\e(B
-                           \e$B$9$k$+\e(B
-* Rating Articles::        GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN\e(B
-                           \e$B$i$;$k\e(B
-* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k\e(B
-* GroupLens Variables::    GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
+* Using GroupLens::             \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k\e(B
+                                \e$B$h$&$K$9$k$+\e(B
+* Rating Articles::             GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k\e(B
+                                \e$B$+$rCN$i$;$k\e(B
+* Displaying Predictions::      GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9\e(B
+                                \e$B$k\e(B
+* GroupLens Variables::         GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
 
 Advanced Scoring
 
-* Advanced Scoring Syntax::   \e$BDj5A\e(B
-* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
-* Advanced Scoring Tips::     \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
+* Advanced Scoring Syntax::     \e$BDj5A\e(B
+* Advanced Scoring Examples::   \e$B$I$N$h$&$K8+$($k$+\e(B
+* Advanced Scoring Tips::       \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
 
 Various
 
-* Process/Prefix::         \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
-* Interactive::            Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
-* Symbolic Prefixes::      \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
-* Formatting Variables::   \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
-                           \e$B$,$G$-$k\e(B
-* Window Layout::          Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
-* Faces and Fonts::        \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
-* Compilation::            \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
-* Mode Lines::             \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
-* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
-* Buttons::                \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
-* Daemons::                Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G$-$k\e(B
-* NoCeM::                  Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
-* Undo::                   \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
-* Moderation::             \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
-* XEmacs Enhancements::    XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k\e(B
-* Fuzzy Matching::         \e$BBg$-$JLJLS$C$F2?\e(B?
-* Thwarting Email Spam::   \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
-* Various Various::        \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
+* Process/Prefix::              \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
+* Interactive::                 Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
+* Symbolic Prefixes::           \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$k\e(B
+                                \e$BJ}K!\e(B
+* Formatting Variables::        \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9\e(B
+                                \e$B$k;v$,$G$-$k\e(B
+* Window Layout::               Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Faces and Fonts::             \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
+* Compilation::                 \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
+* Mode Lines::                  \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
+* Highlighting and Menus::      \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
+* Buttons::                     \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
+* Daemons::                     Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G\e(B
+                                \e$B$-$k\e(B
+* NoCeM::                       Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
+* Undo::                        \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
+* Moderation::                  \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
+* XEmacs Enhancements::         XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_\e(B
+                                \e$B$9$k\e(B
+* Fuzzy Matching::              \e$BBg$-$JLJLS$C$F2?\e(B?
+* Thwarting Email Spam::        \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
+* Various Various::             \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
 
 Formatting Variables
 
-* Formatting Basics::    \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k\e(B
-* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'\e(B
-* Advanced Formatting::  \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
-* User-Defined Specs::   Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
-* Formatting Fonts::     \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Formatting Basics::           \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"\e(B
+                                \e$B$k\e(B
+* Mode Line Formatting::        \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N\e(B
+                                \e$B5,B'\e(B
+* Advanced Formatting::         \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
+* User-Defined Specs::          Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
+* Formatting Fonts::            \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Positioning Point::           \e$BA`:n$N8e$G%]%$%s%H$r0\F0$9$k\e(B
+* Tabulation::                  \e$BI=$r:n$k\e(B
+* Wide Characters::             \e$BI}$,9-$$J8;z$r07$&\e(B
 
 XEmacs Enhancements
 
-* Picons::   \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
-* Smileys::  \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!\e(B
-* Toolbar::  \e$B%/%j%C%/1n\e(B
-* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
+* Picons::                      \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
+* Smileys::                     \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<(\e(B
+                                \e$B$9$kJ}K!\e(B
+* Toolbar::                     \e$B%/%j%C%/1n\e(B
+* XVarious::                    \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
 
 Picons
 
 * Picon Basics::                picon \e$B$H$O2?$G!"$I$&$d$C$F<j$KF~$l$k$N$+\e(B
-* Picon Requirements::          XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J$$$G\e(B
+* Picon Requirements::          XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J\e(B
+                                \e$B$$$G\e(B
 * Easy Picons::                 picon \e$B$NI=<(\e(B --- \e$B3Z$JJ}K!\e(B
-* Hard Picons::                 \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@$m$&\e(B
-* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j\e(B
-                                \e$BM7$s$@$j$9$kJQ?t\e(B
+* Hard Picons::                 \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@\e(B
+                                \e$B$m$&\e(B
+* Picon Useless Configuration::  \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?\e(B
+                                \e$B$jM7$s$@$j$9$kJQ?t\e(B
 
 Appendices
 
-* History::                    \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
-* On Writing Manuals::         \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
-* Terminology::                \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
-* Customization::              \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
-* Troubleshooting::            \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$;v\e(B
-* Gnus Reference Guide::       \e$B?'!9$J5;=QE*$J$b$N\e(B
-* Emacs for Heathens::         Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
-* Frequently Asked Questions:: \e$B<ALd$HEz\e(B
+* History::                     \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
+* On Writing Manuals::          \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
+* Terminology::                 \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
+* Customization::               \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
+* Troubleshooting::             \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$\e(B
+                                \e$B$3$H\e(B
+* Gnus Reference Guide::        \e$B?'!9$J5;=QE*$J$b$N\e(B
+* Emacs for Heathens::          Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
+* Frequently Asked Questions::  
 
 History
 
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                Gnus \e$B$NL\E*$O2?\e(B?
-* Compatibility::       Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k$N\e(B?
-* Conformity::          Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
-* Emacsen::             Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B9T$G$-$k\e(B
-* Gnus Development::    Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
-* Contributors::        \e$BBgNL$N?M!9\e(B
-* New Features::        Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
+* Gnus Versions::               \e$B$I$s$J%P!<%8%g%s$N\e(B Gnus \e$B$,%j%j!<%9$5$l$F\e(B
+                                \e$B$$$k$+\e(B
+* Other Gnus Versions::         \e$B%j%j!<%9$5$l$F$$$kB>$N%P!<%8%g%s$N\e(B Gnus
+* Why?::                        Gnus \e$B$NL\E*$O2?\e(B?
+* Compatibility::               Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k\e(B
+                                \e$B$N\e(B?
+* Conformity::                  Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
+* Emacsen::                     Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B\e(B
+                                \e$B9T$G$-$k\e(B
+* Gnus Development::            Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
+* Contributors::                \e$BBgNL$N?M!9\e(B
+* New Features::                Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
 
 New Features
 
-* ding Gnus::      \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N?7$7$$;v\e(B
-* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
-* Red Gnus::       \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
-* Quassia Gnus::   2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
-* Pterodactyl Gnus::   \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$F\e(B
-                       \e$BCN$i$l$F$$$k$b$N\e(B
+* ding Gnus::                   \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N\e(B
+                                \e$B?7$7$$;v\e(B
+* September Gnus::              \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b\e(B
+                                \e$B$N\e(B
+* Red Gnus::                    \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
+* Quassia Gnus::                2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
+* Pterodactyl Gnus::            \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8
+                                /5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
 
 Customization
 
-* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"\e(B
-                              \e$BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
-* Slow Terminal Connection::  \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
-* Little Disk Space::         \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
-* Slow Machine::              \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
+* Slow/Expensive Connection::   \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"B>$N$H$3\e(B
+                                \e$B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k\e(B
+* Slow Terminal Connection::    \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
+* Little Disk Space::           \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
+* Slow Machine::                \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
 
 Gnus Reference Guide
 
-* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
-* Backend Interface::      Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
-* Score File Syntax::      \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
-* Headers::                Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+\e(B
-* Ranges::                 \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
-* Group Info::             \e$B%0%k!<%W>pJs7A<0\e(B
-* Extended Interactive::   \e$B5-9f@\F,<-$J$I\e(B
-* Emacs/XEmacs Code::      Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
-* Various File Formats::   Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
+* Gnus Utility Functions::      \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
+* Backend Interface::           Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
+* Score File Syntax::           \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
+* Headers::                     Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<\e(B
+                                \e$B$9$k$+\e(B
+* Ranges::                      \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
+* Group Info::                  \e$B%0%k!<%W>pJs7A<0\e(B
+* Extended Interactive::        \e$B5-9f@\F,<-$J$I\e(B
+* Emacs/XEmacs Code::           Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
+* Various File Formats::        Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
 
 Backend Interface
 
-* Required Backend Functions::     \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
-* Optional Backend Functions::     \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
-* Error Messaging::                \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
-* Writing New Backends::           \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
-* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
-* Mail-like Backends::             \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
+* Required Backend Functions::  \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
+* Optional Backend Functions::  \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
+* Error Messaging::             \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
+* Writing New Backends::        \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
+* Hooking New Backends Into Gnus::  Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
+* Mail-like Backends::          \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
 
 Various File Formats
 
-* Active File Format::     \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
-* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
+* Active File Format::          \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
+* Newsgroups File Format::      \e$B%0%k!<%W$N5-=R\e(B
 
 Emacs for Heathens
 
-* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
-* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
+* Keystrokes::                  \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
+* Emacs Lisp::                  \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
 
 @end detailmenu
 @end menu
@@ -977,18 +1053,22 @@ Emacs for Heathens
 \e$B9`\e(B (@pxref{Terminology}) \e$B$r;2>H$7$F$/$@$5$$!#\e(B
 
 @menu
-* Finding the News::   \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
-* The First Time::     \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
-* The Server is Down:: \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~$l$k$3$H\e(B
-                       \e$B$,$G$-$k$+\e(B
-* Slave Gnusae::       \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,$G$-$k\e(B
-* Fetching a Group::   \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
-* New Groups::         Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
-* Startup Files::      \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B--@file{.newsrc}
-* Auto Save::          \e$B%/%i%C%7%e$+$i$N2sI|\e(B
-* The Active File::    \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+$+$k\e(B
-* Changing Servers::   \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7$l$J$$\e(B
-* Startup Variables::  \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
+* Finding the News::            \e$B%K%e!<%9$r<hF@$9$kJ}K!$rA*$V\e(B
+* The First Time::              \e$B:G=i$K5/F0$7$?$H$-$K\e(B gnus \e$B$O2?$r$9$k$+\e(B
+* The Server is Down::          \e$B$I$&$9$l$P$=$N$h$&$J$H$-$K%a!<%k$r<j$KF~\e(B
+                                \e$B$l$k$3$H$,$G$-$k$+\e(B
+* Slave Gnusae::                \e$BF1;~$K0l$D0J>e$N\e(B gnus \e$B$r:nF0$5$;$k$3$H$,\e(B
+                                \e$B$G$-$k\e(B
+* Fetching a Group::            \e$B%0%k!<%W$rFI$`$?$a$@$1$K\e(B gnus \e$B$r5/F0$9$k\e(B
+* New Groups::                  Gnus \e$B$,?7$7$$%0%k!<%W$KBP$7$F2?$r$9$k$+\e(B
+* Changing Servers::            \e$B$"$k%5!<%P$+$iJL$N%5!<%P$X0\$j$?$$$+$b$7\e(B
+                                \e$B$l$J$$\e(B
+* Startup Files::               \e$B$d$C$+$$$J%9%?!<%H%"%C%W%U%!%$%k\e(B --
+                                @file{.newsrc}
+* Auto Save::                   \e$B%/%i%C%7%e$+$i$N2sI|\e(B
+* The Active File::             \e$BCY$$2s@~$+$i$N%U%!%$%k$N<hF@$K$O;~4V$,$+\e(B
+                                \e$B$+$k\e(B
+* Startup Variables::           \e$BJQ99$7$?$$$H;W$&$+$b$7$l$J$$JQ?t\e(B
 @end menu
 
 @node Finding the News
@@ -1185,9 +1265,10 @@ Gnus \e$B$O!"?.Mj$G$-$k%W%m%0%i%`$N0l$D$H$7$F!"%5!<%P!<$H@\B3$G$-$J$$$H$-$O\e(B
 \e$B$9\e(B (@pxref{Scanning New Messages})\e$B!#\e(B
 
 @menu
-* Checking New Groups::  \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
-* Subscription Methods:: \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-$+\e(B
-* Filtering New Groups:: Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
+* Checking New Groups::         \e$B$I$N%0%k!<%W$,?7$7$$$+$r7hDj$9$k\e(B
+* Subscription Methods::        \e$B?7$7$$%0%k!<%W$KBP$7$F\e(B gnus \e$B$O2?$r$9$Y$-\e(B
+                                \e$B$+\e(B
+* Filtering New Groups::        Gnus \e$B$KFCDj$N?7$7$$%0%k!<%W$rL5;k$5$;$k\e(B
 @end menu
 
 @node Checking New Groups
@@ -1659,32 +1740,37 @@ Gnus \e$B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$K<B9T$5$l$k%U%C%/$G$9!#\e(B
 @end iftex
 
 @menu
-* Group Buffer Format::   \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
-* Group Maneuvering::     \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
-* Selecting a Group::     \e$B<B:]$K%K%e!<%9$rFI$`\e(B
-* Group Data::            \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
-* Subscription Commands:: \e$B9XFI!"9XFICf;_!">C5n\e(B
-* Group Levels::          \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
-* Group Score::           \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
-* Marking Groups::        \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-$^$9\e(B
-* Foreign Groups::        \e$B%0%k!<%W$N:n@.$H=$@5\e(B
-* Group Parameters::      \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l$^$9\e(B
-* Listing Groups::        Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<($G$-$^$9\e(B
-* Sorting Groups::        \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
-* Group Maintenance::     \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
-* Browse Foreign Server:: \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_$h$&\e(B
-* Exiting Gnus::          \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
-* Group Topics::          \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d$9$k\e(B
-* Misc Group Stuff::      \e$BB>$K$G$-$k$3$H\e(B
+* Group Buffer Format::         \e$BI=<($5$l$F$$$k>pJs$HJQ99$NJ}K!\e(B
+* Group Maneuvering::           \e$B%0%k!<%W%P%C%U%!$r0\F0$9$k%3%^%s%I\e(B
+* Selecting a Group::           \e$B<B:]$K%K%e!<%9$rFI$`\e(B
+* Subscription Commands::       \e$B9XFI!"9XFICf;_!">C5n\e(B
+* Group Data::                  \e$B%0%k!<%W$N>pJs$rJQ99$9$k\e(B
+* Group Levels::                \e$B%l%Y%k\e(B? \e$B$=$l$C$F2?\e(B?
+* Group Score::                 \e$B$"$J$?$N9%$-$J%0%k!<%W$r8+$D$1=P$9J}K!\e(B
+* Marking Groups::              \e$B%0%k!<%W$K0u$r$D$1$F$*$$$F!"8e$G=hM}$G$-\e(B
+                                \e$B$^$9\e(B
+* Foreign Groups::              \e$B%0%k!<%W$N:n@.$H=$@5\e(B
+* Group Parameters::            \e$B%0%k!<%WKh$K0c$C$?%Q%i%a!<%?$r;}$?$;$i$l\e(B
+                                \e$B$^$9\e(B
+* Listing Groups::              Gnus \e$B$O%0%k!<%W$r$$$m$$$m$JJ,$1J}$GI=<(\e(B
+                                \e$B$G$-$^$9\e(B
+* Sorting Groups::              \e$B%0%k!<%W$N=gHV$NG[CVBX$(\e(B
+* Group Maintenance::           \e$B$-$l$$$J\e(B @file{.newsrc} \e$B$NJ]$AJ}\e(B
+* Browse Foreign Server::       \e$B%5!<%P$r354Q$G$-$k!#2?$,FI$a$k$N$+8+$F$_\e(B
+                                \e$B$h$&\e(B
+* Exiting Gnus::                \e$B%K%e!<%9FI$`$N$r$d$a$F!";E;v$r$7$h$&\e(B
+* Group Topics::                \e$B%0%k!<%W$r@Z$j:.$<$F!"%H%T%C%/$4$H$KJ,3d\e(B
+                                \e$B$9$k\e(B
+* Misc Group Stuff::            \e$BB>$K$G$-$k$3$H\e(B
 @end menu
 
 @node Group Buffer Format
 @section \e$B%0%k!<%W%P%C%U%!$N7A<0\e(B
 
 @menu
-* Group Line Specification::     \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
-* Group Modeline Specification:: \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
-* Group Highlighting::           \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
+* Group Line Specification::    \e$B%0%k!<%W%P%C%U%!$N8+$(J}$r7h$a$k\e(B
+* Group Modeline Specification::  \e$B%0%k!<%W%P%C%U%!$N%b!<%I9T\e(B
+* Group Highlighting::          \e$B%0%k!<%W%P%C%U%!$K$-$l$$$K?'$r$D$1$k\e(B
 @end menu
 
 @node Group Line Specification
@@ -2631,6 +2717,8 @@ kiboze \e$B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"\e(Bkiboze \e$B%0%k!<%W$K!V4^$
 \e$B$b$7\e(B @kbd{a} \e$B%3%^%s%I$r%a!<%k%0%k!<%W$G<B9T$7$?$H$-!"\e(B@code{to-list} \e$B%0%k!<\e(B
 \e$B%W%Q%i%a!<%?$,$J$1$l$P!"Aw?.;~$K<+F0E*$KIU2C$5$l$^$9!#\e(B
 
+@findex gnus-mailing-list-mode
+@cindex Mail List Groups
 \e$B$b$7$3$N%0%k!<%W%Q%i%a!<%?$,@_Dj$5$l$F$$$k$H!"35N,%P%C%U%!$KF~$C$?$H$-\e(B
 \e$B$K\e(B @code{gnus-mailing-list-mode} \e$B$,M-8z$K$J$j$^$9!#\e(B
 
@@ -2723,6 +2811,28 @@ kiboze \e$B%0%k!<%W$r:n@.$7$^$9!#%W%m%s%W%H$GL>A0$H!"\e(Bkiboze \e$B%0%k!<%W$K!V4^$
 
 @item default
 \e$B=i4|@_Dj$G$NI=<(5-;v$rI=<($7$^$9!#$3$l$ODL>o$OL$FI5-;v$H0uIU$-5-;v$G$9!#\e(B
+
+@item \e$BG[Ns\e(B
+\e$B=R8l$rK~B-$9$k$h$&$K5-;v$rI=<($7$^$9!#\e(B
+
+\e$B$$$/$D$+Nc$r5s$2$^$9\e(B:
+
+@table @code
+@item [unread]
+\e$BL$FI$N5-;v$@$1$rI=<($7$^$9!#\e(B
+
+@item [not expire]
+\e$B4|8B@Z$l>C5n2DG=$J5-;v0J30$N$9$Y$F$rI=<($7$^$9!#\e(B
+
+@item [and (not reply) (not expirable)]
+\e$B4|8B@Z$l>C5n2DG=$H$9$G$KJV?.$7$?5-;v0J30$N$9$Y$F$rI=<($7$^$9!#\e(B
+@end table
+
+\e$BMxMQ$G$-$k1i;;;R$O\e(B @code{not}\e$B!"\e(B@code{and} \e$B$*$h$S\e(B @code{or} \e$B$G$9!#=R8l\e(B
+\e$B$O\e(B @code{tick}\e$B!"\e(B@code{unsend}\e$B!"\e(B@code{undownload}\e$B!"\e(B@code{unread}\e$B!"\e(B
+@code{read}\e$B!"\e(B@code{dormant}\e$B!"\e(B@code{}\e$B!"\e(B@code{}\e$B!"\e(B@code{}\e$B!"\e(B@code{expire}\e$B!"\e(B
+@code{reply}\e$B!"\e(B@code{killed}\e$B!"\e(B@code{bookmark}\e$B!"\e(B@code{score}\e$B!"\e(B@code{save}\e$B!"\e(B
+@code{cache}\e$B!"\e(B@code{forward} \e$B$*$h$S\e(B @code{recent} \e$B$r4^$_$^$9!#\e(B
 @end table
 
 @item comment
@@ -2794,23 +2904,34 @@ form \e$B$N\e(B @code{nil} \e$B$O$=$3$GI>2A$5$l$^$9!#\e(B
 \e$B%9$rDs6!$7$^$9\e(B)\e$B!#%H%T%C%/%Q%i%a!<%?$K$D$$$FFI$s$G$_$k$3$H$bLLGr$$$G$7$g\e(B
 \e$B$&\e(B (@pxref{Topic Parameters})\e$B!#\e(B
 
-\e$B%0%k!<%W%Q%i%a!<%?$O\e(B @code{gnus-parameters} \e$B$K@_Dj$9$k$3$H$b$G$-$^$9!#$G\e(B
-\e$B$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P\e(B @code{visible} \e$B$O8zNO$rH/4x$7$^$;$s!#Nc$G\e(B
-\e$B$9!#\e(B
+\e$B%0%k!<%W%Q%i%a!<%?$O\e(B @code{gnus-parameters} \e$BJQ?t$r2p:_$7$F@_Dj$9$k$3$H$b\e(B
+\e$B$G$-$^$9!#$G$b$$$/$D$+$N%Q%i%a!<%?!"Nc$($P\e(B @code{visible} \e$B$O8zNO$rH/4x$7\e(B
+\e$B$^$;$s!#Nc$G$9!#\e(B
 
 @example
 (setq gnus-parameters
-  '(("mail\\..*"  (gnus-show-threads nil)
-                  (gnus-use-scoring nil)
-                  (gnus-summary-line-format
-                        "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
-                  (gcc-self . t)
-                  (display . all))
-     ("mail\\.me" (gnus-use-scoring  t))
-     ("list\\..*" (total-expire . t)
-                  (broken-reply-to . t)))
+      '(("mail\\..*"
+         (gnus-show-threads nil)
+         (gnus-use-scoring nil)
+         (gnus-summary-line-format
+          "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
+         (gcc-self . t)
+         (display . all))
+
+        ("^nnimap:\\(foo.bar\\)$"
+         (to-group . "\\1"))
+
+        ("mail\\.me"
+         (gnus-use-scoring  t))
+
+        ("list\\..*"
+         (total-expire . t)
+         (broken-reply-to . t))))
 @end example
 
+\e$BJ8;zNs$NCM$O!"\e(B@code{to-group} \e$B$NNc$,<($9$h$&$K!"@55,I=8=$K$h$kCV$-49$($r\e(B
+\e$B<u$1$k$3$H$,$"$j$^$9!#\e(B
+
 @node Listing Groups
 @section \e$B%0%k!<%W$N0lMwI=<(\e(B
 @cindex group listing
@@ -3279,11 +3400,12 @@ Gnus
 @end lisp
 
 @menu
-* Topic Variables::  Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Topic Commands::   \e$BD64JC1BPOC7?L?Na\e(B
-* Topic Sorting::    \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
-* Topic Topology::   \e$BA4@$3&$NCO?^\e(B
-* Topic Parameters:: \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k%Q%i%a!<%?\e(B
+* Topic Variables::             Lisp \e$B$G%H%T%C%/$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Topic Commands::              \e$BD64JC1BPOC7?L?Na\e(B
+* Topic Sorting::               \e$B%H%T%C%/KhJL!9$KJB$YBX$($k\e(B
+* Topic Topology::              \e$BA4@$3&$NCO?^\e(B
+* Topic Parameters::            \e$B$"$k%H%T%C%/$NA4$F$N%0%k!<%W$KE,MQ$5$l$k\e(B
+                                \e$B%Q%i%a!<%?\e(B
 @end menu
 
 @node Topic Variables
@@ -3647,10 +3769,12 @@ Gnus
 @section \e$B$=$NB>$N%0%k!<%W4XO"\e(B
 
 @menu
-* Scanning New Messages:: Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&$+$rJ9$/\e(B
-* Group Information::     \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
-* Group Timestamp::       Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k\e(B
-* File Commands::         Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
+* Scanning New Messages::       Gnus \e$B$K?7$7$$%a%C%;!<%8$,E~Ce$7$?$+$I$&\e(B
+                                \e$B$+$rJ9$/\e(B
+* Group Information::           \e$B%0%k!<%W$H\e(B gnus \e$B$K4X$9$k>pJs$H%X%k%W\e(B
+* Group Timestamp::             Gnus \e$B$K:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-\e(B
+                                \e$BO?$5$;$k\e(B
+* File Commands::               Gnus \e$B$N%U%!%$%k$NFI$_=q$-\e(B
 @end menu
 
 @table @kbd
@@ -3909,37 +4033,46 @@ Gnus \e$B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx$+$b$7$l\e(B
 \e$B35N,%P%C%U%!$OK>$`$@$1$?$/$5$s3+$$$?>uBV$K$7$F$*$/$3$H$,$G$-$^$9!#\e(B
 
 @menu
-* Summary Buffer Format::      \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
-* Summary Maneuvering::        \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
-* Choosing Articles::          \e$B5-;v$rFI$`\e(B
-* Paging the Article::         \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
-* Reply Followup and Post::    \e$B5-;v$rEj9F$9$k\e(B
-* Marking Articles::           \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1$k\e(B
-* Limiting::                   \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
-* Threading::                  \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
-* Sorting the Summary Buffer:: \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k$+\e(B
-* Asynchronous Fetching::      Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
-* Article Caching::            \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
-* Persistent Articles::        \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
-* Article Backlog::            \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
-* Saving Articles::            \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
-* Decoding Articles::          Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07$($k\e(B
-* Article Treatment::          \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G$-$k\e(B
-@c * MIME Commands::              Doing MIMEy things with the articles.
-@c * Charsets::                   Character set issues.
-* Article Commands::           \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
-* Summary Sorting::            \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
-* Finding the Parent::         \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J$5$$\e(B
-* Alternative Approaches::     \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
-* Tree Display::               \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
-* Mail Group Commands::        \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
-                               \e$B$3$H$,$G$-$k\e(B
-* Various Summary Stuff::      \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
-* Exiting the Summary Buffer:: \e$B%0%k!<%W%P%C%U%!$KLa$k\e(B
-* Crosspost Handling::         \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l$k$+\e(B
-* Duplicate Suppression::      \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<jCJ\e(B
+* Summary Buffer Format::       \e$B35N,%P%C%U%!$N304Q$r7hDj$9$k\e(B
+* Summary Maneuvering::         \e$B35N,%P%C%U%!$rF0$-2s$k\e(B
+* Choosing Articles::           \e$B5-;v$rFI$`\e(B
+* Paging the Article::          \e$BFI$s$G$$$k5-;v$r%9%/%m!<%k$9$k\e(B
+* Reply Followup and Post::     \e$B5-;v$rEj9F$9$k\e(B
+* Delayed Articles::            
+* Marking Articles::            \e$B5-;v$K4{FI$d4|8B@Z$l:o=|2DG=Ey$N0u$rIU$1\e(B
+                                \e$B$k\e(B
+* Limiting::                    \e$B35N,%P%C%U%!$K@)8B$r2C$($k$3$H$,$G$-$k\e(B
+* Threading::                   \e$B%9%l%C%I$,$I$N$h$&$K:n$i$l$k$+\e(B
+* Sorting the Summary Buffer::  \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($i$l$k\e(B
+                                \e$B$+\e(B
+* Asynchronous Fetching::       Gnus \e$B$O5-;v$r@h$K<hF@$9$k$3$H$,$G$-$k\e(B
+* Article Caching::             \e$B%-%c%C%7%e$K5-;v$rCy$a$F$*$1$k\e(B
+* Persistent Articles::         \e$B5-;v$r4|8B@Z$l>C5n$7$J$/$5$;$k\e(B
+* Article Backlog::             \e$B4{$KFI$s$@5-;v$r;D$7$F$*$/\e(B
+* Saving Articles::             \e$B5-;v$NJ]B8$r%+%9%?%^%$%:$9$kJ}K!\e(B
+* Decoding Articles::           Gnus \e$B$O0lO"$N\e(B (uu)encode \e$B$5$l$?5-;v$r07\e(B
+                                \e$B$($k\e(B
+* Article Treatment::           \e$B5-;v%P%C%U%!$O$*K>$_$I$*$j$KL\Cc6lCc$K$G\e(B
+                                \e$B$-$k\e(B
+@c * MIME Commands::               Doing MIMEy things with the articles.
+@c * Charsets::                    Character set issues.
+* Article Commands::            \e$B5-;v%P%C%U%!$G$$$m$$$m$J$3$H$r$9$k\e(B
+* Summary Sorting::             \e$B$$$m$$$m$JJ}K!$G35N,%P%C%U%!$rJB$YBX$($k\e(B
+* Finding the Parent::          \e$B;R5-;v$K1g=u$,L5$$$C$F\e(B? \e$B?F5-;v$r<hF@$7$J\e(B
+                                \e$B$5$$\e(B
+* Alternative Approaches::      \e$B=i4|@_Dj$G$J$$35N,$r;H$C$FFI$`\e(B
+* Tree Display::                \e$B$b$C$H;k3PE*$J%9%l%C%I$NI=<(\e(B
+* Mail Group Commands::         \e$B$$$/$D$+$NL?Na$O%a!<%k%0%k!<%W$@$1$G;H$&\e(B
+                                \e$B$3$H$,$G$-$k\e(B
+* Various Summary Stuff::       \e$BB>$N$I$N>l=j$K$b9g$o$J$+$C$?$b$N\e(B
+* Exiting the Summary Buffer::  \e$B%0%k!<%W%P%C%U%!$KLa$k!"\e(B
+                                \e$B$^$?$O8=:_$N%0%k!<%W$r:F$SA*Br$9$k\e(B
+* Crosspost Handling::          \e$B%/%m%9%]%9%H$5$l$?5-;v$,$I$N$h$&$K07$o$l\e(B
+                                \e$B$k$+\e(B
+* Duplicate Suppression::       \e$B%/%m%9%]%9%H$N07$$$K<:GT$7$?$H$-$NBeBX<j\e(B
+                                \e$BCJ\e(B
 @c * Security::                    Decrypt and Verify.
-* Mailing List::               \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
+* Mailing List::                \e$B%a!<%j%s%0%j%9%H%^%$%J!<%b!<%I\e(B
 @end menu
 
 @node Summary Buffer Format
@@ -3956,10 +4089,11 @@ Gnus \e$B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx$+$b$7$l\e(B
 @end iftex
 
 @menu
-* Summary Buffer Lines::     \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$G$-$k\e(B
-* To From Newsgroups::       \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
-* Summary Buffer Mode Line:: \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
-* Summary Highlighting::     \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
+* Summary Buffer Lines::        \e$B35N,%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;X\e(B
+                                \e$BDj$G$-$k\e(B
+* To From Newsgroups::          \e$B<+J,<+?H$NL>A0$rI=<($7$J$$J}K!\e(B
+* Summary Buffer Mode Line::    \e$B%b!<%I9T$N8+$(J}$r7h$a$i$l$k\e(B
+* Summary Highlighting::        \e$B35N,%P%C%U%!$r$-$l$$$GAGE($K$9$k\e(B
 @end menu
 
 @findex std11-extract-address-components
@@ -3995,12 +4129,13 @@ Gnus \e$B$OJQ?t\e(B @code{gnus-extract-address-components} \e$B$NCM$r\e(B @code{From
 \e$BD%\e(B (@pxref{Formatting Variables}) \e$B$r=|$$$F!"IaDL$N\e(B @code{format} \e$BJ8;zNs\e(B
 \e$B$HF1$8$h$&$KF0:n$7$^$9!#\e(B
 
-\e$B9T$K$O>o$K%3%m%s$,B8:_$7$F$$$J$1$l$P$J$j$^$;$s!#A`:n$7$?8e$K!"%+!<%=%k$O\e(B
-\e$B$$$D$b%3%m%s$N>l=j$K0\F0$7$^$9!#\e(B(\e$B$b$A$m$s!"$3$NF0:n$rJQ$($k$3$H$,$G$-$J\e(B
-\e$B$$$H$7$?$i\e(B Gnus \e$B$K$O$"$k$^$8$-$3$H$G$9!#4X?t\e(B @code{gnus-goto-colon} \e$B$r!"\e(B
-\e$B$"$J$?$,9%$-$J%+!<%=%k$NF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B)
+\e$B9T$K$O>o$K%3%m%s$+%]%$%s%H0LCV$N%^!<%+!<$,B8:_$7$F$$$J$1$l$P$J$j$^$;$s!#\e(B
+\e$BA`:n$7$?8e$K!"%+!<%=%k$O$$$D$b%3%m%s$+%]%$%s%H0LCV$N%^!<%+!<$N>l=j$K0\F0\e(B
+\e$B$7$^$9!#\e(B(\e$B$b$A$m$s!"$3$NF0:n$rJQ$($k$3$H$,$G$-$J$$$H$7$?$i\e(B Gnus \e$B$K$O$"$k\e(B
+\e$B$^$8$-$3$H$G$9!#4X?t\e(B @code{gnus-goto-colon} \e$B$r!"$"$J$?$,9%$-$J%+!<%=%k$N\e(B
+\e$BF0$-$K$J$k$h$&$K!"?7$?$K=q$1$PNI$$$N$G$9!#\e(B)
 
-\e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n} \e$B$G$9!#\e(B
+\e$B=i4|CM$NJ8;zNs$O\e(B @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n} \e$B$G$9!#\e(B
 
 \e$B0J2<$NMM<0;X<(J8;z$r;H$&$3$H$,$G$-$^$9\e(B:
 
@@ -4171,7 +4306,7 @@ gnus \e$B$K!"\e(B@code{gnus-summary-line-format} \e$BJQ?t$N\e(B @code{%n} \e$B;EMM\e(B
       '(To Newsgroups))
 (setq nnmail-extra-headers gnus-extra-headers)
 (setq gnus-summary-line-format
-      "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+      "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
 (setq gnus-ignored-from-addresses
       "Your Name Here")
 @end lisp
@@ -4352,8 +4487,8 @@ Gnus \e$B$,<!$N%0%k!<%W$K0\F0$9$k$3$H$r3NG'$r$9$k$?$a$K!"%-!<$r2!$9$3$H$rMW\e(B
 @cindex selecting articles
 
 @menu
-* Choosing Commands::  \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
-* Choosing Variables:: \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
+* Choosing Commands::           \e$B5-;v$rA*Br$9$k$?$a$NL?Na\e(B
+* Choosing Variables::          \e$B$3$l$i$NL?Na$K1F6A$r5Z$\$9JQ?t\e(B
 @end menu
 
 @node Choosing Commands
@@ -4565,10 +4700,10 @@ Summary Buffer} \e$B$r;2>H$7$F2<$5$$!#\e(B
 @section \e$BJVEz!"%U%)%m!<%"%C%W!"Ej9F\e(B
 
 @menu
-* Summary Mail Commands::     \e$B%a!<%k$rAw$k\e(B
-* Summary Post Commands::     \e$B%K%e!<%9$rAw$k\e(B
-* Summary Message Commands::  \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
-* Canceling and Superseding:: \e$B!X$"$!!"$"$s$J$U$&$K8@$&$s$8$c$J$+$C$?!Y\e(B
+* Summary Mail Commands::       \e$B%a!<%k$rAw$k\e(B
+* Summary Post Commands::       \e$B%K%e!<%9$rAw$k\e(B
+* Summary Message Commands::    \e$BB>$N%a%C%;!<%84XO"$NL?Na\e(B
+* Canceling and Superseding::   
 @end menu
 
 @node Summary Mail Commands
@@ -4847,6 +4982,104 @@ Gnus \e$B$O!"<h$j>C$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H\e(B
 \e$B$A$g$C$H3P$($F$*$$$F$/$@$5$$\e(B: 'supersede' (\e$BBeBX\e(B) \e$B$H$$$&8l$NCf$K\e(B 'c' \e$B$OL5\e(B
 \e$B$$$H$$$&$3$H$r!#\e(B
 
+@c TRANSLATEME
+@node Delayed Articles
+@section Delayed Articles
+@cindex delayed sending
+@cindex send delayed
+
+Sometimes, you might wish to delay the sending of a message.  For
+example, you might wish to arrange for a message to turn up just in time
+to remind your about the birthday of your Significant Other.  For this,
+there is the @code{gnus-delay} package.  Setup is simple:
+
+@lisp
+(gnus-delay-initialize)
+@end lisp
+
+@findex gnus-delay-article
+Normally, to send a message you use the @kbd{C-c C-c} command from
+Message mode.  To delay a message, use @kbd{C-c C-j}
+(@code{gnus-delay-article}) instead.  This will ask you for how long the
+message should be delayed.  Possible answers are:
+
+@itemize
+@item
+A time span.  Consists of an integer and a letter.  For example,
+@code{42d} means to delay for 42 days.  Available letters are @code{m}
+(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
+(months) and @code{Y} (years).
+
+@item
+A specific date.  Looks like @code{YYYYY-MM-DD}.  The message will be
+delayed until that day, at a specific time (eight o'clock by default).
+See also @code{gnus-delay-default-hour}.
+
+@item
+A specific time of day.  Given in @code{hh:mm} format, 24h, no am/pm
+stuff.  The deadline will be at that time today, except if that time has
+already passed, then it's at the given time tomorrow.  So if it's ten
+o'clock in the morning and you specify @code{11:15}, then the deadline
+is one hour and fifteen minutes hence.  But if you specify @code{9:20},
+that means a time tomorrow.
+@end itemize
+
+The action of the @code{gnus-delay-article} command is influenced by a
+couple of variables:
+
+@table @code
+@item gnus-delay-default-hour
+@vindex gnus-delay-default-hour
+When you specify a specific date, the message will be due on that hour
+on the given date.  Possible values are integers 0 through 23.
+
+@item gnus-delay-default-delay
+@vindex gnus-delay-default-delay
+This is a string and gives the default delay.  It can be of any of the
+formats described above.
+
+@item gnus-delay-group
+@vindex gnus-delay-group
+Delayed articles will be kept in this group on the drafts server until
+they are due.  You probably don't need to change this.  The default
+value is @code{"delayed"}.
+
+@item gnus-delay-header
+@vindex gnus-delay-header
+The deadline for each article will be stored in a header.  This variable
+is a string and gives the header name.  You probably don't need to
+change this.  The default value is @code{"X-Gnus-Delayed"}.
+@end table
+
+The way delaying works is like this: when you use the
+@code{gnus-delay-article} command, you give a certain delay.  Gnus
+calculates the deadline of the message and stores it in the
+@code{X-Gnus-Delayed} header and puts the message in the
+@code{nndraft:delayed} group.
+
+And whenever you get new news, Gnus looks through the group for articles
+which are due and sends them.  It uses the @code{gnus-delay-send-drafts}
+function for this.  By default, this function is added to the hook
+@code{gnus-get-new-news-hook}.  But of course, you can change this.
+Maybe you want to use the demon to send drafts?  Just tell the demon to
+execute the @code{gnus-delay-send-drafts} function.
+
+@table @code
+@item gnus-delay-initialize
+@findex gnus-delay-initialize
+By default, this function installs the @kbd{C-c C-j} key binding in
+Message mode and @code{gnus-delay-send-drafts} in
+@code{gnus-get-new-news-hook}.  But it accepts two optional arguments,
+@code{no-keymap} and @code{no-check}.  If @code{no-keymap} is non-nil,
+the @kbd{C-c C-j} binding is not intalled.  If @code{no-check} is
+non-nil, @code{gnus-get-new-news-hook} is not changed.
+
+For example, @code{(gnus-delay-initialize nil t)} means to change the
+keymap but not to change @code{gnus-get-new-news-hook}.  Presumably, you
+want to use the demon for sending due delayed articles.  Just don't
+forget to set that up :-)
+@end table
+
 @node Marking Articles
 @section \e$B5-;v$K0u$rIU$1$k\e(B
 @cindex article marking
@@ -4862,9 +5095,9 @@ Gnus \e$B$O!"<h$j>C$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H\e(B
 \e$B2C$($F!"9XFIEY$K1F6A$7$J$$0u$b$"$j$^$9!#\e(B
 
 @menu
-* Unread Articles:: \e$BL$FI5-;v$X$N0u\e(B
-* Read Articles::   \e$B4{FI5-;v$X$N0u\e(B
-* Other Marks::     \e$B9XFIEY$K1F6A$7$J$$0u\e(B
+* Unread Articles::             \e$BL$FI5-;v$X$N0u\e(B
+* Read Articles::               \e$B4{FI5-;v$X$N0u\e(B
+* Other Marks::                 \e$B9XFIEY$K1F6A$7$J$$0u\e(B
 @end menu
 
 @ifinfo
@@ -4872,9 +5105,9 @@ Gnus \e$B$O!"<h$j>C$9$H$-$K!X8=:_!Y$NA*BrJ}K!$r;H$$$^$9!#I8=`$NEj9FJ}K!$r;H\e(B
 @end ifinfo
 
 @menu
-* Setting Marks::         \e$B0u$NIU$1J}$H>C$7J}\e(B
-* Generic Mark Commands:: \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
-* Setting Process Marks:: \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
+* Setting Marks::               \e$B0u$NIU$1J}$H>C$7J}\e(B
+* Generic Mark Commands::       \e$B0u$r$I$N$h$&$K%+%9%?%^%$%:$9$k$+\e(B
+* Setting Process Marks::       \e$B8e$N<B9T$N$?$a$N5-;v$N0u$NIU$1J}\e(B
 @end menu
 
 @node Unread Articles
@@ -5009,7 +5242,7 @@ gnus \e$B<+BN$O2D;k5-;v$r4|8B@Z$l>C5n$7$^$;$s\e(B) \e$B$N$G!"1J1s$K5-;v$rJ]B8$7$F$*
 \e$B$K\e(B @samp{A} \e$B$N0u$,$D$-$^$9\e(B (@code{gnus-replied-mark})\e$B!#\e(B
 
 @vindex gnus-forwarded-mark
-\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{O} \e$B$N0u$,$D$-$^\e(B
+\e$BE>Aw$7$?5-;v$O$9$Y$FFs7eL\$K\e(B @samp{F} \e$B$N0u$,$D$-$^\e(B
 \e$B$9\e(B (@code{gnus-forwarded-mark})\e$B!#\e(B
 
 @vindex gnus-recent-mark
@@ -5028,6 +5261,11 @@ gnus \e$B<+BN$O2D;k5-;v$r4|8B@Z$l>C5n$7$^$;$s\e(B) \e$B$N$G!"1J1s$K5-;v$rJ]B8$7$F$*
 \e$B5-;v$OFs7eL\$K\e(B @samp{S} \e$B$N0u$,$D$-$^$9\e(B (@code{gnus-saved-mark})\e$B!#\e(B
 
 @item
+@vindex gnus-unseen-mark
+\e$B$^$@FI$^$l$?$3$H$,$J$$5-;v$OFs7eL\$K\e(B @samp{.} \e$B$N0u$,$D$-$^\e(B
+\e$B$9\e(B (@code{gnus-unseen-mark})\e$B!#\e(B
+
+@item
 @vindex gnus-not-empty-thread-mark
 @vindex gnus-empty-thread-mark
 \e$B$b$7\e(B @samp{%e} \e$B$N;EMM$,;H$o$l$k$H!"%9%l%C%I$,$"$k$+$I$&$+$O!";07eL\\e(B
@@ -5504,8 +5742,8 @@ Gnus \e$B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#\e(B@dfn{\e$B%9%l%C%I$K$9$k\e(B} \e$B$H$
 @end table
 
 @menu
-* Customizing Threading:: \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
-* Thread Commands::       \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
+* Customizing Threading::       \e$BJQ992DG=$J%9%l%C%I$K1F6A$9$kJQ?t\e(B
+* Thread Commands::             \e$B35N,%P%C%U%!$G$N%9%l%C%I$K4p$E$$$?L?Na\e(B
 @end menu
 
 @node Customizing Threading
@@ -5513,11 +5751,12 @@ Gnus \e$B$O=i4|@_Dj$G5-;v$r%9%l%C%I$K$7$^$9!#\e(B@dfn{\e$B%9%l%C%I$K$9$k\e(B} \e$B$H$
 @cindex customizing threading
 
 @menu
-* Loose Threads::       Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C%I$K$9$kJ}K!\e(B
-* Filling In Threads::  \e$B%9%l%C%I$rKd$a$k\e(B
-* More Threading::      \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
-* Low-Level Threading:: \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"$J$?$O4V\e(B
-                        \e$B0c$C$F$$$?\e(B!
+* Loose Threads::               Gnus \e$B$,L5B+G{%9%l%C%I$r=8$a$FBg$-$J%9%l%C\e(B
+                                \e$B%I$K$9$kJ}K!\e(B
+* Filling In Threads::          \e$B%9%l%C%I$rKd$a$k\e(B
+* More Threading::              \e$B%9%l%C%I$r$$$8$/$k$5$i$KB?$/$NJQ?t\e(B
+* Low-Level Threading::         \e$B$3$l$G=*$o$C$?$H;W$C$?$G$7$g$&\e(B... \e$B$G$b$"\e(B
+                                \e$B$J$?$O4V0c$C$F$$$?\e(B!
 @end menu
 
 @node Loose Threads
@@ -6524,12 +6763,12 @@ gnus \e$B$,J]B8$9$k5-;v$N\e(B @code{Archive-name} \e$B9T$rD4$Y$F!"$=$l$r%U%!%$%kL>$
 \e$B$^$9!#\e(BGnus \e$B$O$"$J$?$N$?$a$K$=$l$i$rI|9f2=$9$k;v$,$G$-$^$9!#\e(B
 
 @menu
-* Uuencoded Articles:: \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
-* Shell Archives::     shar \e$B5-;v$r2rE`$9$k\e(B
-* PostScript Files::   \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
-* Other Files::        \e$BIaDL$NJ]B8$H\e(B binhex.
-* Decoding Variables:: \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
-* Viewing Files::      \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
+* Uuencoded Articles::          \e$B5-;v$r\e(B uuencode \e$B$9$k\e(B
+* Shell Archives::              shar \e$B5-;v$r2rE`$9$k\e(B
+* PostScript Files::            \e$B%]%9%H%9%/%j%W%H$rJ,3d$9$k\e(B
+* Other Files::                 \e$BIaDL$NJ]B8$H\e(B binhex.
+* Decoding Variables::          \e$B9,$;$JI|9f2=$N$?$a$NJQ?t\e(B
+* Viewing Files::               \e$BI|9f2=$N7k2L$r8+$?$$\e(B?
 @end menu
 
 @cindex series
@@ -6683,9 +6922,10 @@ Gnus \e$B$O0J2<$N4JC1$J5,B'$KB'$C$F$I$N5-;v$,72$KB0$9$k$N$+$r?dB,$7$^$9\e(B: \e$BI=
 \e$B7AMF;l$G$9!#F0;l$G$O$"$j$^$;$s!#\e(B
 
 @menu
-* Rule Variables::         \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$kJQ?t\e(B
-* Other Decode Variables:: \e$BB>$NI|9f2=$NJQ?t\e(B
-* Uuencoding and Posting:: uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
+* Rule Variables::              \e$B%U%!%$%k$,$I$N$h$&$KI=<($5$l$k$+$r7h$a$k\e(B
+                                \e$BJQ?t\e(B
+* Other Decode Variables::      \e$BB>$NI|9f2=$NJQ?t\e(B
+* Uuencoding and Posting::      uuencode \e$B$9$k$N$r%+%9%?%^%$%:$9$kJQ?t\e(B
 @end menu
 
 @node Rule Variables
@@ -6910,14 +7150,17 @@ Gnus \e$B$O%U%!%$%k$r1\Mw$9$k$N$r7hDj$9$k$N$K\e(B@dfn{\e$B5,B'JQ?t\e(B}\e$B$rMQ$$$^$9
 \e$B$9$/$9$k$?$a$N4X?t$HJQ?t$,;3$N$h$&$K$"$j$^$9!#\e(B
 
 @menu
-* Article Highlighting:: \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?$$\e(B
-* Article Fontisizing::  \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
-* Article Hiding::       \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
-* Article Washing::      \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?4X?t\e(B
-* Article Buttons::      URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C%/$9$k\e(B
-* Article Date::         \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
-* Article Signature::    \e$B=pL>$C$F2?\e(B?
-* Article Miscellania:: \e$BB>$N$$$m$$$m$J$b$N\e(B
+* Article Highlighting::        \e$B5-;v$r2LJ*%5%i%@$N$h$&$K8+$($k$h$&$K$7$?\e(B
+                                \e$B$$\e(B
+* Article Fontisizing::         \e$B6/D4$5$l$?J8$rAGE($K$9$k\e(B
+* Article Hiding::              \e$BFCDj$N>pJs$O>C$75n$j$?$$$H$b;W$&\e(B
+* Article Washing::             \e$B?M@8$r$b$C$H$h$/$9$k$?$/$5$s$N5$$NMx$$$?\e(B
+                                \e$B4X?t\e(B
+* Article Buttons::             URL \e$B$d\e(B Message-ID \e$B$d\e(B \e$B%"%I%l%9$J$I$r%/%j%C\e(B
+                                \e$B%/$9$k\e(B
+* Article Date::                \e$B$0$:$0$:8@$&$J!"@$3&;~$@\e(B!
+* Article Signature::           \e$B=pL>$C$F2?\e(B?
+* Article Miscellania::         \e$BB>$N$$$m$$$m$J$b$N\e(B
 @end menu
 
 @node Article Highlighting
@@ -7899,8 +8142,8 @@ gnus \e$B$G%a!<%k$rFI$`$3$H$NM-Mx$JE@$O!"C1=c$J%P%0$rAG@2$i$7$$IT>rM}$KCV$-\e(B
 \e$B>/$7$NA*Br;h$rM?$($F$"$j$^$9!#\e(B
 
 @menu
-* Pick and Read:: \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
-* Binary Groups:: \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
+* Pick and Read::               \e$B$^$:!"5-;v$K0u$rIU$1$F!"$=$l$+$iFI$`\e(B
+* Binary Groups::               \e$B$9$Y$F$N5-;v$r<+F0\e(B-\e$BI|9f2=$9$k\e(B
 @end menu
 
 @node Pick and Read
@@ -8278,10 +8521,10 @@ Line Formatting})\e$B!#%G%#%U%)%k%H$O\e(B @samp{Gnus: %%b %S %Z} \e$B$G$9!#;HMQ2DG=
 @section \e$B$$$m$$$m$J35N,$NJ*7o\e(B
 
 @menu
-* Summary Group Information::       \e$B>pJs;X8~$NL?Na\e(B
-* Searching for Articles::          \e$BJ#?t5-;vL?Na\e(B
-* Summary Generation Commands::     \e$B35N,%P%C%U%!$N\e(B (\e$B:F\e(B) \e$B:n@.\e(B
-* Really Various Summary Commands:: \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
+* Summary Group Information::   \e$B>pJs;X8~$NL?Na\e(B
+* Searching for Articles::      \e$BJ#?t5-;vL?Na\e(B
+* Summary Generation Commands:: 
+* Really Various Summary Commands::  \e$B$"$N$d$C$+$$$JB>$KE,9g$7$J$$L?Na\e(B
 @end menu
 
 @table @code
@@ -8800,11 +9043,11 @@ List-Archive \e$B%U%#!<%k%I$,$"$C$?$i!"%a!<%j%s%0%j%9%H$N%"!<%+%$%V$r1\Mw$7\e(B
 \e$B$O\e(B (gnus \e$B$K6&M-$7$J$$$h$&$K;X<($7$J$$8B$j\e(B) \e$BF1$85-;v%P%C%U%!$r6&M-$7$^$9!#\e(B
 
 @menu
-* Hiding Headers::       \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
-* Using MIME::           @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
-* Customizing Articles:: \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
-* Article Keymap::       \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
-* Misc Article::         \e$B$=$NB>\e(B
+* Hiding Headers::              \e$B$I$N%X%C%@!<$rI=<($9$k$+$r7h$a$k\e(B
+* Using MIME::                  @sc{mime} \e$B5-;v$H$7$F8+$;$k\e(B
+* Customizing Articles::        \e$B5-;v$N8+1I$($r;EN)$F$k\e(B
+* Article Keymap::              \e$B5-;v%P%C%U%!$G;H$($k%-!<A`:n\e(B
+* Misc Article::                \e$B$=$NB>\e(B
 @end menu
 
 @node Hiding Headers
@@ -9229,14 +9472,17 @@ GNUS \e$B$d\e(B Gnus \e$B$G$O!"$3$N$?$A$N0-$$LdBj$G6C$+$5$l$J$$$h$&$K$9$k$K$O!"35N,
 \e$B4p$E$$$FAw?.$5$l$^$9\e(B (@pxref{Posting Server})\e$B!#\e(B
 
 @menu
-* Mail::              \e$B%a!<%k$HJVEz\e(B
-* Posting Server::    \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
-* Mail and Post::     \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
-* Archived Messages:: \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3$m\e(B
-* Posting Styles::    \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}K!\e(B
-* Drafts::            \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
-* Rejected Articles:: \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K2?$,5/$3$k\e(B?
-@c * Using GPG::         How to use GPG and MML to sign and encrypt messages
+* Mail::                        \e$B%a!<%k$HJVEz\e(B
+* Posting Server::              \e$B$I$N%5!<%P!<$rDL$7$FEj9F$9$k$Y$-$+\e(B?
+* Mail and Post::               \e$BF1;~$K%a!<%k$r=P$7JVEz$9$k\e(B
+* Archived Messages::           \e$BAw$C$?%a%C%;!<%8$r\e(B gnus \e$B$,Cy$a$F$*$/$H$3\e(B
+                                \e$B$m\e(B
+* Posting Styles::              \e$B$"$J$?$,C/$G$"$k$+$r;XDj$9$k$h$j4JC1$JJ}\e(B
+                                \e$BK!\e(B
+* Drafts::                      \e$B%a%C%;!<%8$N1d4|$H5qH]$5$l$?%a%C%;!<%8\e(B
+* Rejected Articles::           \e$B%5!<%P!<$,$"$J$?$N5-;v$r9%$-$G$J$$$H$-$K\e(B
+                                \e$B2?$,5/$3$k\e(B?
+@c * Using GPG::                   How to use GPG and MML to sign and encrypt messages
 @end menu
 
 \e$BEj9F$9$k$Y$-$G$J$+$C$?5-;v$r:o=|$9$k$?$a$N>pJs$O\e(B @pxref{Canceling and
@@ -9756,13 +10002,15 @@ you've typed it correctly.
 \e$B$b$A$m$s!"0c$C$?J}K!$OA4$F$=$lFCM-$N$b$N$,$"$j$^$9!#\e(B
 
 @menu
-* Server Buffer::    \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
-* Getting News::     USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
-* Getting Mail::     \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
-* Browsing the Web:: \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9$k\e(B
-* Other Sources::    \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H$rFI$`\e(B
-* Combined Groups::  \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
-* Gnus Unplugged::   \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
+* Server Buffer::               \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\e(B
+* Getting News::                USENET \e$B%K%e!<%9$r\e(B gnus \e$B$GFI$`\e(B
+* Getting Mail::                \e$B8D?ME*$J%a!<%k$r\e(B gnus \e$B$GFI$`\e(B
+* Browsing the Web::            \e$B2a>j$J%&%'%V$N;q8;$+$i%a%C%;!<%8$r<hF@$9\e(B
+                                \e$B$k\e(B
+* Other Sources::               \e$B%G%#%l%/%H%j!<!"%U%!%$%k!"\e(BSOUP \e$B%Q%1%C%H\e(B
+                                \e$B$rFI$`\e(B
+* Combined Groups::             \e$BJ#?t$N%0%k!<%W$r0l$D$N%0%k!<%W$K7k9g$9$k\e(B
+* Gnus Unplugged::              \e$B%K%e!<%9$H%a!<%k$r%*%U%i%$%s$GFI$`\e(B
 @end menu
 
 @node Server Buffer
@@ -9791,14 +10039,14 @@ you've typed it correctly.
 \e$B$G\e(B @kbd{^} (@code{gnus-group-enter-server-mode}) \e$B%3%^%s%I$r;H$C$F2<$5$$!#\e(B
 
 @menu
-* Server Buffer Format::      \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
-* Server Commands::           \e$B%5!<%P!<$rA`$kL?Na\e(B
-* Example Methods::           \e$B%5!<%P!<;XDj$NNc\e(B
-* Creating a Virtual Server:: \e$B%;%C%7%g%s$NNc\e(B
-* Server Variables::          \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
-* Servers and Methods::       \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
-* Unavailable Servers::       \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn$A\e(B
-                              \e$B$F$$$k$+$b$7$l$J$$\e(B
+* Server Buffer Format::        \e$B$3$N%P%C%U%!$N308+$r%+%9%?%^%$%:$G$-$k\e(B
+* Server Commands::             \e$B%5!<%P!<$rA`$kL?Na\e(B
+* Example Methods::             \e$B%5!<%P!<;XDj$NNc\e(B
+* Creating a Virtual Server::   \e$B%;%C%7%g%s$NNc\e(B
+* Server Variables::            \e$B$I$NJQ?t$r@_Dj$9$k$+\e(B
+* Servers and Methods::         \e$B%5!<%P!<L>$rA*BrJ}K!$H$7$F;H$&;v$,$G$-$k\e(B
+* Unavailable Servers::         \e$B@\B3$7$h$&$H;n$_$?%5!<%P!<$N$$$/$D$+$,Mn\e(B
+                                \e$B$A$F$$$k$+$b$7$l$J$$\e(B
 @end menu
 
 @vindex gnus-server-mode-hook
@@ -10132,8 +10380,8 @@ Gnus \e$B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$r<u$1$?$+$I$&$+$NA4$F$N0u$r>C5n$7$^\e(B
 \e$B%m!<%+%k%9%W!<%k$+$iFI$`;v$,$G$-$^$9!#\e(B
 
 @menu
-* NNTP::       @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
-* News Spool:: \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
+* NNTP::                        @sc{nntp} \e$B%5!<%P!<$+$i%K%e!<%9$rFI$`\e(B
+* News Spool::                  \e$B%m!<%+%k%9%W!<%k$+$i%K%e!<%9$rFI$`\e(B
 @end menu
 
 @node NNTP
@@ -10397,9 +10645,9 @@ LIST \e$B%3%^%s%I$N%*%W%7%g%s$K;H$C$F!"\e(B(\e$B%5!<%P!<$N\e(B) \e$B%j%9%H=PNO$r@_Dj$
 @end table
 
 @menu
-* Direct Functions::   \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
-* Indirect Functions:: \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
-* Common Variables::   \e$B@\B3$N$?$a$N4X?t$,;2>H$9$kJQ?t\e(B
+* Direct Functions::            \e$B%5!<%P!<$KD>@\@\B3$9$k\e(B
+* Indirect Functions::          \e$B%5!<%P!<$K4V@\E*$K@\B3$9$k\e(B
+* Common Variables::            \e$B$$$/$D$+$N@\B3MQ$N4X?t$,;2>H$9$kJQ?t\e(B
 @end menu
 
 @node Direct Functions
@@ -10648,23 +10896,23 @@ Emacs \e$B$N%;%C%7%g%sA4BN$r%i%C%W$7$F!"%G%#%U%)%k%H$N%a%=%C%I$r;H$&$H$$$&$N\e(B
 \e$B$+\e(B? \e$B$$$d!"$b$A$m$s$G$-$^$9!#\e(B
 
 @menu
-* Mail in a Newsreader::         \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
-* Getting Started Reading Mail:: \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
-* Splitting Mail::               \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
-* Mail Sources::                 Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
-                                 \e$B$i$;$k\e(B
-* Mail Backend Variables::       \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
-* Fancy Mail Splitting::         Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
-                                 \e$B$r$9$k$3$H$,$G$-$k\e(B
-* Group Mail Splitting::         \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W\e(B
-                                   \e$B%+%9%?%^%$%:$r;H$&!#\e(B
-* Incorporating Old Mail::       \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
-* Expiring Mail::                \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
-* Washing Mail::                 \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
-* Duplicates::                   \e$B=EJ#$7$?%a!<%k$r07$&\e(B
-* Not Reading Mail::             \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
-                                 \e$B%s%I$r;H$&\e(B
-* Choosing a Mail Backend::      Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
+* Mail in a Newsreader::        \e$B%K%e!<%9%j!<%@$G%a!<%k\e(B (\e$BBg;v$JA0CV$-\e(B)
+* Getting Started Reading Mail::  \e$B4JC1$JNAM}K\$N$h$&$JNc\e(B
+* Splitting Mail::              \e$B$I$N$h$&$K%a!<%k%0%k!<%W$r:n@.$9$k$+\e(B
+* Mail Sources::                Gnus \e$B$K$I$3$+$i%a!<%k$r<h$C$F$/$k$+$rCN\e(B
+                                \e$B$i$;$k\e(B
+* Mail Backend Variables::      \e$B%a!<%k$N07$$$r%+%9%?%^%$%:$9$k$?$a$NJQ?t\e(B
+* Fancy Mail Splitting::        Gnus \e$B$OF~$C$FMh$?%a!<%k$NLS$N$h$&$JJ,N%\e(B
+                                \e$B$r$9$k$3$H$,$G$-$k\e(B
+* Group Mail Splitting::        \e$B%a!<%kJ,3d$r6nF0$9$k$?$a$K%0%k!<%W%+%9%?\e(B
+                                \e$B%^%$%:$r;H$&\e(B
+* Incorporating Old Mail::      \e$B$"$J$?$,;}$C$F$$$k8E$$%a!<%k$r$I$&$9$k$+\e(B?
+* Expiring Mail::               \e$BM_$7$/$J$$%a!<%k$r<h$j=|$/\e(B
+* Washing Mail::                \e$B<hF@$7$?%a!<%k$+$i7y$J$b$N$r<h$j=|$/\e(B
+* Duplicates::                  \e$B=EJ#$7$?%a!<%k$r07$&\e(B
+* Not Reading Mail::            \e$BB>$N%U%!%$%k$rFI$`$?$a$K%a!<%k%P%C%/%(\e(B
+                                \e$B%s%I$r;H$&\e(B
+* Choosing a Mail Backend::     Gnus \e$B$O?'!9$J%a!<%kMM<0$rFI$`;v$,$G$-$k\e(B
 @end menu
 
 @node Mail in a Newsreader
@@ -10738,8 +10986,7 @@ Gnus \e$B$r;H$C$F?7$7$$%a!<%k$rFI$`;v$OHs>o$K4JC1$G$9!#$"$J$?$N%a!<%k%P%C%/\e(B
 \e$B$$$?$$$J$i!"<!$N$b$N$r$"$J$?$N\e(B @file{.gnus} \e$B%U%!%$%k$KF~$l$k;v$,$G$-$^$9!#\e(B
 
 @lisp
-(setq gnus-secondary-select-methods
-      '((nnml "private")))
+(setq gnus-secondary-select-methods '((nnml "")))
 @end lisp
 
 \e$B:#$d!"<!$K\e(B gnus \e$B$r5/F0$7$?$H$-$K$O!"$3$N%P%C%/%(%s%I$O?7$7$$5-;v$r5a$a!"\e(B
@@ -10855,9 +11102,9 @@ POP \e$B%a!<%k%5!<%P!<!"\e(Bprocmail \e$B%G%#%l%/%H%j!<!"\e(Bmaildir \e$B$J$I$,Nc$H$7
 \e$B$^$9!#\e(B
 
 @menu
-* Mail Source Specifiers::    \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
-* Mail Source Customization:: \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
-* Fetching Mail::             \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
+* Mail Source Specifiers::      \e$B%a!<%k$N85$,$I$3$+$r;XDj$9$k\e(B
+* Mail Source Customization::   \e$B@$$NCf$K1F6A$9$k$$$/$D$+$NJQ?t\e(B
+* Fetching Mail::               \e$B%a!<%k%=!<%9;X<(;R$r;HMQ$9$k\e(B
 @end menu
 
 @node Mail Source Specifiers
@@ -11557,7 +11804,8 @@ table) \e$B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+\e(B
 \e$B$H$-$K$3$N4X?t$r;H$&$H!"$3$NLLE]$J:n6H$r\e(B 1 \e$B%9%l%C%I$K$D$-\e(B 1 \e$B2s$-$j$G:Q$^\e(B
 \e$B$9$3$H$,$G$-$^$9!#\e(B
 
-\e$B$3$N5!G=$rMxMQ$9$k$?$a$K$O!"$^$:JQ?t\e(B @code{nnmail-treat-duplicates} \e$B$NCM\e(B
+\e$B$3$N5!G=$rMxMQ$9$k$?$a$K$O!"$^$:JQ\e(B
+\e$B?t\e(B @code{nnmail-treat-duplicates} \e$B$H\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM\e(B
 \e$B$rHs\e(B nil \e$B$K@_Dj$9$kI,MW$,$"$j$^$9\e(B (\e$B4{DjCM$N$^$^$J$iLdBj$"$j$^$;$s\e(B)\e$B!#$=$l\e(B
 \e$B$,$G$-$?$i\e(B @code{nnmail-split-fancy-with-parent} \e$B$r;H$C$F$_$F$/$@$5$$!#\e(B
 \e$B%3%m%s$r;H$C$F$3$s$JIw$K=q$-$^$9\e(B:
@@ -12095,12 +12343,14 @@ Gnus \e$B$O%a!<%k%0%k!<%W$rF0:n$9$k$h$&$K$9$k$H%a!<%k%9%W!<%k$rFI$_9~$_$^$9!#\e(B
 \e$B$O:GB.$G=@Fp$@$+$i\e(B) @code{nnml} \e$B$G$9\e(B (@pxref{Mail Spool})\e$B!#\e(B
 
 @menu
-* Unix Mail Box::           (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
-* Rmail Babyl::             Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl format \e$B$r;H$&\e(B
-* Mail Spool::              \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
-* MH Spool::                mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
-* Mail Folders::            \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k$r;}$D\e(B
-* Comparing Mail Backends:: \e$BF@<:$N?<$$F6;!\e(B
+* Unix Mail Box::               (\e$B$H$F$b\e(B) \e$BI8=`E*$J\e(B Un*x mbox \e$B$r;H$&\e(B
+* Rmail Babyl::                 Emacs \e$B$N%W%m%0%i%`$O\e(B rmail \e$B$N\e(B babyl \e$B%U%)!<\e(B
+                                \e$B%^%C%H$r;H$&\e(B
+* Mail Spool::                  \e$B$"$J$?$N%a!<%k$r;dE*$J%9%W!<%k$KN/$a$k\e(B?
+* MH Spool::                    mhspool \e$B$N$h$&$J%P%C%/%(%s%I\e(B
+* Mail Folders::                \e$B$=$l$>$l$N%0%k!<%W$KBP$7$F0l$D$N%U%!%$%k\e(B
+                                \e$B$r;}$D\e(B
+* Comparing Mail Backends::     \e$BF@<:$N?<$$F6;!\e(B
 @end menu
 
 @node Unix Mail Box
@@ -12477,13 +12727,13 @@ Gnus \e$B$O$3$l$i$N%=!<%9$X$N3&LL$rDs6!$9$k%P%C%/%(%s%I72$r>/$7Hw$($D$D$"$j\e(B
 \e$B$^$9!#\e(B
 
 @menu
-* Web Searches::   \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
-* Slashdot::       Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
-* Ultimate::       Ultimate Bulletin Board \e$B%7%9%F%`\e(B
-* Web Archive::    \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
-* Web Newspaper::  \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
-* RSS::            RDF Site Summary \e$B$rFI$`\e(B
-* Customizing w3:: Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
+* Web Searches::                \e$BJ8;zNs$K%^%C%A$9$k5-;v$+$i%0%k!<%W$r:n$k\e(B
+* Slashdot::                    Slashdot \e$B$N%3%a%s%H$rFI$`\e(B
+* Ultimate::                    Ultimate Bulletin Board \e$B%7%9%F%`\e(B
+* Web Archive::                 \e$B%&%'%V$KJ]4I$5$l$?%a!<%j%s%0%j%9%H$rFI$`\e(B
+* Web Newspaper::               \e$B%&%'%V$KJ]4I$5$l$??7J9$rFI$`\e(B
+* RSS::                         RDF Site Summary \e$B$rFI$`\e(B
+* Customizing w3::              Gnus \e$B$+$i\e(B Emacs/w3 \e$B$rA`:n$9$k\e(B
 @end menu
 
 @samp{Web Newspaper} \e$B$r=|$/$9$Y$F$N%&%'%V%=!<%9$O!"F0:n$5$;$k$?$a\e(B
@@ -13075,13 +13325,14 @@ Gnus \e$B$O$?$@C1$K%K%e!<%9$d%a!<%k$rFI$`0J>e$N$3$H$,$G$-$^$9!#0J2<\e(B
 \e$B$9!#\e(B
 
 @menu
-* Directory Groups::      \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$KFI$`\e(B
-* Anything Groups::       Dired?  \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
-* Document Groups::       \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
-* SOUP::                  @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B''\e$B$GFI$`\e(B
-* Mail-To-News Gateways:: \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7$F5-;v\e(B
-                          \e$B$rEj9F$9$k\e(B
-* IMAP::                  Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
+* Directory Groups::            \e$B%G%#%l%/%H%j!<$r%K%e!<%9%0%k!<%W$N$h$&$K\e(B
+                                \e$BFI$`\e(B
+* Anything Groups::             Dired?  \e$BC/$,\e(B dired \e$B$J$s$F;H$&$N\e(B?
+* Document Groups::             \e$B8DJL$N%U%!%$%k72$O%0%k!<%W$NAG\e(B
+* SOUP::                        @sc{soup} \e$B%Q%1%C%H$r\e(B ``\e$B%*%U%i%$%s\e(B'' \e$B$GFI$`\e(B
+* Mail-To-News Gateways::       \e$B%a!<%k$+$i%K%e!<%9$X$N%2!<%H%&%'%$$rDL$7\e(B
+                                \e$B$F5-;v$rEj9F$9$k\e(B
+* IMAP::                        Gnus \e$B$r\e(B IMAP \e$B$N%/%i%$%"%s%H$H$7$F;H$&\e(B
 @end menu
 
 @node Directory Groups
@@ -13265,7 +13516,7 @@ MIME \e$BB>ItJ,%a%C%;!<%8\e(B (multipart) \e$B$G$9!#\e(B
 @end table
 
 @menu
-* Document Server Internals:: \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
+* Document Server Internals::   \e$B$"$J$?FH<+$NJ8=q<oJL$rDI2C$9$kJ}K!\e(B
 @end menu
 
 @node Document Server Internals
@@ -13478,9 +13729,10 @@ Gnus \e$B$+$i\e(B @kbd{G s s} \e$BL?Na$r;H$C$F$3$N%Q%1%C%H$+$i%a!<%k$r=P$7$^$9!#\e(B
 \e$B=P$K;H$$$^$9!#\e(B
 
 @menu
-* SOUP Commands:: @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
-* SOUP Groups::   @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
-* SOUP Replies::  @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;$kJ}K!\e(B
+* SOUP Commands::               @sc{soup} \e$B%Q%1%C%H$r:n@.!"Aw=P$9$kL?Na\e(B
+* SOUP Groups::                 @sc{soup} \e$B%Q%1%C%H$rFI$`%P%C%/%(%s%I\e(B
+* SOUP Replies::                @code{nnsoup} \e$B$K%a!<%k$H%K%e!<%9$r0z$-7Q$,$;\e(B
+                                \e$B$kJ}K!\e(B
 @end menu
 
 @node SOUP Commands
@@ -14002,9 +14254,10 @@ nnimap \e$B$K5-;v$NFbItE*$JF|IU$NBe$o$j$K\e(B Date: \e$B$r;H$&$h$&$K$5$;$^$9!#$5$i$
 @end table
 
 @menu
-* Splitting in IMAP::   nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
-* Editing IMAP ACLs::   \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B/\e$B5v2D$9$k\e(B
-* Expunging mailboxes:: "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
+* Splitting in IMAP::           nnimap \e$B$G%a!<%k$rJ,3d$9$k\e(B
+* Editing IMAP ACLs::           \e$B%a!<%k%\%C%/%9$X$NB>$NMxMQ<T$N;HMQ$r@)8B\e(B
+                                /\e$B5v2D$9$k\e(B
+* Expunging mailboxes::         "\e$B%a!<%k%\%C%/%905=L\e(B" \e$B%\%?%s$HEy2A$J$b$N\e(B
 @end menu
 
 @node Splitting in IMAP
@@ -14208,8 +14461,8 @@ Gnus \e$B$O!"A4$F$N%0%k!<%W$N<oN`$r:.9g$7$F!"Bg$-$J%0%k!<%W$K7k9g$9$k$3$H$,\e(B
 \e$B$G$-$^$9!#\e(B
 
 @menu
-* Virtual Groups:: \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
-* Kibozed Groups:: \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
+* Virtual Groups::              \e$B$?$/$5$s$N%0%k!<%W$N5-;v$r7k9g$9$k\e(B
+* Kibozed Groups::              \e$B%K%e!<%9%9%W!<%k$NCf$+$i$N5-;v$r8!:w$9$k\e(B
 @end menu
 
 @node Virtual Groups
@@ -14390,17 +14643,19 @@ gnus \e$B$r@_Dj$7$^$9!#$^$:$d$C$F$*$$$G!#KM$O$3$3$GBT$C$F$k$+$i!#\e(B
 \e$BL?Na$r3P$($J$/$F$O$J$j$^$;$s!#\e(B
 
 @menu
-* Agent Basics::      \e$B$3$l$i$O$I$&F0$/$N$+\e(B
-* Agent Categories::  \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s%H$K65$($kJ}K!\e(B
-* Agent Commands::    \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
-* Agent Expiry::      \e$B8E$$5-;v$r>C$9J}K!\e(B
-* Agent and IMAP::    \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
-* Outgoing Messages:: \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
-* Agent Variables::   \e$B%+%9%?%^%$%:$O3Z$7\e(B
-* Example Setup::     \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
-* Batching Agents::   @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
-* Agent Caveats::     \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k$3$H\e(B
-* Control Agents::    Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
+* Agent Basics::                \e$B$3$l$i$O$I$&F0$/$N$+\e(B
+* Agent Categories::            \e$B2?$r%@%&%s%m!<%I$9$k$+$r\e(B gnus \e$B%(!<%8%'%s\e(B
+                                \e$B%H$K65$($kJ}K!\e(B
+* Agent Commands::              \e$B3F%P%C%U%!!<$G$N?7$7$$L?Na\e(B
+* Agent Expiry::                \e$B8E$$5-;v$r>C$9J}K!\e(B
+* Agent and IMAP::              \e$B%(!<%8%'%s%H$r\e(B IMAP \e$B$G;H$&J}K!\e(B
+* Outgoing Messages::           \e$BEj9F!"%a!<%k$r=P$9$H$-$K$J$K$,5/$3$k$N$+\e(B?
+* Agent Variables::             \e$B%+%9%?%^%$%:$O3Z$7\e(B
+* Example Setup::               \e$B%*%U%i%$%s?M4V$N$?$a$N\e(B @file{.gnus.el} \e$B$NNc\e(B
+* Batching Agents::             @code{cron} \e$B%8%g%V$K$h$k%K%e!<%9<hF@J}K!\e(B
+* Agent Caveats::               \e$B$"$J$?$,M=A[$9$k$3$H$H!"$=$l$,<B:]$K$9$k\e(B
+                                \e$B$3$H\e(B
+* Control Agents::              Offline \e$B$r%3%s%H%m!<%k$9$k\e(B gnus-offline
 @end menu
 
 @node Agent Basics
@@ -14489,9 +14744,9 @@ PPP \e$B4X78\e(B(\e$B$J$I\e(B)\e$B$rJD$8$^$9!#$=$&$7$F%K%e!<%9$r%*%U%i%$%s$GFI$`$3$H$
 \e$B@.$H4IM}$N$?$a$NFH<+$N%P%C%U%!!<$r;}$C$F$$$^$9!#\e(B
 
 @menu
-* Category Syntax::    \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* Category Buffer::    \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
-* Category Variables:: \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
+* Category Syntax::             \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
+* Category Buffer::             \e$BJ,N`$r4IM}$9$k%P%C%U%!!<\e(B
+* Category Variables::          \e$B%+%9%?%^%$%6\e(B"\e$B$i\e(B"\e$B%9\e(B
 @end menu
 
 @node Category Syntax
@@ -14855,9 +15110,9 @@ file
 \e$B$GF0:n$7!"\e(Bgnus \e$B%(!<%8%'%s%H$N@Z$jN%$7\e(B/\e$B:9$79~$_>uBV$r@Z$jBX$($^$9!#\e(B
 
 @menu
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 @end menu
 
 \e$B40A4$J0l3g<hF@$r9T$&$K$O!"%3%^%s%I9T$+$i0J2<$N$*$^$8$J$$$r\e(B
@@ -14938,6 +15193,12 @@ $ emacs -batch -l ~/.gnus.el -f gnus-agent-batch-fetch
 @kindex J c (Agent Summary)
 @findex gnus-agent-catchup
 \e$B%@%&%s%m!<%I0u$NL5$$5-;v$rA4$F4{FI$K$9$k\e(B (@code{gnus-agent-catchup})\e$B!#\e(B
+
+@item J u
+@kindex J u (Agent Summary)
+@findex gnus-agent-summary-fetch-group
+\e$B8=:_$N%0%k!<%W$N%@%&%s%m!<%I2DG=$J5-;v$r!"$9$Y$F%@%&%s%m!<%I$7$^\e(B
+\e$B$9\e(B (@code{gnus-agent-summary-fetch-group})\e$B!#\e(B
 @end table
 
 @node Server Agent Commands
@@ -15262,24 +15523,31 @@ Gnus \e$B$O35N,%P%C%U%!$r:n@.$9$kA0$K!"8=:_$N%0%k!<%W$KE,MQ$5$l$k$I$s\e(B
 \e$BEPO?$b!"%9%3%"%U%!%$%k$NBg$-$5$r>.$5$/$9$k$?$a$K!"@E$+$K:o=|$5$l$^$9!#\e(B
 
 @menu
-* Summary Score Commands:: \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9$k\e(B
-* Group Score Commands::   \e$B0lHLE*$J%9%3%"L?Na\e(B
-* Score Variables::        \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
-                           (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)\e$B!#\e(B
-* Score File Format::      \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
-* Score File Editing::     \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
-* Adaptive Scoring::       \e$BBg;P\e(B gnus \e$B$O$"$J$?$,2?$rFI$s$@$+CN$C$F$$$k\e(B
-* Home Score File::        \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&$K;X\e(B
-                           \e$BDj$9$k$+\e(B
-* Followups To Yourself::  \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+$;$k\e(B
-* Scoring Tips::           \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
-* Reverse Scoring::        \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J$$\e(B
-* Global Score Files::     \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
-* Kill Files::             \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v$,$G$-$k\e(B
-* Converting Kill Files::  \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
-* GroupLens::              \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
-* Advanced Scoring::       \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
-* Score Decays::           \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"$k\e(B
+* Summary Score Commands::      \e$B8=:_$N%0%k!<%W$N$?$a$N%9%3%"EPO?$rDI2C$9\e(B
+                                \e$B$k\e(B
+* Group Score Commands::        \e$B0lHLE*$J%9%3%"L?Na\e(B
+* Score Variables::             \e$B$"$J$?$N%9%3%"$r%+%9%?%^%$%:$9$k\e(B
+                                (\e$B$^$!!"$J$s$FMQ8l$G$7$g$&\e(B)
+* Score File Format::           \e$B%9%3%"%U%!%$%k$K2?$rF~$l$k$+\e(B
+* Score File Editing::          \e$B<j$G%9%3%"%U%!%$%k$rJT=8$9$k;v$b$G$-$k\e(B
+* Adaptive Scoring::            \e$BBg;P\e(B (Big Sister) Gnus \e$B$O$"$J$?$,2?$rFI\e(B
+                                \e$B$s$@$+CN$C$F$$$k\e(B
+* Home Score File::             \e$B?7$7$$%9%3%"EPO?$,$I$3$X9T$/$+$r$I$N$h$&\e(B
+                                \e$B$K;XDj$9$k$+\e(B
+* Followups To Yourself::       \e$B?M$,$"$J$?$KJVEz$7$?$H$-$K\e(B gnus \e$B$K5$IU$+\e(B
+                                \e$B$;$k\e(B
+* Scoring On Other Headers::    \e$BI8=`$G$O$J$$%X%C%@!<$G%9%3%"$rIU$1$k\e(B
+* Scoring Tips::                \e$B$I$&$d$C$F8z2LE*$K%9%3%"$rIU$1$k$+\e(B
+* Reverse Scoring::             \e$B8E$$$b$N$N;R$G$"$k$H$$$&LdBj$OLdBj$G$O$J\e(B
+                                \e$B$$\e(B
+* Global Score Files::          \e$BCO$r$D$+$_!"<*$r@Z$jNv$/%9%3%"%U%!%$%k\e(B
+* Kill Files::                  \e$B$=$l$i$O$^$@$3$3$K$"$j$^$9$,!"L5;k$9$k;v\e(B
+                                \e$B$,$G$-$k\e(B
+* Converting Kill Files::       \e$B>C5n%U%!%$%k$r%9%3%"%U%!%$%k$KJQ49$9$k\e(B
+* GroupLens::                   \e$B$I$l$rFI$`$N$,9%$-$+$NM=8@$rF@$k\e(B
+* Advanced Scoring::            \e$B%9%3%"$NK!B'$r:n$k$?$a$KO@M}I=8=$r;H$&\e(B
+* Score Decays::                \e$B%9%3%"$r8O$l$F$$$+$;$k$N$OLr$KN)$D;v$b$"\e(B
+                                \e$B$k\e(B
 @end menu
 
 @node Summary Score Commands
@@ -16303,6 +16571,39 @@ Gnus \e$B$O8=:_$N%P%C%U%!!<$+$i\e(B @code{Message-ID} \e$B%X%C%@!<$r8+$D$1=P$9$?$a$
 ``\e$B$"$J$?$N\e(B'' \e$B$,:G=i$NFsJ8;z$K$J$k$+:G=i$N;0J8;z$K$J$k$+$O%7%9%F%`$K0MB8\e(B
 \e$B$7$^$9!#\e(B
 
+@c TRANSLATEME
+@node Scoring On Other Headers
+@section Scoring On Other Headers
+@cindex scoring on other headers
+
+Gnus is quite fast when scoring the ``traditional''
+headers---@samp{From}, @samp{Subject} and so on.  However, scoring
+other headers requires writing a @code{head} scoring rule, which means
+that Gnus has to request every single article from the backend to find
+matches.  This takes a long time in big groups.
+
+Now, there's not much you can do about this for news groups, but for
+mail groups, you have greater control.  In the @pxref{To From
+Newsgroups} section of the manual, it's explained in greater detail what
+this mechanism does, but here's a cookbook example for @code{nnml} on
+how to allow scoring on the @samp{To} and @samp{Cc} headers.
+
+Put the following in your @file{.gnus.el} file.
+
+@lisp
+(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
+      nnmail-extra-headers gnus-extra-headers)
+@end lisp
+
+Restart Gnus and rebuild your @code{nnml} overview files with the
+@kbd{M-x nnml-generate-nov-databases} command.  This will take a long
+time if you have much mail.
+
+Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
+so: @kbd{I e s p To RET <your name> RET}.
+
+See?  Simple.
+
 @node Scoring Tips
 @section \e$B%9%3%"IU$1$N1|5A\e(B
 @cindex scoring tips
@@ -16579,12 +16880,13 @@ GoupLens \e$B$O!"KhF|:n@.$5$l$kB?$/$NNL$N%K%e!<%95-;v$+$i<A$NNI$$5-;v$rB>$N\e(B
 \e$B$O$3$NM=8@$r5-;v$rFI$_$?$$$+$I$&$+$r7hDj$9$k$N$KLrN)$F$k;v$,$G$-$^$9!#\e(B
 
 @menu
-* Using GroupLens::        \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k$h$&$K\e(B
-                           \e$B$9$k$+!#\e(B
-* Rating Articles::        GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k$+$rCN\e(B
-                           \e$B$i$;$k!#\e(B
-* Displaying Predictions:: GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9$k\e(B
-* GroupLens Variables::    GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
+* Using GroupLens::             \e$B$I$N$h$&$K\e(B gnus \e$B$K\e(B GroupLens \e$B$r;H$o$;$k\e(B
+                                \e$B$h$&$K$9$k$+\e(B
+* Rating Articles::             GropLens \e$B$K$"$J$?$,$I$N$h$&$KCM$rIU$1$k\e(B
+                                \e$B$+$rCN$i$;$k\e(B
+* Displaying Predictions::      GropuLens \e$B$K$h$C$FM?$($i$l$?M=8@$rI=<($9\e(B
+                                \e$B$k\e(B
+* GroupLens Variables::         GoupLens \e$B$r%+%9%?%^%$%:$9$k\e(B
 @end menu
 
 @node Using GroupLens
@@ -16721,7 +17023,7 @@ grouplens \e$B$GM=8@$rI=<($9$k$?$a$K;0$D$NJ}K!$,$"$j$^$9!#\e(BGroupLens \e$B$N%9%3%
 @item gnus-summary-grouplens-line-format
 GropuLens \e$B3HD%$N35N,%P%C%U%!$G;H$o$l$k35N,9TMM<0$G$9!#IaDL$N35N,9TMM<0$,\e(B
 \e$B<u$1IU$1$k$b$N$HF1$8;XDj$r<u$1IU$1$^$9\e(B (@pxref{Summary Buffer Lines})\e$B!#\e(B
-\e$B=i4|@_Dj$O\e(B@samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%) %s\n} \e$B$G$9!#\e(B
+\e$B=i4|@_Dj$O\e(B@samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%) %s\n} \e$B$G$9!#\e(B
 
 @item grouplens-bbb-host
 bbbd \e$B%5!<%P!<$,<B9T$5$l$F$$$k%[%9%H$G$9!#\e(B@samp{goruplens.cs.umn.edu} \e$B$,\e(B
@@ -16752,9 +17054,9 @@ bbbd \e$B%5!<%P!<$,<B9T$5$l$F$$$k%[%9%H$N%]!<%H$G$9!#=i4|CM$O\e(B 9000 \e$B$G$9!#\e(
 \e$B$9!#\e(B
 
 @menu
-* Advanced Scoring Syntax::   \e$BDj5A\e(B
-* Advanced Scoring Examples:: \e$B$I$N$h$&$K8+$($k$+\e(B
-* Advanced Scoring Tips::     \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
+* Advanced Scoring Syntax::     \e$BDj5A\e(B
+* Advanced Scoring Examples::   \e$B$I$N$h$&$K8+$($k$+\e(B
+* Advanced Scoring Tips::       \e$B$=$l$r:GBg8BMxMQ$9$k\e(B
 @end menu
 
 @node Advanced Scoring Syntax
@@ -16956,25 +17258,28 @@ Gnus \e$B$O0lF|$K0l2s%9%3%"$rIeGT$5$;$h$&$H$7$^$9!#Nc$($P!"$b$7\e(B gnus \e$B$r;MF|
 @chapter \e$B$$$m$$$m\e(B
 
 @menu
-* Process/Prefix::         \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
-* Interactive::            Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
-* Symbolic Prefixes::      \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$kJ}K!\e(B
-* Formatting Variables::   \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9$k;v\e(B
-                           \e$B$,$G$-$k\e(B
-* Window Layout::          Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
-* Faces and Fonts::        \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
-* Compilation::            \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
-* Mode Lines::             \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
-* Highlighting and Menus:: \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
-* Buttons::                \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
-* Daemons::                Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G$-$k\e(B
-* NoCeM::                  Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
-* Undo::                   \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
-* Moderation::             \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
-* XEmacs Enhancements::    XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_$9$k\e(B
-* Fuzzy Matching::         \e$BBg$-$JLJLS$C$F2?\e(B?
-* Thwarting Email Spam::   \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
-* Various Various::        \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
+* Process/Prefix::              \e$BB?$/$N07$$L?Na$G;H$o$l$k=,47\e(B
+* Interactive::                 Gnus \e$B$KB?$/$N<ALd$r?R$M$5$;$k\e(B
+* Symbolic Prefixes::           \e$B$$$/$D$+$N\e(B gnus \e$B$N4X?t$KA*Br8"$rDs6!$9$k\e(B
+                                \e$BJ}K!\e(B
+* Formatting Variables::        \e$B%P%C%U%!$,$I$N$h$&$K8+$($k$Y$-$+$r;XDj$9\e(B
+                                \e$B$k;v$,$G$-$k\e(B
+* Window Layout::               Gnus \e$B%P%C%U%!%&%#%s%I%&$r@_Dj$9$k\e(B
+* Faces and Fonts::             \e$B%U%'%$%9$,$I$N$h$&$K8+$($k$+$rJQ99$9$k\e(B
+* Compilation::                 \e$B$I$N$h$&$K$7$F\e(B gnus \e$B$NB.EY$r>e$2$k$+\e(B
+* Mode Lines::                  \e$B%b!<%I9T$K>pJs$rI=<($9$k\e(B
+* Highlighting and Menus::      \e$B%P%C%U%!$rAGE($G?4CO$h$/8+$;$k\e(B
+* Buttons::                     \e$B4JC1$J==Jb$G%"%-%l%9g'$rF@$k\e(B
+* Daemons::                     Gnus \e$B$O$"$J$?$NN"$GJ*;v$r<B9T$9$k;v$,$G\e(B
+                                \e$B$-$k\e(B
+* NoCeM::                       Spam \e$B$dB>$NB@$j$d$9$$?);v$rHr$1$kJ}K!\e(B
+* Undo::                        \e$B$$$/$D$+$NF0:n$O85$KLa$9;v$,$G$-$k\e(B
+* Moderation::                  \e$B$"$J$?$,%b%G%l!<%?!<$@$C$?$i$I$&$9$k$+\e(B
+* XEmacs Enhancements::         XEmacs \e$B$G$O$b$C$H3($d$=$NB>$N$b$N$,B8:_\e(B
+                                \e$B$9$k\e(B
+* Fuzzy Matching::              \e$BBg$-$JLJLS$C$F2?\e(B?
+* Thwarting Email Spam::        \e$BM>7W$J>&6HE*EE;R%a!<%k$rHr$1$kJ}K!\e(B
+* Various Various::             \e$BK\Ev$K$$$m$$$m$J$b$N\e(B
 @end menu
 
 @node Process/Prefix
@@ -17102,11 +17407,16 @@ Gnus \e$B$r=*N;$9$kA0$K3NG'$rMW5a$7$^$9!#$3$NJQ?t$O=i4|@_Dj$G\e(B @code{t} \e$B$G$9
 \e$B9f$,$I$3$K$G$b$"$j$^$9!#\e(B
 
 @menu
-* Formatting Basics::    \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"$k\e(B
-* Mode Line Formatting:: \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N5,B'\e(B
-* Advanced Formatting::  \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
-* User-Defined Specs::   Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
-* Formatting Fonts::     \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Formatting Basics::           \e$B=qK!;EMMJQ?t$O4pK\E*$K=qK!;XDjJ8;zNs$G$"\e(B
+                                \e$B$k\e(B
+* Mode Line Formatting::        \e$B%b!<%I9T$N=qK!;EMMJQ?t$K4X$9$k$$$/$D$+$N\e(B
+                                \e$B5,B'\e(B
+* Advanced Formatting::         \e$B?'!9$JJ}K!$G=PNO$r=$@5$9$k\e(B
+* User-Defined Specs::          Gnus \e$B$K$"$J$?<+?H$N4X?t$r8F$P$;$k\e(B
+* Formatting Fonts::            \e$B;EMM$rB?:L$GAGE($K8+$;$k\e(B
+* Positioning Point::           \e$BA`:n$N8e$G%]%$%s%H$r0\F0$9$k\e(B
+* Tabulation::                  \e$BI=$r:n$k\e(B
+* Wide Characters::             \e$BI}$,9-$$J8;z$r07$&\e(B
 @end menu
 
 \e$B8=:_$N$H$3$m!"\e(Bgnus \e$B$O0J2<$N=qK!;EMMJQ?t$r;H$$$^$9\e(B:
@@ -17289,6 +17599,60 @@ Emacs \e$B$,\e(B @samp{%b} \e$B$r<u$1<h$k$H!"\e(BEmacs \e$B$N%b!<%I9TI=<($NItJ,$,$=$l
 @samp{%(} \e$B;XDj\e(B (\e$B$d$=$NN`$N$b$N\e(B) \e$B$O%b!<%I9TJQ?t$G$OA4$/0UL#$r$J$5$J$$;v$K\e(B
 \e$BCm0U$7$F$/$@$5$$!#\e(B
 
+@c TRANSLATEME
+@node Positioning Point
+@subsection Positioning Point
+
+Gnus usually moves point to a pre-defined place on each line in most
+buffers.  By default, point move to the first colon character on the
+line.  You can customize this behaviour in three different ways.
+
+You can move the colon character to somewhere else on the line.
+
+@findex gnus-goto-colon
+You can redefine the function that moves the point to the colon.  The
+function is called @code{gnus-goto-colon}.
+
+But perhaps the most convenient way to deal with this, if you don't want
+to have a colon in your line, is to use the @samp{%C} specifier.  If you
+put a @samp{%C} somewhere in your format line definition, Gnus will
+place point there.
+
+@node Tabulation
+@subsection Tabulation
+
+You can usually line up your displays by padding and cutting your
+strings.  However, when combining various strings of different size, it
+can often be more convenient to just output the strings, and then worry
+about lining up the following text afterwards.
+
+To do that, Gnus supplies tabulator specs--@samp{%=}.  There are two
+different types---@dfn{hard tabulators} and @dfn{soft tabulators}.
+
+@samp{%50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, nothing will be inserted.
+This is the soft tabulator.
+
+@samp{%-50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, the excess text past column
+50 will be removed.  This is the hard tabulator.
+
+@node Wide Characters
+@subsection Wide Characters
+
+Proportional fonts in most countries have characters of the same width.
+Some countries, however, use Latin characters mixed with wider
+characters---most notable East Asian countries.
+
+The problem is that when formatting, Gnus assumes that if a string is 10
+characters wide, it'll be 10 Latin characters wide on the screen.  In
+these coutries, that's not true.
+
+@vindex gnus-use-correct-string-widths
+To help fix this, you can set @code{gnus-use-correct-string-widths} to
+@code{t}.  This makes buffer generation slower, but the results will be
+prettieer.  The default value is @code{nil}.
+
 @node Window Layout
 @section \e$B%&%#%s%I%&$NG[CV\e(B
 @cindex window layout
@@ -18086,10 +18450,11 @@ XEmacs \e$B$O3($d$=$NB>$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"\e(Bgnus \e$B$O$3$l$rMxMQ$
 \e$B$k$3$H$K$7$^$9!#\e(B
 
 @menu
-* Picons::   \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
-* Smileys::  \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<($9$kJ}K!\e(B
-* Toolbar::  \e$B%/%j%C%/1n\e(B
-* XVarious:: \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
+* Picons::                      \e$B$"$J$?$,FI$s$G$$$k$b$N$N3($rI=<($9$kJ}K!\e(B
+* Smileys::                     \e$BI=<($5$l$k$Y$/@8$^$l$?9,$;$=$&$J4i$rI=<(\e(B
+                                \e$B$9$kJ}K!\e(B
+* Toolbar::                     \e$B%/%j%C%/1n\e(B
+* XVarious::                    \e$B$=$NB>$N\e(B XEmacs \e$B$G\e(B Gnus \e$B$JJQ?t\e(B
 @end menu
 
 @node Picons
@@ -18108,11 +18473,13 @@ XEmacs \e$B$O3($d$=$NB>$N$b$N$rI=<($9$k$3$H$,$G$-$k$N$G!"\e(Bgnus \e$B$O$3$l$rMxMQ$
 
 @menu
 * Picon Basics::                picon \e$B$H$O2?$G!"$I$&$d$C$F<j$KF~$l$k$N$+\e(B
-* Picon Requirements::          XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J$$$G\e(B
+* Picon Requirements::          XEmacs \e$B$r;H$C$F$J$1$l$P$3$3$+$i$OFI$^$J\e(B
+                                \e$B$$$G\e(B
 * Easy Picons::                 picon \e$B$NI=<(\e(B --- \e$B3Z$JJ}K!\e(B
-* Hard Picons::                 \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@$m$&\e(B
-* Picon Useless Configuration:: \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?$j\e(B
-                                \e$BM7$s$@$j$9$kJQ?t\e(B
+* Hard Picons::                 \e$BK\Mh$9$Y$-$3$H!#2?$+$r3X$V$3$H$,$G$-$k$@\e(B
+                                \e$B$m$&\e(B
+* Picon Useless Configuration::  \e$B$=$NB>$N$V$C2u$7$?$j$R$M$C$?$j$$$8$C$?\e(B
+                                \e$B$jM7$s$@$j$9$kJQ?t\e(B
 @end menu
 
 @node Picon Basics
@@ -18753,14 +19120,15 @@ but at the common table.@*
 @chapter \e$BIUO?\e(B
 
 @menu
-* History::                    \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
-* On Writing Manuals::         \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
-* Terminology::                \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
-* Customization::              \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
-* Troubleshooting::            \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$;v\e(B
-* Gnus Reference Guide::       \e$B?'!9$J5;=QE*$J$b$N\e(B
-* Emacs for Heathens::         Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
-* Frequently Asked Questions:: \e$B<ALd$HEz\e(B
+* History::                     \e$B$I$&$d$C$F\e(B gnus \e$B$,:#F|$N$h$&$K$J$C$?$+\e(B
+* On Writing Manuals::          \e$B$J$<$3$l$,=i?4<TMQ$N0FFb$G$J$$$+\e(B
+* Terminology::                 \e$B2f!9$OK\Ev$KFq$7$$!"8l$N$h$&$J8l$r;H$&\e(B
+* Customization::               \e$B$"$J$?$NMW5a$K1h$C$F\e(B gnus \e$B$r;EN)$F$k\e(B
+* Troubleshooting::             \e$B>e<j$/9T$+$J$+$C$?$H$-$K;n$9$+$b$7$l$J$$\e(B
+                                \e$B$3$H\e(B
+* Gnus Reference Guide::        \e$B?'!9$J5;=QE*$J$b$N\e(B
+* Emacs for Heathens::          Emacs \e$B$NMQ8l$N<jC;$JF3F~\e(B
+* Frequently Asked Questions::  
 @end menu
 
 @node History
@@ -18788,15 +19156,18 @@ but at the common table.@*
 ``Gnus'' \e$B$H\e(B ``@sc{gnus}'' \e$B$G$9!#?7$7$$$b$N\e(B \e$B$H\e(B \e$B8E$$$b$N!#\e(B
 
 @menu
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                Gnus \e$B$NL\E*$O2?\e(B?
-* Compatibility::       Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k$N\e(B?
-* Conformity::          Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
-* Emacsen::             Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B9T$G$-$k\e(B
-* Gnus Development::    Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
-* Contributors::        \e$BBgNL$N?M!9\e(B
-* New Features::        Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
+* Gnus Versions::               \e$B$I$s$J%P!<%8%g%s$N\e(B Gnus \e$B$,%j%j!<%9$5$l$F\e(B
+                                \e$B$$$k$+\e(B
+* Other Gnus Versions::         \e$B%j%j!<%9$5$l$F$$$kB>$N%P!<%8%g%s$N\e(B Gnus
+* Why?::                        Gnus \e$B$NL\E*$O2?\e(B?
+* Compatibility::               Gnus \e$B$O\e(B @sc{gnus} \e$B$H$I$l$/$i$$8_49@-$,$"$k\e(B
+                                \e$B$N\e(B?
+* Conformity::                  Gnus \e$B$OA4$F$NI8=`$rK~$?$=$&$H$9$k\e(B
+* Emacsen::                     Gnus \e$B$O$$$/$D$+$N8=BeE*$J\e(B Emacs \e$B4D6-$G<B\e(B
+                                \e$B9T$G$-$k\e(B
+* Gnus Development::            Gnus \e$B$,3+H/$5$l$F$$$kJ}K!\e(B
+* Contributors::                \e$BBgNL$N?M!9\e(B
+* New Features::                Gnus \e$B$N?7$7$$;v$K4X$9$k<j$,$+$j\e(B
 @end menu
 
 @node Gnus Versions
@@ -19378,12 +19749,14 @@ Lloyd Zusman.
 @cindex new features
 
 @menu
-* ding Gnus::      \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N?7$7$$;v\e(B
-* September Gnus:: \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
-* Red Gnus::       3 \e$BHVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
-* Quassia Gnus::   2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
-* Pterodactyl Gnus::   \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8/5.9 \e$B$H$7$F\e(B
-                       \e$BCN$i$l$F$$$k$b$N\e(B
+* ding Gnus::                   \e$B:G=i$N?7$7$$\e(B Gnus \e$B$G$"$k\e(B Gnus 5.0/5.1 \e$B$N\e(B
+                                \e$B?7$7$$;v\e(B
+* September Gnus::              \e$B8x<0$K\e(B Gnus 5.2/5.3 \e$B$H$7$FCN$i$l$F$$$k$b\e(B
+                                \e$B$N\e(B
+* Red Gnus::                    \e$B;0HVL\$N:G>e$N$b$N\e(B---Gnus 5.4/5.5
+* Quassia Gnus::                2 \e$B$+$1$k\e(B 2 \e$B$O\e(B 4\e$B!"$b$7$/$O\e(B Gnus 5.6/5.7
+* Pterodactyl Gnus::            \e$B8^HVL\!"\e(BP \e$B$G;O$^$k!"$b$7$/$O\e(B Gnus 5.8
+                                /5.9 \e$B$H$7$FCN$i$l$F$$$k$b$N\e(B
 @end menu
 
 \e$B$3$N%j%9%H$O!"$b$A$m$s!"\e(B@emph{\e$B$?$$$F$$$N\e(B} \e$B=EMW$J?7$7$$5!G=$K4X$9\e(B
@@ -20093,7 +20466,7 @@ nnweb \e$B$O:F$S2~:n$5$l!">o$KJQ2=$9$k9=@.$rB3$1$^$9!#\e(B
 @iftex
 
 @page
-@node The Manual
+@node History
 @section \e$B%^%K%e%"%k\e(B
 @cindex colophon
 @cindex manual
@@ -20359,11 +20732,11 @@ Gnus \e$B$,%0%k!<%W$KF~$k$H!"%0%k!<%W$NA4$F$NL$FI5-;v$N%X%C%@!<$r%P%C%/%(%s\e(B
 \e$BAm9gE,;X<(@h$rM?$($k$?$a$K9M0F$5$l$F$$$^$9!#\e(B
 
 @menu
-* Slow/Expensive Connection:: \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"\e(B
-                              \e$BB>$N$H$3$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
-* Slow Terminal Connection::  \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
-* Little Disk Space::         \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
-* Slow Machine::              \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
+* Slow/Expensive Connection::   \e$B%m!<%+%k$N\e(B Emacs \e$B$rN)$A>e$2$F!"B>$N$H$3\e(B
+                                \e$B$m$+$i%K%e!<%9$rF@$k;v$,$G$-$k!#\e(B
+* Slow Terminal Connection::    \e$B1s3V\e(B Emacs \e$B$r<B9T$9$k\e(B
+* Little Disk Space::           \e$BBg$-$J5/F0%U%!%$%k$r;}$D;v$O$^$:$$\e(B
+* Slow Machine::                \e$BB.$$5!3#$rGc$*$&$H46$8$k$G$"$m$&\e(B
 @end menu
 
 @node Slow/Expensive Connection
@@ -20570,15 +20943,16 @@ gnus \e$B$H$=$N%P%C%/%(%s%I4V$N%$%s%?!<%U%'!<%9\e(B (\e$B$3$l$O40A4$K5-=R$5$l$F$$\e(
 \e$B5A$7$F$$$-$^$9!#\e(B
 
 @menu
-* Gnus Utility Functions:: \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
-* Backend Interface::      Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
-* Score File Syntax::      \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
-* Headers::                Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<$9$k$+\e(B
-* Ranges::                 \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
-* Group Info::             \e$B%0%k!<%W>pJs7A<0\e(B
-* Extended Interactive::   \e$B5-9f@\F,<-$J$I\e(B
-* Emacs/XEmacs Code::      Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
-* Various File Formats::   Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
+* Gnus Utility Functions::      \e$B;HMQ$G$-$k6&DL$N4X?t$HJQ?t\e(B
+* Backend Interface::           Gnus \e$B$O$I$&$d$C$F%5!<%P!<$HDL?.$9$k$N$+\e(B
+* Score File Syntax::           \e$B%9%3%"%U%!%$%k5,3J$N\e(B BNF \e$BDj5A\e(B
+* Headers::                     Gnus \e$B$O%X%C%@!<$rFbItE*$K$I$N$h$&$K3JG<\e(B
+                                \e$B$9$k$+\e(B
+* Ranges::                      \e$B$?$/$5$s$N?t$r3JG<$9$kJXMx$J7A<0\e(B
+* Group Info::                  \e$B%0%k!<%W>pJs7A<0\e(B
+* Extended Interactive::        \e$B5-9f@\F,<-$J$I\e(B
+* Emacs/XEmacs Code::           Gnus \e$B$OA4$F$N6aBe\e(B Emacsen \e$B$GF0:n$9$k\e(B
+* Various File Formats::        Gnus \e$B$N;HMQ$9$k%U%!%$%k$N7A<0\e(B
 @end menu
 
 @node Gnus Utility Functions
@@ -20773,12 +21147,12 @@ Gnus \e$B$O%0%k!<%WL>$H5-;vHV9f$K$h$C$F$=$l$>$l$N%a%C%;!<%8$rFCDj$7$^$9!#$=\e(B
 @cindex @code{nnchoke}
 
 @menu
-* Required Backend Functions::     \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
-* Optional Backend Functions::     \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
-* Error Messaging::                \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
-* Writing New Backends::           \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
-* Hooking New Backends Into Gnus:: Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
-* Mail-like Backends::             \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
+* Required Backend Functions::  \e$B<BAu$7$J$1$l$P$J$i$J$$4X?t\e(B
+* Optional Backend Functions::  \e$B<BAu$7$J$/$F$b$h$$4X?t\e(B
+* Error Messaging::             \e$B%a%C%;!<%8$d%(%i!<Js9p$rF@$kJ}K!\e(B
+* Writing New Backends::        \e$B8E$$%P%C%/%(%s%I$N3HD%\e(B
+* Hooking New Backends Into Gnus::  Gnus \e$BB&$G$7$J$1$l$P$J$i$J$$$3$H\e(B
+* Mail-like Backends::          \e$B%a!<%kIw%P%C%/%(%s%I$N$?$a$N=u8@\e(B
 @end menu
 
 @node Required Backend Functions
@@ -21042,10 +21416,9 @@ ACTION \e$B$O$3$N$h$&$JMM<0$N0u@_Dj$NMW5a$N%j%9%H$G$9\e(B:
 (RANGE ACTION MARK)
 @end example
 
-RANGE \e$B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#\e(B
-ACTION \e$B$O\e(B @code{set}, @code{add}, @code{del} \e$B$N$I$l$+$G!"$=$l$>$lA4$F$N\e(B
-\e$BB8:_$9$k0u$r>C5n$7$F!";XDj$5$l$?$h$&$K@_Dj!"0u$NDI2C\e(B (\e$B8@5Z$5$l$F$$$J$$0u\e(B
-\e$B$OJ]B8$7$^$9\e(B)\e$B!"0u$N>C5n\e(B (\e$B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9\e(B) \e$B$G$9!#\e(BMARK \e$B$O0u\e(B
+RANGE \e$B$O0u$rIU$1$?$$5-;v$NHO0O$G$9!#\e(BACTION \e$B$O\e(B @code{add} \e$B$^$?\e(B
+\e$B$O\e(B @code{del} \e$B$G!"0u$rDI2C$7$?$j>C$7$^$9\e(B (\e$B8@5Z$5$l$F$$$J$$$9$Y$F$N0u$OJ]\e(B
+\e$BB8$7$^$9\e(B)\e$B!"0u$N>C5n\e(B (\e$B8@5Z$5$l$F$$$J$$0u$OJ]B8$7$^$9\e(B) \e$B$G$9!#\e(BMARK \e$B$O0u\e(B
 \e$B$N%j%9%H$G$9!#$=$l$>$l$N0u$O%7%s%\%k$G$9!#8=:_;H$o$l$F$$$k0u\e(B
 \e$B$O\e(B @code{read}, @code{tick}, @code{reply}, @code{expire}, @code{killed},
 @code{dormant}, @code{save}, @code{download},  @code{unsend},
@@ -21867,8 +22240,8 @@ XEmacs \e$B$G\e(B gnus \e$B$r<B9T$9$k$H$-$K!"$3$&$$$&5U8~$-$N$?$a$NB.EYDc2<$O>/$7$G
 @subsection \e$B$$$m$$$m$J%U%!%$%kMM<0\e(B
 
 @menu
-* Active File Format::     \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
-* Newsgroups File Format:: \e$B%0%k!<%W$N5-=R\e(B
+* Active File Format::          \e$B;HMQ2DG=$J5-;v%0%k!<%W$N>pJs\e(B
+* Newsgroups File Format::      \e$B%0%k!<%W$N5-=R\e(B
 @end menu
 
 @node Active File Format
@@ -21934,8 +22307,8 @@ description   = <string>
 \e$B$,$j$K9T$C$F2<$5$$!#\e(B
 
 @menu
-* Keystrokes:: \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
-* Emacs Lisp:: \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
+* Keystrokes::                  \e$BJ8>O$rF~NO$7$FL?Na$r<B9T$9$k\e(B
+* Emacs Lisp::                  \e$BHw$(IU$1$N\e(B Emacs \e$B%W%m%0%i%_%s%08@8l\e(B
 @end menu
 
 @node Keystrokes
index 5816e14..ab28372 100644 (file)
@@ -406,82 +406,82 @@ the program.
 @end iftex
 
 @menu
-* Starting Up::           Finding news can be a pain.
-* Group Buffer::          Selecting, subscribing and killing groups.
-* Summary Buffer::        Reading, saving and posting articles.
-* Article Buffer::        Displaying and handling articles.
-* Composing Messages::    Information on sending mail and news.
-* Select Methods::        Gnus reads all messages from various select methods.
-* Scoring::               Assigning values to articles.
-* Various::               General purpose settings.
-* The End::               Farewell and goodbye.
-* Appendices::            Terminology, Emacs intro, FAQ, History, Internals.
-* Index::                 Variable, function and concept index.
-* Key Index::             Key Index.
+* Starting Up::                 Finding news can be a pain.
+* Group Buffer::                Selecting, subscribing and killing groups.
+* Summary Buffer::              Reading, saving and posting articles.
+* Article Buffer::              Displaying and handling articles.
+* Composing Messages::          Information on sending mail and news.
+* Select Methods::              Gnus reads all messages from various select methods.
+* Scoring::                     Assigning values to articles.
+* Various::                     General purpose settings.
+* The End::                     Farewell and goodbye.
+* Appendices::                  Terminology, Emacs intro, FAQ, History, Internals.
+* Index::                       Variable, function and concept index.
+* Key Index::                   Key Index.
 
 @detailmenu
  --- The Detailed Node Listing ---
 
 Starting Gnus
 
-* Finding the News::    Choosing a method for getting news.
-* The First Time::      What does Gnus do the first time you start it?
-* The Server is Down::  How can I read my mail then?
-* Slave Gnusae::        You can have more than one Gnus active at a time.
-* Fetching a Group::    Starting Gnus just to read a group.
-* New Groups::          What is Gnus supposed to do with new groups?
-* Startup Files::       Those pesky startup files---@file{.newsrc}.
-* Auto Save::           Recovering from a crash.
-* The Active File::     Reading the active file over a slow line Takes Time.
-* Changing Servers::    You may want to move from one server to another.
-* Startup Variables::   Other variables you might change.
+* Finding the News::            Choosing a method for getting news.
+* The First Time::              What does Gnus do the first time you start it?
+* The Server is Down::          How can I read my mail then?
+* Slave Gnusae::                You can have more than one Gnus active at a time.
+* Fetching a Group::            Starting Gnus just to read a group.
+* New Groups::                  What is Gnus supposed to do with new groups?
+* Changing Servers::            You may want to move from one server to another.
+* Startup Files::               Those pesky startup files---@file{.newsrc}.
+* Auto Save::                   Recovering from a crash.
+* The Active File::             Reading the active file over a slow line Takes Time.
+* Startup Variables::           Other variables you might change.
 
 New Groups
 
-* Checking New Groups::      Determining what groups are new.
-* Subscription Methods::     What Gnus should do with new groups.
-* Filtering New Groups::     Making Gnus ignore certain new groups.
+* Checking New Groups::         Determining what groups are new.
+* Subscription Methods::        What Gnus should do with new groups.
+* Filtering New Groups::        Making Gnus ignore certain new groups.
 
 Group Buffer
 
-* Group Buffer Format::    Information listed and how you can change it.
-* Group Maneuvering::      Commands for moving in the group buffer.
-* Selecting a Group::      Actually reading news.
-* Group Data::             Changing the info for a group.
-* Subscription Commands::  Unsubscribing, killing, subscribing.
-* Group Levels::           Levels? What are those, then?
-* Group Score::            A mechanism for finding out what groups you like.
-* Marking Groups::         You can mark groups for later processing.
-* Foreign Groups::         Creating and editing groups.
-* Group Parameters::       Each group may have different parameters set.
-* Listing Groups::         Gnus can list various subsets of the groups.
-* Sorting Groups::         Re-arrange the group order.
-* Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server::  You can browse a server.  See what it has to offer.
-* Exiting Gnus::           Stop reading news and get some work done.
-* Group Topics::           A folding group mode divided into topics.
-* Misc Group Stuff::       Other stuff that you can to do.
+* Group Buffer Format::         Information listed and how you can change it.
+* Group Maneuvering::           Commands for moving in the group buffer.
+* Selecting a Group::           Actually reading news.
+* Subscription Commands::       Unsubscribing, killing, subscribing.
+* Group Data::                  Changing the info for a group.
+* Group Levels::                Levels? What are those, then?
+* Group Score::                 A mechanism for finding out what groups you like.
+* Marking Groups::              You can mark groups for later processing.
+* Foreign Groups::              Creating and editing groups.
+* Group Parameters::            Each group may have different parameters set.
+* Listing Groups::              Gnus can list various subsets of the groups.
+* Sorting Groups::              Re-arrange the group order.
+* Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server::       You can browse a server.  See what it has to offer.
+* Exiting Gnus::                Stop reading news and get some work done.
+* Group Topics::                A folding group mode divided into topics.
+* Misc Group Stuff::            Other stuff that you can to do.
 
 Group Buffer Format
 
-* Group Line Specification::       Deciding how the group buffer is to look.
-* Group Modeline Specification::   The group buffer modeline.
-* Group Highlighting::             Having nice colors in the group buffer.
+* Group Line Specification::    Deciding how the group buffer is to look.
+* Group Modeline Specification::  The group buffer modeline.
+* Group Highlighting::          Having nice colors in the group buffer.
 
 Group Topics
 
-* Topic Variables::    How to customize the topics the Lisp Way.
-* Topic Commands::     Interactive E-Z commands.
-* Topic Sorting::      Sorting each topic individually.
-* Topic Topology::     A map of the world.
-* Topic Parameters::   Parameters that apply to all groups in a topic.
+* Topic Variables::             How to customize the topics the Lisp Way.
+* Topic Commands::              Interactive E-Z commands.
+* Topic Sorting::               Sorting each topic individually.
+* Topic Topology::              A map of the world.
+* Topic Parameters::            Parameters that apply to all groups in a topic.
 
 Misc Group Stuff
 
-* Scanning New Messages:: Asking Gnus to see whether new messages have arrived.
-* Group Information::     Information and help on groups and Gnus.
-* Group Timestamp::       Making Gnus keep track of when you last read a group.
-* File Commands::         Reading and writing the Gnus files.
+* Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
+* Group Information::           Information and help on groups and Gnus.
+* Group Timestamp::             Making Gnus keep track of when you last read a group.
+* File Commands::               Reading and writing the Gnus files.
 
 Summary Buffer
 
@@ -490,6 +490,7 @@ Summary Buffer
 * Choosing Articles::           Reading articles.
 * Paging the Article::          Scrolling the current article.
 * Reply Followup and Post::     Posting articles.
+* Delayed Articles::            
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
@@ -510,7 +511,8 @@ Summary Buffer
 * Tree Display::                A more visual display of threads.
 * Mail Group Commands::         Some commands can only be used in mail groups.
 * Various Summary Stuff::       What didn't fit anywhere else.
-* Exiting the Summary Buffer::  Returning to the Group buffer.
+* Exiting the Summary Buffer::  Returning to the Group buffer,
+                                or reselecting the current group.
 * Crosspost Handling::          How crossposted articles are dealt with.
 * Duplicate Suppression::       An alternative when crosspost handling fails.
 * Security::                    Decrypt and Verify.
@@ -518,58 +520,64 @@ Summary Buffer
 
 Summary Buffer Format
 
-* Summary Buffer Lines::     You can specify how summary lines should look.
-* To From Newsgroups::       How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting::     Making the summary buffer all pretty and nice.
+* Summary Buffer Lines::        You can specify how summary lines should look.
+* To From Newsgroups::          How to not display your own name.
+* Summary Buffer Mode Line::    You can say how the mode line should look.
+* Summary Highlighting::        Making the summary buffer all pretty and nice.
 
 Choosing Articles
 
-* Choosing Commands::        Commands for choosing articles.
-* Choosing Variables::       Variables that influence these commands.
+* Choosing Commands::           Commands for choosing articles.
+* Choosing Variables::          Variables that influence these commands.
 
 Reply, Followup and Post
 
-* Summary Mail Commands::    Sending mail.
-* Summary Post Commands::    Sending news.
-* Summary Message Commands:: Other Message-related commands.
-* Canceling and Superseding:: ``Whoops, I shouldn't have called him that.''
+* Summary Mail Commands::       Sending mail.
+* Summary Post Commands::       Sending news.
+* Summary Message Commands::    Other Message-related commands.
+* Canceling and Superseding::   
+
+Marking Articles
+
+* Unread Articles::             Marks for unread articles.
+* Read Articles::               Marks for read articles.
+* Other Marks::                 Marks that do not affect readedness.
+* Setting Marks::               
+* Generic Marking Commands::    
+* Setting Process Marks::       
 
 Marking Articles
 
-* Unread Articles::          Marks for unread articles.
-* Read Articles::            Marks for read articles.
-* Other Marks::              Marks that do not affect readedness.
-* Setting Marks::            How to set and remove marks.
-* Generic Marking Commands:: How to customize the marking.
-* Setting Process Marks::    How to mark articles for later processing.
+* Setting Marks::             How to set and remove marks.
+* Generic Marking Commands::  How to customize the marking.
+* Setting Process Marks::     How to mark articles for later processing.
 
 Threading
 
-* Customizing Threading::    Variables you can change to affect the threading.
-* Thread Commands::          Thread based commands in the summary buffer.
+* Customizing Threading::       Variables you can change to affect the threading.
+* Thread Commands::             Thread based commands in the summary buffer.
 
 Customizing Threading
 
-* Loose Threads::        How Gnus gathers loose threads into bigger threads.
-* Filling In Threads::   Making the threads displayed look fuller.
-* More Threading::       Even more variables for fiddling with threads.
-* Low-Level Threading::  You thought it was over... but you were wrong!
+* Loose Threads::               How Gnus gathers loose threads into bigger threads.
+* Filling In Threads::          Making the threads displayed look fuller.
+* More Threading::              Even more variables for fiddling with threads.
+* Low-Level Threading::         You thought it was over... but you were wrong!
 
 Decoding Articles
 
-* Uuencoded Articles::    Uudecode articles.
-* Shell Archives::        Unshar articles.
-* PostScript Files::      Split PostScript.
-* Other Files::           Plain save and binhex.
-* Decoding Variables::    Variables for a happy decoding.
-* Viewing Files::         You want to look at the result of the decoding?
+* Uuencoded Articles::          Uudecode articles.
+* Shell Archives::              Unshar articles.
+* PostScript Files::            Split PostScript.
+* Other Files::                 Plain save and binhex.
+* Decoding Variables::          Variables for a happy decoding.
+* Viewing Files::               You want to look at the result of the decoding?
 
 Decoding Variables
 
-* Rule Variables::          Variables that say how a file is to be viewed.
-* Other Decode Variables::  Other decode variables.
-* Uuencoding and Posting::  Variables for customizing uuencoding.
+* Rule Variables::              Variables that say how a file is to be viewed.
+* Other Decode Variables::      Other decode variables.
+* Uuencoding and Posting::      Variables for customizing uuencoding.
 
 Article Treatment
 
@@ -589,76 +597,82 @@ Alternative Approaches
 
 Various Summary Stuff
 
-* Summary Group Information::         Information oriented commands.
-* Searching for Articles::            Multiple article commands.
-* Summary Generation Commands::       (Re)generating the summary buffer.
-* Really Various Summary Commands::   Those pesky non-conformant commands.
+* Summary Group Information::   Information oriented commands.
+* Searching for Articles::      Multiple article commands.
+* Summary Generation Commands::  
+* Really Various Summary Commands::  Those pesky non-conformant commands.
 
 Article Buffer
 
-* Hiding Headers::        Deciding what headers should be displayed.
-* Using MIME::            Pushing articles through @sc{mime} before reading them.
-* Customizing Articles::  Tailoring the look of the articles.
-* Article Keymap::        Keystrokes available in the article buffer.
-* Misc Article::          Other stuff.
+* Hiding Headers::              Deciding what headers should be displayed.
+* Using MIME::                  Pushing articles through @sc{mime} before reading them.
+* Customizing Articles::        Tailoring the look of the articles.
+* Article Keymap::              Keystrokes available in the article buffer.
+* Misc Article::                Other stuff.
 
 Composing Messages
 
-* Mail::                 Mailing and replying.
-* Posting Server::       What server should you post via?
-* Mail and Post::        Mailing and posting at the same time.
-* Archived Messages::    Where Gnus stores the messages you've sent.
-* Posting Styles::       An easier way to specify who you are.
-* Drafts::               Postponing messages and rejected messages.
-* Rejected Articles::    What happens if the server doesn't like your article?
-* Using GPG::            How to use GPG and MML to sign and encrypt messages
+* Mail::                        Mailing and replying.
+* Posting Server::              What server should you post via?
+* Mail and Post::               Mailing and posting at the same time.
+* Archived Messages::           Where Gnus stores the messages you've sent.
+* Posting Styles::              An easier way to specify who you are.
+* Drafts::                      Postponing messages and rejected messages.
+* Rejected Articles::           What happens if the server doesn't like your article?
+* Using GPG::                   How to use GPG and MML to sign and encrypt messages
 
 Select Methods
 
-* Server Buffer::         Making and editing virtual servers.
-* Getting News::          Reading USENET news with Gnus.
-* Getting Mail::          Reading your personal mail with Gnus.
-* Browsing the Web::      Getting messages from a plethora of Web sources.
-* Other Sources::         Reading directories, files, SOUP packets.
-* Combined Groups::       Combining groups into one group.
-* Gnus Unplugged::        Reading news and mail offline.
+* Server Buffer::               Making and editing virtual servers.
+* Getting News::                Reading USENET news with Gnus.
+* Getting Mail::                Reading your personal mail with Gnus.
+* Browsing the Web::            Getting messages from a plethora of Web sources.
+* Other Sources::               Reading directories, files, SOUP packets.
+* Combined Groups::             Combining groups into one group.
+* Gnus Unplugged::              Reading news and mail offline.
 
 Server Buffer
 
-* Server Buffer Format::      You can customize the look of this buffer.
-* Server Commands::           Commands to manipulate servers.
-* Example Methods::           Examples server specifications.
-* Creating a Virtual Server:: An example session.
-* Server Variables::          Which variables to set.
-* Servers and Methods::       You can use server names as select methods.
-* Unavailable Servers::       Some servers you try to contact may be down.
+* Server Buffer Format::        You can customize the look of this buffer.
+* Server Commands::             Commands to manipulate servers.
+* Example Methods::             Examples server specifications.
+* Creating a Virtual Server::   An example session.
+* Server Variables::            Which variables to set.
+* Servers and Methods::         You can use server names as select methods.
+* Unavailable Servers::         Some servers you try to contact may be down.
 
 Getting News
 
-* NNTP::               Reading news from an @sc{nntp} server.
-* News Spool::         Reading news from the local spool.
+* NNTP::                        Reading news from an @sc{nntp} server.
+* News Spool::                  Reading news from the local spool.
+
+@sc{nntp}
+
+* Direct Functions::            Connecting directly to the server.
+* Indirect Functions::          Connecting indirectly to the server.
+* Common Variables::            Understood by several connection functions.
 
 Getting Mail
 
-* Mail in a Newsreader::         Important introductory notes.
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail::               How to create mail groups.
-* Mail Sources::                 How to tell Gnus where to get mail from.
-* Mail Backend Variables::       Variables for customizing mail handling.
-* Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting::         Use group customize to drive mail splitting.
-* Incorporating Old Mail::       What about the old mail you have?
-* Expiring Mail::                Getting rid of unwanted mail.
-* Washing Mail::                 Removing cruft from the mail you get.
-* Duplicates::                   Dealing with duplicated mail.
-* Not Reading Mail::             Using mail backends for reading other files.
-* Choosing a Mail Backend::      Gnus can read a variety of mail formats.
+* Mail in a Newsreader::        Important introductory notes.
+* Getting Started Reading Mail::  A simple cookbook example.
+* Splitting Mail::              How to create mail groups.
+* Mail Sources::                How to tell Gnus where to get mail from.
+* Mail Backend Variables::      Variables for customizing mail handling.
+* Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting::        Use group customize to drive mail splitting.
+* Incorporating Old Mail::      What about the old mail you have?
+* Expiring Mail::               Getting rid of unwanted mail.
+* Washing Mail::                Removing gruft from the mail you get.
+* Duplicates::                  Dealing with duplicated mail.
+* Not Reading Mail::            Using mail backends for reading other files.
+* Choosing a Mail Backend::     Gnus can read a variety of mail formats.
 
 Mail Sources
 
-* Mail Source Specifiers::       How to specify what a mail source is.
-* Mail Source Customization::    Some variables that influence things.
-* Fetching Mail::                Using the mail source specifiers.
+* Mail Source Specifiers::      How to specify what a mail source is.
+* Mail Source Customization::   Some variables that influence things.
+* Fetching Mail::               Using the mail source specifiers.
 
 Choosing a Mail Backend
 
@@ -671,21 +685,21 @@ Choosing a Mail Backend
 
 Browsing the Web
 
-* Web Searches::          Creating groups from articles that match a string.
-* Slashdot::              Reading the Slashdot comments.
-* Ultimate::              The Ultimate Bulletin Board systems.
-* Web Archive::           Reading mailing list archived on web.
-* RSS::                   Reading RDF site summary.
-* Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
+* Web Searches::                Creating groups from articles that match a string.
+* Slashdot::                    Reading the Slashdot comments.
+* Ultimate::                    The Ultimate Bulletin Board systems.
+* Web Archive::                 Reading mailing list archived on web.
+* RSS::                         Reading RDF site summary.
+* Customizing w3::              Doing stuff to Emacs/w3 from Gnus.
 
 Other Sources
 
-* Directory Groups::      You can read a directory as if it was a newsgroup.
-* Anything Groups::       Dired?  Who needs dired?
-* Document Groups::       Single files can be the basis of a group.
-* SOUP::                  Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP::                  Using Gnus as a @sc{imap} client.
+* Directory Groups::            You can read a directory as if it was a newsgroup.
+* Anything Groups::             Dired?  Who needs dired?
+* Document Groups::             Single files can be the basis of a group.
+* SOUP::                        Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
+* IMAP::                        Using Gnus as a @sc{imap} client.
 
 Document Groups
 
@@ -693,71 +707,72 @@ Document Groups
 
 SOUP
 
-* SOUP Commands::     Commands for creating and sending @sc{soup} packets
-* SOUP Groups::       A backend for reading @sc{soup} packets.
-* SOUP Replies::      How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands::               Commands for creating and sending @sc{soup} packets
+* SOUP Groups::                 A backend for reading @sc{soup} packets.
+* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 
 @sc{imap}
 
-* Splitting in IMAP::     Splitting mail with nnimap.
-* Editing IMAP ACLs::     Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes::   Equivalent of a "compress mailbox" button.
+* Splitting in IMAP::           Splitting mail with nnimap.
+* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes::         Equivalent of a "compress mailbox" button.
 
 Combined Groups
 
-* Virtual Groups::     Combining articles from many groups.
-* Kibozed Groups::     Looking through parts of the newsfeed for articles.
+* Virtual Groups::              Combining articles from many groups.
+* Kibozed Groups::              Looking through parts of the newsfeed for articles.
 
 Gnus Unplugged
 
-* Agent Basics::           How it all is supposed to work.
-* Agent Categories::       How to tell the Gnus Agent what to download.
-* Agent Commands::         New commands for all the buffers.
-* Agent Expiry::           How to make old articles go away.
-* Agent and IMAP::         How to use the Agent with IMAP.
-* Outgoing Messages::      What happens when you post/mail something?
-* Agent Variables::        Customizing is fun.
-* Example Setup::          An example @file{.gnus.el} file for offline people.
-* Batching Agents::        How to fetch news from a @code{cron} job.
-* Agent Caveats::          What you think it'll do and what it does.
+* Agent Basics::                How it all is supposed to work.
+* Agent Categories::            How to tell the Gnus Agent what to download.
+* Agent Commands::              New commands for all the buffers.
+* Agent Expiry::                How to make old articles go away.
+* Agent and IMAP::              How to use the Agent with IMAP.
+* Outgoing Messages::           What happens when you post/mail something?
+* Agent Variables::             Customizing is fun.
+* Example Setup::               An example @file{.gnus.el} file for offline people.
+* Batching Agents::             How to fetch news from a @code{cron} job.
+* Agent Caveats::               What you think it'll do and what it does.
 
 Agent Categories
 
-* Category Syntax::       What a category looks like.
-* Category Buffer::       A buffer for maintaining categories.
-* Category Variables::    Customize'r'Us.
+* Category Syntax::             What a category looks like.
+* Category Buffer::             A buffer for maintaining categories.
+* Category Variables::          Customize'r'Us.
 
 Agent Commands
 
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 
 Scoring
 
-* Summary Score Commands::   Adding score entries for the current group.
-* Group Score Commands::     General score commands.
-* Score Variables::          Customize your scoring.  (My, what terminology).
-* Score File Format::        What a score file may contain.
-* Score File Editing::       You can edit score files by hand as well.
-* Adaptive Scoring::         Big Sister Gnus knows what you read.
-* Home Score File::          How to say where new score entries are to go.
-* Followups To Yourself::    Having Gnus notice when people answer you.
-* Scoring Tips::             How to score effectively.
-* Reverse Scoring::          That problem child of old is not problem.
-* Global Score Files::       Earth-spanning, ear-splitting score files.
-* Kill Files::               They are still here, but they can be ignored.
-* Converting Kill Files::    Translating kill files to score files.
-* GroupLens::                Getting predictions on what you like to read.
-* Advanced Scoring::         Using logical expressions to build score rules.
-* Score Decays::             It can be useful to let scores wither away.
+* Summary Score Commands::      Adding score entries for the current group.
+* Group Score Commands::        General score commands.
+* Score Variables::             Customize your scoring.  (My, what terminology).
+* Score File Format::           What a score file may contain.
+* Score File Editing::          You can edit score files by hand as well.
+* Adaptive Scoring::            Big Sister Gnus knows what you read.
+* Home Score File::             How to say where new score entries are to go.
+* Followups To Yourself::       Having Gnus notice when people answer you.
+* Scoring On Other Headers::    Scoring on non-standard headers.
+* Scoring Tips::                How to score effectively.
+* Reverse Scoring::             That problem child of old is not problem.
+* Global Score Files::          Earth-spanning, ear-splitting score files.
+* Kill Files::                  They are still here, but they can be ignored.
+* Converting Kill Files::       Translating kill files to score files.
+* GroupLens::                   Getting predictions on what you like to read.
+* Advanced Scoring::            Using logical expressions to build score rules.
+* Score Decays::                It can be useful to let scores wither away.
 
 GroupLens
 
-* Using GroupLens::          How to make Gnus use GroupLens.
-* Rating Articles::          Letting GroupLens know how you rate articles.
-* Displaying Predictions::   Displaying predictions given by GroupLens.
-* GroupLens Variables::      Customizing GroupLens.
+* Using GroupLens::             How to make Gnus use GroupLens.
+* Rating Articles::             Letting GroupLens know how you rate articles.
+* Displaying Predictions::      Displaying predictions given by GroupLens.
+* GroupLens Variables::         Customizing GroupLens.
 
 Advanced Scoring
 
@@ -767,116 +782,118 @@ Advanced Scoring
 
 Various
 
-* Process/Prefix::             A convention used by many treatment commands.
-* Interactive::                Making Gnus ask you many questions.
-* Symbolic Prefixes::          How to supply some Gnus functions with options.
-* Formatting Variables::       You can specify what buffers should look like.
-* Window Layout::              Configuring the Gnus buffer windows.
-* Faces and Fonts::            How to change how faces look.
-* Compilation::                How to speed Gnus up.
-* Mode Lines::                 Displaying information in the mode lines.
-* Highlighting and Menus::     Making buffers look all nice and cozy.
-* Buttons::                    Get tendinitis in ten easy steps!
-* Daemons::                    Gnus can do things behind your back.
-* NoCeM::                      How to avoid spam and other fatty foods.
-* Undo::                       Some actions can be undone.
-* Moderation::                 What to do if you're a moderator.
-* XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
-* Fuzzy Matching::             What's the big fuzz?
-* Thwarting Email Spam::       A how-to on avoiding unsolicited commercial email.
-* Various Various::            Things that are really various.
+* Process/Prefix::              A convention used by many treatment commands.
+* Interactive::                 Making Gnus ask you many questions.
+* Symbolic Prefixes::           How to supply some Gnus functions with options.
+* Formatting Variables::        You can specify what buffers should look like.
+* Window Layout::               Configuring the Gnus buffer windows.
+* Faces and Fonts::             How to change how faces look.
+* Compilation::                 How to speed Gnus up.
+* Mode Lines::                  Displaying information in the mode lines.
+* Highlighting and Menus::      Making buffers look all nice and cozy.
+* Buttons::                     Get tendinitis in ten easy steps!
+* Daemons::                     Gnus can do things behind your back.
+* NoCeM::                       How to avoid spam and other fatty foods.
+* Undo::                        Some actions can be undone.
+* Moderation::                  What to do if you're a moderator.
+* XEmacs Enhancements::         There are more pictures and stuff under XEmacs.
+* Fuzzy Matching::              What's the big fuzz?
+* Thwarting Email Spam::        A how-to on avoiding unsolicited commercial email.
+* Various Various::             Things that are really various.
 
 Formatting Variables
 
-* Formatting Basics::     A formatting variable is basically a format string.
-* Mode Line Formatting::  Some rules about mode line formatting variables.
-* Advanced Formatting::   Modifying output in various ways.
-* User-Defined Specs::    Having Gnus call your own functions.
-* Formatting Fonts::      Making the formatting look colorful and nice.
+* Formatting Basics::           A formatting variable is basically a format string.
+* Mode Line Formatting::        Some rules about mode line formatting variables.
+* Advanced Formatting::         Modifying output in various ways.
+* User-Defined Specs::          Having Gnus call your own functions.
+* Formatting Fonts::            Making the formatting look colorful and nice.
+* Positioning Point::           Moving point to a position after an operation.
+* Tabulation::                  Tabulating your output.
+* Wide Characters::             Dealing with wide characters.
 
 XEmacs Enhancements
 
-* Picons::    How to display pictures of what your reading.
-* Smileys::   Show all those happy faces the way they were meant to be shown.
-* Toolbar::   Click'n'drool.
-* XVarious::  Other XEmacsy Gnusey variables.
+* Picons::                      How to display pictures of what your reading.
+* Smileys::                     Show all those happy faces the way they were meant to be shown.
+* Toolbar::                     Click'n'drool.
+* XVarious::                    Other XEmacsy Gnusey variables.
 
 Picons
 
-* Picon Basics::           What are picons and How do I get them.
-* Picon Requirements::     Don't go further if you aren't using XEmacs.
-* Easy Picons::            Displaying Picons---the easy way.
-* Hard Picons::            The way you should do it.  You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics::                What are picons and How do I get them.
+* Picon Requirements::          Don't go further if you aren't using XEmacs.
+* Easy Picons::                 Displaying Picons---the easy way.
+* Hard Picons::                 The way you should do it.  You'll learn something.
+* Picon Useless Configuration::  Other variables you can trash/tweak/munge/play with.
 
 Appendices
 
-* History::                        How Gnus got where it is today.
-* On Writing Manuals::             Why this is not a beginner's guide.
-* Terminology::                    We use really difficult, like, words here.
-* Customization::                  Tailoring Gnus to your needs.
-* Troubleshooting::                What you might try if things do not work.
-* Gnus Reference Guide::           Rilly, rilly technical stuff.
-* Emacs for Heathens::             A short introduction to Emacsian terms.
-* Frequently Asked Questions::     A question-and-answer session.
+* History::                     How Gnus got where it is today.
+* On Writing Manuals::          Why this is not a beginner's guide.
+* Terminology::                 We use really difficult, like, words here.
+* Customization::               Tailoring Gnus to your needs.
+* Troubleshooting::             What you might try if things do not work.
+* Gnus Reference Guide::        Rilly, rilly technical stuff.
+* Emacs for Heathens::          A short introduction to Emacsian terms.
 
 History
 
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                What's the point of Gnus?
-* Compatibility::       Just how compatible is Gnus with @sc{gnus}?
-* Conformity::          Gnus tries to conform to all standards.
-* Emacsen::             Gnus can be run on a few modern Emacsen.
-* Gnus Development::    How Gnus is developed.
-* Contributors::        Oodles of people.
-* New Features::        Pointers to some of the new stuff in Gnus.
+* Gnus Versions::               What Gnus versions have been released.
+* Other Gnus Versions::         Other Gnus versions that also have been released.
+* Why?::                        What's the point of Gnus?
+* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
+* Conformity::                  Gnus tries to conform to all standards.
+* Emacsen::                     Gnus can be run on a few modern Emacsen.
+* Gnus Development::            How Gnus is developed.
+* Contributors::                Oodles of people.
+* New Features::                Pointers to some of the new stuff in Gnus.
 
 New Features
 
-* ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus::     The Thing Formally Known As Gnus 5.2/5.3.
-* Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6/5.7.
-* Pterodactyl Gnus::   Pentad also starts with P, AKA Gnus 5.8/5.9.
+* ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
+* Red Gnus::                    Third time best---Gnus 5.4/5.5.
+* Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
+* Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
 
 Customization
 
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection::  You run a remote Emacs.
-* Little Disk Space::         You feel that having large setup files is icky.
-* Slow Machine::              You feel like buying a faster machine.
+* Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection::    You run a remote Emacs.
+* Little Disk Space::           You feel that having large setup files is icky.
+* Slow Machine::                You feel like buying a faster machine.
 
 Gnus Reference Guide
 
-* Gnus Utility Functions::   Common functions and variable to use.
-* Backend Interface::        How Gnus communicates with the servers.
-* Score File Syntax::        A BNF definition of the score file standard.
-* Headers::                  How Gnus stores headers internally.
-* Ranges::                   A handy format for storing mucho numbers.
-* Group Info::               The group info format.
-* Extended Interactive::     Symbolic prefixes and stuff.
-* Emacs/XEmacs Code::        Gnus can be run under all modern Emacsen.
-* Various File Formats::     Formats of files that Gnus use.
+* Gnus Utility Functions::      Common functions and variable to use.
+* Backend Interface::           How Gnus communicates with the servers.
+* Score File Syntax::           A BNF definition of the score file standard.
+* Headers::                     How Gnus stores headers internally.
+* Ranges::                      A handy format for storing mucho numbers.
+* Group Info::                  The group info format.
+* Extended Interactive::        Symbolic prefixes and stuff.
+* Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
+* Various File Formats::        Formats of files that Gnus use.
 
 Backend Interface
 
-* Required Backend Functions::        Functions that must be implemented.
-* Optional Backend Functions::        Functions that need not be implemented.
-* Error Messaging::                   How to get messages and report errors.
-* Writing New Backends::              Extending old backends.
-* Hooking New Backends Into Gnus::    What has to be done on the Gnus end.
-* Mail-like Backends::                Some tips on mail backends.
+* Required Backend Functions::  Functions that must be implemented.
+* Optional Backend Functions::  Functions that need not be implemented.
+* Error Messaging::             How to get messages and report errors.
+* Writing New Backends::        Extending old backends.
+* Hooking New Backends Into Gnus::  What has to be done on the Gnus end.
+* Mail-like Backends::          Some tips on mail backends.
 
 Various File Formats
 
-* Active File Format::      Information on articles and groups available.
-* Newsgroups File Format::  Group descriptions.
+* Active File Format::          Information on articles and groups available.
+* Newsgroups File Format::      Group descriptions.
 
 Emacs for Heathens
 
-* Keystrokes::      Entering text and executing commands.
-* Emacs Lisp::      The built-in Emacs programming language.
+* Keystrokes::                  Entering text and executing commands.
+* Emacs Lisp::                  The built-in Emacs programming language.
 
 @end detailmenu
 @end menu
@@ -904,17 +921,17 @@ If you puzzle at any terms used in this manual, please refer to the
 terminology section (@pxref{Terminology}).
 
 @menu
-* Finding the News::    Choosing a method for getting news.
-* The First Time::      What does gnus do the first time you start it?
-* The Server is Down::  How can I read my mail then?
-* Slave Gnusae::        You can have more than one gnus active at a time.
-* Fetching a Group::    Starting gnus just to read a group.
-* New Groups::          What is gnus supposed to do with new groups?
-* Startup Files::       Those pesky startup files---@file{.newsrc}.
-* Auto Save::           Recovering from a crash.
-* The Active File::     Reading the active file over a slow line Takes Time.
-* Changing Servers::    You may want to move from one server to another.
-* Startup Variables::   Other variables you might change.
+* Finding the News::            Choosing a method for getting news.
+* The First Time::              What does Gnus do the first time you start it?
+* The Server is Down::          How can I read my mail then?
+* Slave Gnusae::                You can have more than one Gnus active at a time.
+* Fetching a Group::            Starting Gnus just to read a group.
+* New Groups::                  What is Gnus supposed to do with new groups?
+* Changing Servers::            You may want to move from one server to another.
+* Startup Files::               Those pesky startup files---@file{.newsrc}.
+* Auto Save::                   Recovering from a crash.
+* The Active File::             Reading the active file over a slow line Takes Time.
+* Startup Variables::           Other variables you might change.
 @end menu
 
 
@@ -1112,9 +1129,9 @@ is @code{ask-server} by default.  If you set this variable to
 when you do the @kbd{g} command (@pxref{Scanning New Messages}).
 
 @menu
-* Checking New Groups::      Determining what groups are new.
-* Subscription Methods::     What gnus should do with new groups.
-* Filtering New Groups::     Making gnus ignore certain new groups.
+* Checking New Groups::         Determining what groups are new.
+* Subscription Methods::        What Gnus should do with new groups.
+* Filtering New Groups::        Making Gnus ignore certain new groups.
 @end menu
 
 
@@ -1594,23 +1611,23 @@ long as gnus is active.
 @end iftex
 
 @menu
-* Group Buffer Format::    Information listed and how you can change it.
-* Group Maneuvering::      Commands for moving in the group buffer.
-* Selecting a Group::      Actually reading news.
-* Group Data::             Changing the info for a group.
-* Subscription Commands::  Unsubscribing, killing, subscribing.
-* Group Levels::           Levels? What are those, then?
-* Group Score::            A mechanism for finding out what groups you like.
-* Marking Groups::         You can mark groups for later processing.
-* Foreign Groups::         Creating and editing groups.
-* Group Parameters::       Each group may have different parameters set.
-* Listing Groups::         Gnus can list various subsets of the groups.
-* Sorting Groups::         Re-arrange the group order.
-* Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server::  You can browse a server.  See what it has to offer.
-* Exiting Gnus::           Stop reading news and get some work done.
-* Group Topics::           A folding group mode divided into topics.
-* Misc Group Stuff::       Other stuff that you can to do.
+* Group Buffer Format::         Information listed and how you can change it.
+* Group Maneuvering::           Commands for moving in the group buffer.
+* Selecting a Group::           Actually reading news.
+* Subscription Commands::       Unsubscribing, killing, subscribing.
+* Group Data::                  Changing the info for a group.
+* Group Levels::                Levels? What are those, then?
+* Group Score::                 A mechanism for finding out what groups you like.
+* Marking Groups::              You can mark groups for later processing.
+* Foreign Groups::              Creating and editing groups.
+* Group Parameters::            Each group may have different parameters set.
+* Listing Groups::              Gnus can list various subsets of the groups.
+* Sorting Groups::              Re-arrange the group order.
+* Group Maintenance::           Maintaining a tidy @file{.newsrc} file.
+* Browse Foreign Server::       You can browse a server.  See what it has to offer.
+* Exiting Gnus::                Stop reading news and get some work done.
+* Group Topics::                A folding group mode divided into topics.
+* Misc Group Stuff::            Other stuff that you can to do.
 @end menu
 
 
@@ -1618,9 +1635,9 @@ long as gnus is active.
 @section Group Buffer Format
 
 @menu
-* Group Line Specification::       Deciding how the group buffer is to look.
-* Group Modeline Specification::   The group buffer modeline.
-* Group Highlighting::             Having nice colors in the group buffer.
+* Group Line Specification::    Deciding how the group buffer is to look.
+* Group Modeline Specification::  The group buffer modeline.
+* Group Highlighting::          Having nice colors in the group buffer.
 @end menu
 
 
@@ -2610,6 +2627,8 @@ If you do an @kbd{a} command in a mail group and you don't have a
 @code{to-list} group parameter, one will be added automatically upon
 sending the message.
 
+@findex gnus-mailing-list-mode
+@cindex Mail List Groups
 If this variable is set, @code{gnus-mailing-list-mode} is turned on when
 entering summary buffer.
 
@@ -2707,8 +2726,34 @@ Display all articles, both read and unread.
 @item default
 Display the default visible articles, which normally includes unread and
 ticked articles.
+
+@item an array
+Display articles that satisfy a predicate.
+
+Here are some examples:
+
+@table @code
+@item [unread]
+Display only unread articles.
+
+@item [not expire]
+Display everything except expirable articles.
+
+@item [and (not reply) (not expirable)]
+Display everything except expirable and articles you've already
+responded to.
 @end table
 
+The available operators are @code{not}, @code{and} and @code{or}.
+Predicates include @code{tick}, @code{unsend}, @code{undownload},
+@code{unread}, @code{read}, @code{dormant}, @code{}, @code{}, @code{},
+@code{expire}, @code{reply}, @code{killed}, @code{bookmark},
+@code{score}, @code{save}, @code{cache}, @code{forward}, and
+@code{recent}.
+
+@end table
+
+
 @item comment
 Elements that look like @code{(comment . "This is a comment")}
 are arbitrary comments on the group.  They are currently ignored by
@@ -2780,22 +2825,35 @@ presents you with a Customize-like interface.  The latter helps avoid
 silly Lisp errors.)  You might also be interested in reading about topic
 parameters (@pxref{Topic Parameters}).
 
-Group parameters can be set in @code{gnus-parameters} too.  But some
-variables, such as @code{visible}, have no effect.  For example,
+Group parameters can be set via the @code{gnus-parameters} variable too.
+But some variables, such as @code{visible}, have no effect.  For
+example:
 
 @example
 (setq gnus-parameters
-  '(("mail\\..*"  (gnus-show-threads nil)
-                  (gnus-use-scoring nil)
-                  (gnus-summary-line-format
-                        "%U%R%z%I%(%[%d:%ub%-20,20f%]%) %s\n")
-                  (gcc-self . t)
-                  (display . all))
-     ("mail\\.me" (gnus-use-scoring  t))
-     ("list\\..*" (total-expire . t)
-                  (broken-reply-to . t)))
+      '(("mail\\..*"
+         (gnus-show-threads nil)
+         (gnus-use-scoring nil)
+         (gnus-summary-line-format
+          "%U%R%z%I%(%[%d:%ub%-23,23f%]%) %s\n")
+         (gcc-self . t)
+         (display . all))
+
+        ("^nnimap:\\(foo.bar\\)$"
+         (to-group . "\\1"))
+
+        ("mail\\.me"
+         (gnus-use-scoring  t))
+
+        ("list\\..*"
+         (total-expire . t)
+         (broken-reply-to . t))))
 @end example
 
+String value of parameters will be subjected to regexp substitution, as
+the @code{to-group} example shows.
+
+
 @node Listing Groups
 @section Listing Groups
 @cindex group listing
@@ -3276,11 +3334,11 @@ the hook for the group mode:
 @end lisp
 
 @menu
-* Topic Variables::    How to customize the topics the Lisp Way.
-* Topic Commands::     Interactive E-Z commands.
-* Topic Sorting::      Sorting each topic individually.
-* Topic Topology::     A map of the world.
-* Topic Parameters::   Parameters that apply to all groups in a topic.
+* Topic Variables::             How to customize the topics the Lisp Way.
+* Topic Commands::              Interactive E-Z commands.
+* Topic Sorting::               Sorting each topic individually.
+* Topic Topology::              A map of the world.
+* Topic Parameters::            Parameters that apply to all groups in a topic.
 @end menu
 
 
@@ -3652,10 +3710,10 @@ happens.  You just have to be careful if you do stuff like that.
 @section Misc Group Stuff
 
 @menu
-* Scanning New Messages:: Asking gnus to see whether new messages have arrived.
-* Group Information::     Information and help on groups and gnus.
-* Group Timestamp::       Making gnus keep track of when you last read a group.
-* File Commands::         Reading and writing the gnus files.
+* Scanning New Messages::       Asking Gnus to see whether new messages have arrived.
+* Group Information::           Information and help on groups and Gnus.
+* Group Timestamp::             Making Gnus keep track of when you last read a group.
+* File Commands::               Reading and writing the Gnus files.
 @end menu
 
 @table @kbd
@@ -3931,6 +3989,7 @@ You can have as many summary buffers open as you wish.
 * Choosing Articles::           Reading articles.
 * Paging the Article::          Scrolling the current article.
 * Reply Followup and Post::     Posting articles.
+* Delayed Articles::            
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
@@ -3974,10 +4033,10 @@ You can have as many summary buffers open as you wish.
 @end iftex
 
 @menu
-* Summary Buffer Lines::     You can specify how summary lines should look.
-* To From Newsgroups::       How to not display your own name.
-* Summary Buffer Mode Line:: You can say how the mode line should look.
-* Summary Highlighting::     Making the summary buffer all pretty and nice.
+* Summary Buffer Lines::        You can specify how summary lines should look.
+* To From Newsgroups::          How to not display your own name.
+* Summary Buffer Mode Line::    You can say how the mode line should look.
+* Summary Highlighting::        Making the summary buffer all pretty and nice.
 @end menu
 
 @findex mail-extract-address-components
@@ -4014,12 +4073,13 @@ the @code{gnus-summary-line-format} variable.  It works along the same
 lines as a normal @code{format} string, with some extensions
 (@pxref{Formatting Variables}).
 
-There should always be a colon on the line; the cursor always moves to
-the colon after performing an operation.  (Of course, Gnus wouldn't be
-Gnus if it wasn't possible to change this.  Just write a new function
+There should always be a colon or a point position marker on the line;
+the cursor always moves to the point position marker or the colon after
+performing an operation.  (Of course, Gnus wouldn't be Gnus if it wasn't
+possible to change this.  Just write a new function
 @code{gnus-goto-colon} which does whatever you like with the cursor.)
 
-The default string is @samp{%U%R%z%I%(%[%4L: %-20,20n%]%) %s\n}.
+The default string is @samp{%U%R%z%I%(%[%4L: %-23,23n%]%) %s\n}.
 
 The following format specification characters are understood:
 
@@ -4197,7 +4257,7 @@ In summary, you'd typically put something like the following in
       '(To Newsgroups))
 (setq nnmail-extra-headers gnus-extra-headers)
 (setq gnus-summary-line-format
-      "%U%R%z%I%(%[%4L: %-20,20f%]%) %s\n")
+      "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n")
 (setq gnus-ignored-from-addresses
       "Your Name Here")
 @end lisp
@@ -4396,8 +4456,8 @@ the given number of lines from the top.
 @cindex selecting articles
 
 @menu
-* Choosing Commands::        Commands for choosing articles.
-* Choosing Variables::       Variables that influence these commands.
+* Choosing Commands::           Commands for choosing articles.
+* Choosing Variables::          Variables that influence these commands.
 @end menu
 
 
@@ -4631,7 +4691,7 @@ Select the article buffer (@code{gnus-summary-select-article-buffer}).
 * Summary Mail Commands::       Sending mail.
 * Summary Post Commands::       Sending news.
 * Summary Message Commands::    Other Message-related commands.
-* Canceling and Superseding::   ``Whoops, I shouldn't have called him that.''
+* Canceling and Superseding::   
 @end menu
 
 
@@ -4914,6 +4974,103 @@ canceled/superseded.
 
 Just remember, kids: There is no 'c' in 'supersede'.
 
+@node Delayed Articles
+@section Delayed Articles
+@cindex delayed sending
+@cindex send delayed
+
+Sometimes, you might wish to delay the sending of a message.  For
+example, you might wish to arrange for a message to turn up just in time
+to remind your about the birthday of your Significant Other.  For this,
+there is the @code{gnus-delay} package.  Setup is simple:
+
+@lisp
+(gnus-delay-initialize)
+@end lisp
+
+@findex gnus-delay-article
+Normally, to send a message you use the @kbd{C-c C-c} command from
+Message mode.  To delay a message, use @kbd{C-c C-j}
+(@code{gnus-delay-article}) instead.  This will ask you for how long the
+message should be delayed.  Possible answers are:
+
+@itemize
+@item
+A time span.  Consists of an integer and a letter.  For example,
+@code{42d} means to delay for 42 days.  Available letters are @code{m}
+(minutes), @code{h} (hours), @code{d} (days), @code{w} (weeks), @code{M}
+(months) and @code{Y} (years).
+
+@item
+A specific date.  Looks like @code{YYYYY-MM-DD}.  The message will be
+delayed until that day, at a specific time (eight o'clock by default).
+See also @code{gnus-delay-default-hour}.
+
+@item
+A specific time of day.  Given in @code{hh:mm} format, 24h, no am/pm
+stuff.  The deadline will be at that time today, except if that time has
+already passed, then it's at the given time tomorrow.  So if it's ten
+o'clock in the morning and you specify @code{11:15}, then the deadline
+is one hour and fifteen minutes hence.  But if you specify @code{9:20},
+that means a time tomorrow.
+@end itemize
+
+The action of the @code{gnus-delay-article} command is influenced by a
+couple of variables:
+
+@table @code
+@item gnus-delay-default-hour
+@vindex gnus-delay-default-hour
+When you specify a specific date, the message will be due on that hour
+on the given date.  Possible values are integers 0 through 23.
+
+@item gnus-delay-default-delay
+@vindex gnus-delay-default-delay
+This is a string and gives the default delay.  It can be of any of the
+formats described above.
+
+@item gnus-delay-group
+@vindex gnus-delay-group
+Delayed articles will be kept in this group on the drafts server until
+they are due.  You probably don't need to change this.  The default
+value is @code{"delayed"}.
+
+@item gnus-delay-header
+@vindex gnus-delay-header
+The deadline for each article will be stored in a header.  This variable
+is a string and gives the header name.  You probably don't need to
+change this.  The default value is @code{"X-Gnus-Delayed"}.
+@end table
+
+The way delaying works is like this: when you use the
+@code{gnus-delay-article} command, you give a certain delay.  Gnus
+calculates the deadline of the message and stores it in the
+@code{X-Gnus-Delayed} header and puts the message in the
+@code{nndraft:delayed} group.
+
+And whenever you get new news, Gnus looks through the group for articles
+which are due and sends them.  It uses the @code{gnus-delay-send-drafts}
+function for this.  By default, this function is added to the hook
+@code{gnus-get-new-news-hook}.  But of course, you can change this.
+Maybe you want to use the demon to send drafts?  Just tell the demon to
+execute the @code{gnus-delay-send-drafts} function.
+
+@table @code
+@item gnus-delay-initialize
+@findex gnus-delay-initialize
+By default, this function installs the @kbd{C-c C-j} key binding in
+Message mode and @code{gnus-delay-send-drafts} in
+@code{gnus-get-new-news-hook}.  But it accepts two optional arguments,
+@code{no-keymap} and @code{no-check}.  If @code{no-keymap} is non-nil,
+the @kbd{C-c C-j} binding is not intalled.  If @code{no-check} is
+non-nil, @code{gnus-get-new-news-hook} is not changed.
+
+For example, @code{(gnus-delay-initialize nil t)} means to change the
+keymap but not to change @code{gnus-get-new-news-hook}.  Presumably, you
+want to use the demon for sending due delayed articles.  Just don't
+forget to set that up :-)
+@end table
+
 
 @node Marking Articles
 @section Marking Articles
@@ -4930,9 +5087,9 @@ neologism ohoy!) of the article.  Alphabetic marks generally mean
 In addition, you also have marks that do not affect readedness.
 
 @menu
-* Unread Articles::      Marks for unread articles.
-* Read Articles::        Marks for read articles.
-* Other Marks::          Marks that do not affect readedness.
+* Unread Articles::             Marks for unread articles.
+* Read Articles::               Marks for read articles.
+* Other Marks::                 Marks that do not affect readedness.
 @end menu
 
 @ifinfo
@@ -5083,7 +5240,7 @@ answered) will be marked with an @samp{A} in the second column
 (@code{gnus-replied-mark}).
 
 @vindex gnus-forwarded-mark
-All articles that you have forwarded will be marked with an @samp{O} in
+All articles that you have forwarded will be marked with an @samp{F} in
 the second column (@code{gnus-forwarded-mark}).
 
 @vindex gnus-recent-mark
@@ -5103,6 +5260,11 @@ religiously) are marked with an @samp{S} in the second column
 (@code{gnus-saved-mark}).
 
 @item
+@vindex gnus-unseen-mark
+Articles that haven't been seen by the user before are marked with a
+@samp{.} in the second column (@code{gnus-unseen-mark}). 
+
+@item
 @vindex gnus-not-empty-thread-mark
 @vindex gnus-empty-thread-mark
 If the @samp{%e} spec is used, the presence of threads or not will be
@@ -5608,8 +5770,8 @@ displayed as empty lines in the summary buffer.
 
 
 @menu
-* Customizing Threading::     Variables you can change to affect the threading.
-* Thread Commands::           Thread based commands in the summary buffer.
+* Customizing Threading::       Variables you can change to affect the threading.
+* Thread Commands::             Thread based commands in the summary buffer.
 @end menu
 
 
@@ -5618,10 +5780,10 @@ displayed as empty lines in the summary buffer.
 @cindex customizing threading
 
 @menu
-* Loose Threads::        How gnus gathers loose threads into bigger threads.
-* Filling In Threads::   Making the threads displayed look fuller.
-* More Threading::       Even more variables for fiddling with threads.
-* Low-Level Threading::  You thought it was over... but you were wrong!
+* Loose Threads::               How Gnus gathers loose threads into bigger threads.
+* Filling In Threads::          Making the threads displayed look fuller.
+* More Threading::              Even more variables for fiddling with threads.
+* Low-Level Threading::         You thought it was over... but you were wrong!
 @end menu
 
 
@@ -6693,12 +6855,12 @@ Sometime users post articles (or series of articles) that have been
 encoded in some way or other.  Gnus can decode them for you.
 
 @menu
-* Uuencoded Articles::    Uudecode articles.
-* Shell Archives::        Unshar articles.
-* PostScript Files::      Split PostScript.
-* Other Files::           Plain save and binhex.
-* Decoding Variables::    Variables for a happy decoding.
-* Viewing Files::         You want to look at the result of the decoding?
+* Uuencoded Articles::          Uudecode articles.
+* Shell Archives::              Unshar articles.
+* PostScript Files::            Split PostScript.
+* Other Files::                 Plain save and binhex.
+* Decoding Variables::          Variables for a happy decoding.
+* Viewing Files::               You want to look at the result of the decoding?
 @end menu
 
 @cindex series
@@ -6865,9 +7027,9 @@ doesn't really work yet.
 Adjective, not verb.
 
 @menu
-* Rule Variables::          Variables that say how a file is to be viewed.
-* Other Decode Variables::  Other decode variables.
-* Uuencoding and Posting::  Variables for customizing uuencoding.
+* Rule Variables::              Variables that say how a file is to be viewed.
+* Other Decode Variables::      Other decode variables.
+* Uuencoding and Posting::      Variables for customizing uuencoding.
 @end menu
 
 
@@ -7102,14 +7264,14 @@ writing, so there are tons of functions and variables to make reading
 these articles easier.
 
 @menu
-* Article Highlighting::    You want to make the article look like fruit salad.
-* Article Fontisizing::     Making emphasized text look nice.
-* Article Hiding::          You also want to make certain info go away.
-* Article Washing::         Lots of way-neat functions to make life better.
-* Article Buttons::         Click on URLs, Message-IDs, addresses and the like.
-* Article Date::            Grumble, UT!
-* Article Signature::       What is a signature?
-* Article Miscellania::     Various other stuff.
+* Article Highlighting::        You want to make the article look like fruit salad.
+* Article Fontisizing::         Making emphasized text look nice.
+* Article Hiding::              You also want to make certain info go away.
+* Article Washing::             Lots of way-neat functions to make life better.
+* Article Buttons::             Click on URLs, Message-IDs, addresses and the like.
+* Article Date::                Grumble, UT!
+* Article Signature::           What is a signature?
+* Article Miscellania::         Various other stuff.
 @end menu
 
 
@@ -8794,10 +8956,10 @@ suggestions you find reasonable.  (Note that
 @section Various Summary Stuff
 
 @menu
-* Summary Group Information::         Information oriented commands.
-* Searching for Articles::            Multiple article commands.
-* Summary Generation Commands::       (Re)generating the summary buffer.
-* Really Various Summary Commands::   Those pesky non-conformant commands.
+* Summary Group Information::   Information oriented commands.
+* Searching for Articles::      Multiple article commands.
+* Summary Generation Commands::  
+* Really Various Summary Commands::  Those pesky non-conformant commands.
 @end menu
 
 @table @code
@@ -9335,11 +9497,11 @@ one.  All the summary buffers share the same article buffer unless you
 tell gnus otherwise.
 
 @menu
-* Hiding Headers::        Deciding what headers should be displayed.
-* Using MIME::            Pushing articles through @sc{mime} before reading them.
-* Customizing Articles::  Tailoring the look of the articles.
-* Article Keymap::        Keystrokes available in the article buffer.
-* Misc Article::          Other stuff.
+* Hiding Headers::              Deciding what headers should be displayed.
+* Using MIME::                  Pushing articles through @sc{mime} before reading them.
+* Customizing Articles::        Tailoring the look of the articles.
+* Article Keymap::              Keystrokes available in the article buffer.
+* Misc Article::                Other stuff.
 @end menu
 
 
@@ -9783,14 +9945,14 @@ Message Manual}.  Where the message will be posted/mailed to depends
 on your setup (@pxref{Posting Server}).
 
 @menu
-* Mail::                 Mailing and replying.
-* Posting Server::       What server should you post via?
-* Mail and Post::        Mailing and posting at the same time.
-* Archived Messages::    Where gnus stores the messages you've sent.
-* Posting Styles::       An easier way to specify who you are.
-* Drafts::               Postponing messages and rejected messages.
-* Rejected Articles::    What happens if the server doesn't like your article?
-* Using GPG::            How to use GPG and MML to sign and encrypt messages
+* Mail::                        Mailing and replying.
+* Posting Server::              What server should you post via?
+* Mail and Post::               Mailing and posting at the same time.
+* Archived Messages::           Where Gnus stores the messages you've sent.
+* Posting Styles::              An easier way to specify who you are.
+* Drafts::                      Postponing messages and rejected messages.
+* Rejected Articles::           What happens if the server doesn't like your article?
+* Using GPG::                   How to use GPG and MML to sign and encrypt messages
 @end menu
 
 Also see @pxref{Canceling and Superseding} for information on how to
@@ -10323,13 +10485,13 @@ backend just knows this group as @samp{soc.motss}.
 The different methods all have their peculiarities, of course.
 
 @menu
-* Server Buffer::         Making and editing virtual servers.
-* Getting News::          Reading USENET news with Gnus.
-* Getting Mail::          Reading your personal mail with Gnus.
-* Browsing the Web::      Getting messages from a plethora of Web sources.
-* Other Sources::         Reading directories, files, SOUP packets.
-* Combined Groups::       Combining groups into one group.
-* Gnus Unplugged::        Reading news and mail offline.
+* Server Buffer::               Making and editing virtual servers.
+* Getting News::                Reading USENET news with Gnus.
+* Getting Mail::                Reading your personal mail with Gnus.
+* Browsing the Web::            Getting messages from a plethora of Web sources.
+* Other Sources::               Reading directories, files, SOUP packets.
+* Combined Groups::             Combining groups into one group.
+* Gnus Unplugged::              Reading news and mail offline.
 @end menu
 
 
@@ -10360,13 +10522,13 @@ To enter the server buffer, use the @kbd{^}
 (@code{gnus-group-enter-server-mode}) command in the group buffer.
 
 @menu
-* Server Buffer Format::      You can customize the look of this buffer.
-* Server Commands::           Commands to manipulate servers.
-* Example Methods::           Examples server specifications.
-* Creating a Virtual Server:: An example session.
-* Server Variables::          Which variables to set.
-* Servers and Methods::       You can use server names as select methods.
-* Unavailable Servers::       Some servers you try to contact may be down.
+* Server Buffer Format::        You can customize the look of this buffer.
+* Server Commands::             Commands to manipulate servers.
+* Example Methods::             Examples server specifications.
+* Creating a Virtual Server::   An example session.
+* Server Variables::            Which variables to set.
+* Servers and Methods::         You can use server names as select methods.
+* Unavailable Servers::         Some servers you try to contact may be down.
 @end menu
 
 @vindex gnus-server-mode-hook
@@ -10719,8 +10881,8 @@ only two methods of getting news---it can read from an @sc{nntp} server,
 or it can read from a local spool.
 
 @menu
-* NNTP::               Reading news from an @sc{nntp} server.
-* News Spool::         Reading news from the local spool.
+* NNTP::                        Reading news from an @sc{nntp} server.
+* News Spool::                  Reading news from the local spool.
 @end menu
 
 
@@ -10990,9 +11152,9 @@ command.  You may use it as a server variable as follows:
 @end table
 
 @menu
-* Direct Functions::   Connecting directly to the server.
-* Indirect Functions:: Connecting indirectly to the server.
-* Common Variables::   Understood by several connection functions.
+* Direct Functions::            Connecting directly to the server.
+* Indirect Functions::          Connecting indirectly to the server.
+* Common Variables::            Understood by several connection functions.
 @end menu
 
 
@@ -11258,19 +11420,19 @@ Reading mail with a newsreader---isn't that just plain WeIrD? But of
 course.
 
 @menu
-* Mail in a Newsreader::         Important introductory notes.
-* Getting Started Reading Mail:: A simple cookbook example.
-* Splitting Mail::               How to create mail groups.
-* Mail Sources::                 How to tell Gnus where to get mail from.
-* Mail Backend Variables::       Variables for customizing mail handling.
-* Fancy Mail Splitting::         Gnus can do hairy splitting of incoming mail.
-* Group Mail Splitting::         Use group customize to drive mail splitting.
-* Incorporating Old Mail::       What about the old mail you have?
-* Expiring Mail::                Getting rid of unwanted mail.
-* Washing Mail::                 Removing gruft from the mail you get.
-* Duplicates::                   Dealing with duplicated mail.
-* Not Reading Mail::             Using mail backends for reading other files.
-* Choosing a Mail Backend::      Gnus can read a variety of mail formats.
+* Mail in a Newsreader::        Important introductory notes.
+* Getting Started Reading Mail::  A simple cookbook example.
+* Splitting Mail::              How to create mail groups.
+* Mail Sources::                How to tell Gnus where to get mail from.
+* Mail Backend Variables::      Variables for customizing mail handling.
+* Fancy Mail Splitting::        Gnus can do hairy splitting of incoming mail.
+* Group Mail Splitting::        Use group customize to drive mail splitting.
+* Incorporating Old Mail::      What about the old mail you have?
+* Expiring Mail::               Getting rid of unwanted mail.
+* Washing Mail::                Removing gruft from the mail you get.
+* Duplicates::                  Dealing with duplicated mail.
+* Not Reading Mail::            Using mail backends for reading other files.
+* Choosing a Mail Backend::     Gnus can read a variety of mail formats.
 @end menu
 
 
@@ -11350,8 +11512,7 @@ For instance, if you want to use @code{nnml} (which is a "one file per
 mail" backend), you could put the following in your @file{.gnus} file:
 
 @lisp
-(setq gnus-secondary-select-methods
-      '((nnml "private")))
+(setq gnus-secondary-select-methods '((nnml "")))
 @end lisp
 
 Now, the next time you start Gnus, this backend will be queried for new
@@ -11472,9 +11633,9 @@ POP mail server, from a procmail directory, or from a maildir, for
 instance.
 
 @menu
-* Mail Source Specifiers::       How to specify what a mail source is.
-* Mail Source Customization::    Some variables that influence things.
-* Fetching Mail::                Using the mail source specifiers.
+* Mail Source Specifiers::      How to specify what a mail source is.
+* Mail Source Customization::   Some variables that influence things.
+* Fetching Mail::               Using the mail source specifiers.
 @end menu
 
 
@@ -12207,9 +12368,10 @@ string into the subject line, you have to resort to manually moving the
 messages into the right group.  With this function, you only have to do
 it once per thread.
 
-To use this feature, you have to set @code{nnmail-treat-duplicates} to a
-non-nil value.  And then you can include
-@code{nnmail-split-fancy-with-parent} using the colon feature, like so:
+To use this feature, you have to set @code{nnmail-treat-duplicates} and
+@code{nnmail-cache-accepted-message-ids} to a non-nil value.  And then
+you can include @code{nnmail-split-fancy-with-parent} using the colon
+feature, like so:
 @lisp
 (setq nnmail-split-fancy
       '(| (: nnmail-split-fancy-with-parent)
@@ -13168,12 +13330,12 @@ Gnus has been getting a bit of a collection of backends for providing
 interfaces to these sources.
 
 @menu
-* Web Searches::          Creating groups from articles that match a string.
-* Slashdot::              Reading the Slashdot comments.
-* Ultimate::              The Ultimate Bulletin Board systems.
-* Web Archive::           Reading mailing list archived on web.
-* RSS::                   Reading RDF site summary.
-* Customizing w3::        Doing stuff to Emacs/w3 from Gnus.
+* Web Searches::                Creating groups from articles that match a string.
+* Slashdot::                    Reading the Slashdot comments.
+* Ultimate::                    The Ultimate Bulletin Board systems.
+* Web Archive::                 Reading mailing list archived on web.
+* RSS::                         Reading RDF site summary.
+* Customizing w3::              Doing stuff to Emacs/w3 from Gnus.
 @end menu
 
 All the web sources require Emacs/w3 and the url library to work.
@@ -13532,12 +13694,12 @@ below allow Gnus to view directories and files as if they were
 newsgroups.
 
 @menu
-* Directory Groups::      You can read a directory as if it was a newsgroup.
-* Anything Groups::       Dired?  Who needs dired?
-* Document Groups::       Single files can be the basis of a group.
-* SOUP::                  Reading @sc{soup} packets ``offline''.
-* Mail-To-News Gateways:: Posting articles via mail-to-news gateways.
-* IMAP::                  Using Gnus as a @sc{imap} client.
+* Directory Groups::            You can read a directory as if it was a newsgroup.
+* Anything Groups::             Dired?  Who needs dired?
+* Document Groups::             Single files can be the basis of a group.
+* SOUP::                        Reading @sc{soup} packets ``offline''.
+* Mail-To-News Gateways::       Posting articles via mail-to-news gateways.
+* IMAP::                        Using Gnus as a @sc{imap} client.
 @end menu
 
 
@@ -13941,9 +14103,9 @@ So you basically have a bipartite system---you use @code{nnsoup} for
 reading and Gnus for packing/sending these @sc{soup} packets.
 
 @menu
-* SOUP Commands::     Commands for creating and sending @sc{soup} packets
-* SOUP Groups::       A backend for reading @sc{soup} packets.
-* SOUP Replies::      How to enable @code{nnsoup} to take over mail and news.
+* SOUP Commands::               Commands for creating and sending @sc{soup} packets
+* SOUP Groups::                 A backend for reading @sc{soup} packets.
+* SOUP Replies::                How to enable @code{nnsoup} to take over mail and news.
 @end menu
 
 
@@ -14481,9 +14643,9 @@ variable @code{nntp-authinfo-file} for exact syntax; also see
 @end table
 
 @menu
-* Splitting in IMAP::     Splitting mail with nnimap.
-* Editing IMAP ACLs::     Limiting/enabling other users access to a mailbox.
-* Expunging mailboxes::   Equivalent of a "compress mailbox" button.
+* Splitting in IMAP::           Splitting mail with nnimap.
+* Editing IMAP ACLs::           Limiting/enabling other users access to a mailbox.
+* Expunging mailboxes::         Equivalent of a "compress mailbox" button.
 @end menu
 
 
@@ -14699,8 +14861,8 @@ Gnus allows combining a mixture of all the other group types into bigger
 groups.
 
 @menu
-* Virtual Groups::     Combining articles from many groups.
-* Kibozed Groups::     Looking through parts of the newsfeed for articles.
+* Virtual Groups::              Combining articles from many groups.
+* Kibozed Groups::              Looking through parts of the newsfeed for articles.
 @end menu
 
 
@@ -14882,16 +15044,16 @@ That's it.  Gnus is now an ``offline'' newsreader.
 Of course, to use it as such, you have to learn a few new commands.
 
 @menu
-* Agent Basics::           How it all is supposed to work.
-* Agent Categories::       How to tell the Gnus Agent what to download.
-* Agent Commands::         New commands for all the buffers.
-* Agent Expiry::           How to make old articles go away.
-* Agent and IMAP::         How to use the Agent with IMAP.
-* Outgoing Messages::      What happens when you post/mail something?
-* Agent Variables::        Customizing is fun.
-* Example Setup::          An example @file{.gnus.el} file for offline people.
-* Batching Agents::        How to fetch news from a @code{cron} job.
-* Agent Caveats::          What you think it'll do and what it does.
+* Agent Basics::                How it all is supposed to work.
+* Agent Categories::            How to tell the Gnus Agent what to download.
+* Agent Commands::              New commands for all the buffers.
+* Agent Expiry::                How to make old articles go away.
+* Agent and IMAP::              How to use the Agent with IMAP.
+* Outgoing Messages::           What happens when you post/mail something?
+* Agent Variables::             Customizing is fun.
+* Example Setup::               An example @file{.gnus.el} file for offline people.
+* Batching Agents::             How to fetch news from a @code{cron} job.
+* Agent Caveats::               What you think it'll do and what it does.
 @end menu
 
 
@@ -14982,9 +15144,9 @@ Groups that do not belong in any other category belong to the
 managing categories.
 
 @menu
-* Category Syntax::       What a category looks like.
-* Category Buffer::       A buffer for maintaining categories.
-* Category Variables::    Customize'r'Us.
+* Category Syntax::             What a category looks like.
+* Category Buffer::             A buffer for maintaining categories.
+* Category Variables::          Customize'r'Us.
 @end menu
 
 
@@ -15369,9 +15531,9 @@ toggles the plugged/unplugged state of the Gnus Agent.
 
 
 @menu
-* Group Agent Commands::
-* Summary Agent Commands::
-* Server Agent Commands::
+* Group Agent Commands::        
+* Summary Agent Commands::      
+* Server Agent Commands::       
 @end menu
 
 You can run a complete batch fetch from the command line with the
@@ -15459,6 +15621,12 @@ Toggle whether to download the article (@code{gnus-agent-toggle-mark}).
 @findex gnus-agent-catchup
 Mark all undownloaded articles as read (@code{gnus-agent-catchup}).
 
+@item J u
+@kindex J u (Agent Summary)
+@findex gnus-agent-summary-fetch-group
+Download all downloadable articles in the current group
+(@code{gnus-agent-summary-fetch-group}). 
+
 @end table
 
 
@@ -15710,22 +15878,23 @@ temporary and have not been used for, say, a week, will be removed
 silently to help keep the sizes of the score files down.
 
 @menu
-* Summary Score Commands::   Adding score entries for the current group.
-* Group Score Commands::     General score commands.
-* Score Variables::          Customize your scoring.  (My, what terminology).
-* Score File Format::        What a score file may contain.
-* Score File Editing::       You can edit score files by hand as well.
-* Adaptive Scoring::         Big Sister Gnus knows what you read.
-* Home Score File::          How to say where new score entries are to go.
-* Followups To Yourself::    Having Gnus notice when people answer you.
-* Scoring Tips::             How to score effectively.
-* Reverse Scoring::          That problem child of old is not problem.
-* Global Score Files::       Earth-spanning, ear-splitting score files.
-* Kill Files::               They are still here, but they can be ignored.
-* Converting Kill Files::    Translating kill files to score files.
-* GroupLens::                Getting predictions on what you like to read.
-* Advanced Scoring::         Using logical expressions to build score rules.
-* Score Decays::             It can be useful to let scores wither away.
+* Summary Score Commands::      Adding score entries for the current group.
+* Group Score Commands::        General score commands.
+* Score Variables::             Customize your scoring.  (My, what terminology).
+* Score File Format::           What a score file may contain.
+* Score File Editing::          You can edit score files by hand as well.
+* Adaptive Scoring::            Big Sister Gnus knows what you read.
+* Home Score File::             How to say where new score entries are to go.
+* Followups To Yourself::       Having Gnus notice when people answer you.
+* Scoring On Other Headers::    Scoring on non-standard headers.
+* Scoring Tips::                How to score effectively.
+* Reverse Scoring::             That problem child of old is not problem.
+* Global Score Files::          Earth-spanning, ear-splitting score files.
+* Kill Files::                  They are still here, but they can be ignored.
+* Converting Kill Files::       Translating kill files to score files.
+* GroupLens::                   Getting predictions on what you like to read.
+* Advanced Scoring::            Using logical expressions to build score rules.
+* Score Decays::                It can be useful to let scores wither away.
 @end menu
 
 
@@ -16789,6 +16958,39 @@ Whether it's the first two or first three characters that are ``yours''
 is system-dependent.
 
 
+@node Scoring On Other Headers
+@section Scoring On Other Headers
+@cindex scoring on other headers
+
+Gnus is quite fast when scoring the ``traditional''
+headers---@samp{From}, @samp{Subject} and so on.  However, scoring
+other headers requires writing a @code{head} scoring rule, which means
+that Gnus has to request every single article from the backend to find
+matches.  This takes a long time in big groups.
+
+Now, there's not much you can do about this for news groups, but for
+mail groups, you have greater control.  In the @pxref{To From
+Newsgroups} section of the manual, it's explained in greater detail what
+this mechanism does, but here's a cookbook example for @code{nnml} on
+how to allow scoring on the @samp{To} and @samp{Cc} headers.
+
+Put the following in your @file{.gnus.el} file. 
+
+@lisp
+(setq gnus-extra-headers '(To Cc Newsgroups Keywords)
+      nnmail-extra-headers gnus-extra-headers)
+@end lisp
+
+Restart Gnus and rebuild your @code{nnml} overview files with the
+@kbd{M-x nnml-generate-nov-databases} command.  This will take a long
+time if you have much mail.
+
+Now you can score on @samp{To} and @samp{Cc} as ``extra headers'' like
+so: @kbd{I e s p To RET <your name> RET}.
+
+See?  Simple.
+
+
 @node Scoring Tips
 @section Scoring Tips
 @cindex scoring tips
@@ -17069,10 +17271,10 @@ prediction to help you decide whether or not you want to read the
 article.
 
 @menu
-* Using GroupLens::          How to make Gnus use GroupLens.
-* Rating Articles::          Letting GroupLens know how you rate articles.
-* Displaying Predictions::   Displaying predictions given by GroupLens.
-* GroupLens Variables::      Customizing GroupLens.
+* Using GroupLens::             How to make Gnus use GroupLens.
+* Rating Articles::             Letting GroupLens know how you rate articles.
+* Displaying Predictions::      Displaying predictions given by GroupLens.
+* GroupLens Variables::         Customizing GroupLens.
 @end menu
 
 
@@ -17224,7 +17426,7 @@ Prediction +/- confidence.
 @item gnus-summary-grouplens-line-format
 The summary line format used in GroupLens-enhanced summary buffers.  It
 accepts the same specs as the normal summary line format (@pxref{Summary
-Buffer Lines}).  The default is @samp{%U%R%z%l%I%(%[%4L: %-20,20n%]%)
+Buffer Lines}).  The default is @samp{%U%R%z%l%I%(%[%4L: %-23,23n%]%)
 %s\n}.
 
 @item grouplens-bbb-host
@@ -17476,24 +17678,24 @@ four days, Gnus will decay the scores four times, for instance.
 @chapter Various
 
 @menu
-* Process/Prefix::             A convention used by many treatment commands.
-* Interactive::                Making Gnus ask you many questions.
-* Symbolic Prefixes::          How to supply some Gnus functions with options.
-* Formatting Variables::       You can specify what buffers should look like.
-* Window Layout::              Configuring the Gnus buffer windows.
-* Faces and Fonts::            How to change how faces look.
-* Compilation::                How to speed Gnus up.
-* Mode Lines::                 Displaying information in the mode lines.
-* Highlighting and Menus::     Making buffers look all nice and cozy.
-* Buttons::                    Get tendinitis in ten easy steps!
-* Daemons::                    Gnus can do things behind your back.
-* NoCeM::                      How to avoid spam and other fatty foods.
-* Undo::                       Some actions can be undone.
-* Moderation::                 What to do if you're a moderator.
-* XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
-* Fuzzy Matching::             What's the big fuzz?
-* Thwarting Email Spam::       A how-to on avoiding unsolicited commercial email.
-* Various Various::            Things that are really various.
+* Process/Prefix::              A convention used by many treatment commands.
+* Interactive::                 Making Gnus ask you many questions.
+* Symbolic Prefixes::           How to supply some Gnus functions with options.
+* Formatting Variables::        You can specify what buffers should look like.
+* Window Layout::               Configuring the Gnus buffer windows.
+* Faces and Fonts::             How to change how faces look.
+* Compilation::                 How to speed Gnus up.
+* Mode Lines::                  Displaying information in the mode lines.
+* Highlighting and Menus::      Making buffers look all nice and cozy.
+* Buttons::                     Get tendinitis in ten easy steps!
+* Daemons::                     Gnus can do things behind your back.
+* NoCeM::                       How to avoid spam and other fatty foods.
+* Undo::                        Some actions can be undone.
+* Moderation::                  What to do if you're a moderator.
+* XEmacs Enhancements::         There are more pictures and stuff under XEmacs.
+* Fuzzy Matching::              What's the big fuzz?
+* Thwarting Email Spam::        A how-to on avoiding unsolicited commercial email.
+* Various Various::             Things that are really various.
 @end menu
 
 
@@ -17632,11 +17834,14 @@ Here's an example format spec (from the group buffer): @samp{%M%S%5y:
 lots of percentages everywhere.
 
 @menu
-* Formatting Basics::     A formatting variable is basically a format string.
-* Mode Line Formatting::  Some rules about mode line formatting variables.
-* Advanced Formatting::   Modifying output in various ways.
-* User-Defined Specs::    Having Gnus call your own functions.
-* Formatting Fonts::      Making the formatting look colorful and nice.
+* Formatting Basics::           A formatting variable is basically a format string.
+* Mode Line Formatting::        Some rules about mode line formatting variables.
+* Advanced Formatting::         Modifying output in various ways.
+* User-Defined Specs::          Having Gnus call your own functions.
+* Formatting Fonts::            Making the formatting look colorful and nice.
+* Positioning Point::           Moving point to a position after an operation.
+* Tabulation::                  Tabulating your output.
+* Wide Characters::             Dealing with wide characters.
 @end menu
 
 Currently Gnus uses the following formatting variables:
@@ -17839,6 +18044,62 @@ and extremely vulgar displays.  Have fun!
 Note that the @samp{%(} specs (and friends) do not make any sense on the
 mode-line variables.
 
+@node Positioning Point
+@subsection Positioning Point
+
+Gnus usually moves point to a pre-defined place on each line in most
+buffers.  By default, point move to the first colon character on the
+line.  You can customize this behaviour in three different ways.
+
+You can move the colon character to somewhere else on the line.
+
+@findex gnus-goto-colon
+You can redefine the function that moves the point to the colon.  The
+function is called @code{gnus-goto-colon}.
+
+But perhaps the most convenient way to deal with this, if you don't want
+to have a colon in your line, is to use the @samp{%C} specifier.  If you
+put a @samp{%C} somewhere in your format line definition, Gnus will
+place point there.
+
+
+@node Tabulation
+@subsection Tabulation
+
+You can usually line up your displays by padding and cutting your
+strings.  However, when combining various strings of different size, it
+can often be more convenient to just output the strings, and then worry
+about lining up the following text afterwards.
+
+To do that, Gnus supplies tabulator specs--@samp{%=}.  There are two
+different types---@dfn{hard tabulators} and @dfn{soft tabulators}.
+
+@samp{%50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, nothing will be inserted.
+This is the soft tabulator.
+
+@samp{%-50=} will insert space characters to pad the line up to column
+50.  If the text is already past column 50, the excess text past column
+50 will be removed.  This is the hard tabulator.
+
+
+@node Wide Characters
+@subsection Wide Characters
+
+Proportional fonts in most countries have characters of the same width.
+Some countries, however, use Latin characters mixed with wider
+characters---most notable East Asian countries.
+
+The problem is that when formatting, Gnus assumes that if a string is 10
+characters wide, it'll be 10 Latin characters wide on the screen.  In
+these coutries, that's not true.
+
+@vindex gnus-use-correct-string-widths
+To help fix this, you can set @code{gnus-use-correct-string-widths} to
+@code{t}.  This makes buffer generation slower, but the results will be
+prettieer.  The default value is @code{nil}.
+
+
 
 @node Window Layout
 @section Window Layout
@@ -18668,10 +18929,10 @@ XEmacs is able to display pictures and stuff, so Gnus has taken
 advantage of that.
 
 @menu
-* Picons::    How to display pictures of what your reading.
-* Smileys::   Show all those happy faces the way they were meant to be shown.
-* Toolbar::   Click'n'drool.
-* XVarious::  Other XEmacsy Gnusey variables.
+* Picons::                      How to display pictures of what your reading.
+* Smileys::                     Show all those happy faces the way they were meant to be shown.
+* Toolbar::                     Click'n'drool.
+* XVarious::                    Other XEmacsy Gnusey variables.
 @end menu
 
 
@@ -18689,11 +18950,11 @@ good way to do so.  Its also a great way to impress people staring
 over your shoulder as you read news.
 
 @menu
-* Picon Basics::           What are picons and How do I get them.
-* Picon Requirements::     Don't go further if you aren't using XEmacs.
-* Easy Picons::            Displaying Picons---the easy way.
-* Hard Picons::            The way you should do it.  You'll learn something.
-* Picon Useless Configuration:: Other variables you can trash/tweak/munge/play with.
+* Picon Basics::                What are picons and How do I get them.
+* Picon Requirements::          Don't go further if you aren't using XEmacs.
+* Easy Picons::                 Displaying Picons---the easy way.
+* Hard Picons::                 The way you should do it.  You'll learn something.
+* Picon Useless Configuration::  Other variables you can trash/tweak/munge/play with.
 @end menu
 
 
@@ -19334,14 +19595,14 @@ but at the common table.@*
 @chapter Appendices
 
 @menu
-* History::                        How Gnus got where it is today.
-* On Writing Manuals::             Why this is not a beginner's guide.
-* Terminology::                    We use really difficult, like, words here.
-* Customization::                  Tailoring Gnus to your needs.
-* Troubleshooting::                What you might try if things do not work.
-* Gnus Reference Guide::           Rilly, rilly technical stuff.
-* Emacs for Heathens::             A short introduction to Emacsian terms.
-* Frequently Asked Questions::     A question-and-answer session.
+* History::                     How Gnus got where it is today.
+* On Writing Manuals::          Why this is not a beginner's guide.
+* Terminology::                 We use really difficult, like, words here.
+* Customization::               Tailoring Gnus to your needs.
+* Troubleshooting::             What you might try if things do not work.
+* Gnus Reference Guide::        Rilly, rilly technical stuff.
+* Emacs for Heathens::          A short introduction to Emacsian terms.
+* Frequently Asked Questions::
 @end menu
 
 
@@ -19371,15 +19632,15 @@ renamed it back again to ``Gnus''.  But in mixed case.  ``Gnus'' vs.
 ``@sc{gnus}''.  New vs. old.
 
 @menu
-* Gnus Versions::       What Gnus versions have been released.
-* Other Gnus Versions:: Other Gnus versions that also have been released.
-* Why?::                What's the point of Gnus?
-* Compatibility::       Just how compatible is Gnus with @sc{gnus}?
-* Conformity::          Gnus tries to conform to all standards.
-* Emacsen::             Gnus can be run on a few modern Emacsen.
-* Gnus Development::    How Gnus is developed.
-* Contributors::        Oodles of people.
-* New Features::        Pointers to some of the new stuff in Gnus.
+* Gnus Versions::               What Gnus versions have been released.
+* Other Gnus Versions::         Other Gnus versions that also have been released.
+* Why?::                        What's the point of Gnus?
+* Compatibility::               Just how compatible is Gnus with @sc{gnus}?
+* Conformity::                  Gnus tries to conform to all standards.
+* Emacsen::                     Gnus can be run on a few modern Emacsen.
+* Gnus Development::            How Gnus is developed.
+* Contributors::                Oodles of people.
+* New Features::                Pointers to some of the new stuff in Gnus.
 @end menu
 
 
@@ -19975,11 +20236,11 @@ actually are people who are using Gnus.  Who'd'a thunk it!
 @cindex new features
 
 @menu
-* ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
-* September Gnus::     The Thing Formally Known As Gnus 5.2/5.3.
-* Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6/5.7.
-* Pterodactyl Gnus::   Pentad also starts with P, AKA Gnus 5.8/5.9.
+* ding Gnus::                   New things in Gnus 5.0/5.1, the first new Gnus.
+* September Gnus::              The Thing Formally Known As Gnus 5.2/5.3.
+* Red Gnus::                    Third time best---Gnus 5.4/5.5.
+* Quassia Gnus::                Two times two is four, or Gnus 5.6/5.7.
+* Pterodactyl Gnus::            Pentad also starts with P, AKA Gnus 5.8/5.9.
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
@@ -20684,7 +20945,7 @@ again, to keep up with ever-changing layouts.
 @iftex
 
 @page
-@node The Manual
+@node History
 @section The Manual
 @cindex colophon
 @cindex manual
@@ -20966,10 +21227,10 @@ section is designed to give general pointers on how to customize Gnus
 for some quite common situations.
 
 @menu
-* Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
-* Slow Terminal Connection::  You run a remote Emacs.
-* Little Disk Space::         You feel that having large setup files is icky.
-* Slow Machine::              You feel like buying a faster machine.
+* Slow/Expensive Connection::   You run a local Emacs and get the news elsewhere.
+* Slow Terminal Connection::    You run a remote Emacs.
+* Little Disk Space::           You feel that having large setup files is icky.
+* Slow Machine::                You feel like buying a faster machine.
 @end menu
 
 
@@ -21184,15 +21445,15 @@ backends (this is written in stone), the format of the score files
 and general methods of operation.
 
 @menu
-* Gnus Utility Functions::   Common functions and variable to use.
-* Backend Interface::        How Gnus communicates with the servers.
-* Score File Syntax::        A BNF definition of the score file standard.
-* Headers::                  How Gnus stores headers internally.
-* Ranges::                   A handy format for storing mucho numbers.
-* Group Info::               The group info format.
-* Extended Interactive::     Symbolic prefixes and stuff.
-* Emacs/XEmacs Code::        Gnus can be run under all modern Emacsen.
-* Various File Formats::     Formats of files that Gnus use.
+* Gnus Utility Functions::      Common functions and variable to use.
+* Backend Interface::           How Gnus communicates with the servers.
+* Score File Syntax::           A BNF definition of the score file standard.
+* Headers::                     How Gnus stores headers internally.
+* Ranges::                      A handy format for storing mucho numbers.
+* Group Info::                  The group info format.
+* Extended Interactive::        Symbolic prefixes and stuff.
+* Emacs/XEmacs Code::           Gnus can be run under all modern Emacsen.
+* Various File Formats::        Formats of files that Gnus use.
 @end menu
 
 
@@ -21393,12 +21654,12 @@ In the examples and definitions I will refer to the imaginary backend
 @cindex @code{nnchoke}
 
 @menu
-* Required Backend Functions::        Functions that must be implemented.
-* Optional Backend Functions::        Functions that need not be implemented.
-* Error Messaging::                   How to get messages and report errors.
-* Writing New Backends::              Extending old backends.
-* Hooking New Backends Into Gnus::    What has to be done on the Gnus end.
-* Mail-like Backends::                Some tips on mail backends.
+* Required Backend Functions::  Functions that must be implemented.
+* Optional Backend Functions::  Functions that need not be implemented.
+* Error Messaging::             How to get messages and report errors.
+* Writing New Backends::        Extending old backends.
+* Hooking New Backends Into Gnus::  What has to be done on the Gnus end.
+* Mail-like Backends::          Some tips on mail backends.
 @end menu
 
 
@@ -21683,14 +21944,13 @@ ACTION is a list of mark setting requests, having this format:
 @end example
 
 RANGE is a range of articles you wish to update marks on.  ACTION is
-@code{set}, @code{add} or @code{del}, respectively used for removing all
-existing marks and setting them as specified, adding (preserving the
-marks not mentioned) mark and removing (preserving the marks not
-mentioned) marks.  MARK is a list of marks; where each mark is a symbol.
-Currently used marks are @code{read}, @code{tick}, @code{reply},
-@code{expire}, @code{killed}, @code{dormant}, @code{save},
-@code{download}, @code{unsend}, @code{forward} and @code{recent}, 
-but your backend should, if possible, not limit itself to these.
+@code{add} or @code{del}, used to add marks or remove marks
+(preserving all marks not mentioned).  MARK is a list of marks; where
+each mark is a symbol.  Currently used marks are @code{read},
+@code{tick}, @code{reply}, @code{expire}, @code{killed},
+@code{dormant}, @code{save}, @code{download}, @code{unsend},
+@code{forward} and @code{recent}, but your backend should, if
+possible, not limit itself to these.
 
 Given contradictory actions, the last action in the list should be the
 effective one.  That is, if your action contains a request to add the
@@ -22547,8 +22807,8 @@ hit these indirections impose on Gnus under XEmacs should be slight.
 @subsection Various File Formats
 
 @menu
-* Active File Format::      Information on articles and groups available.
-* Newsgroups File Format::  Group descriptions.
+* Active File Format::          Information on articles and groups available.
+* Newsgroups File Format::      Group descriptions.
 @end menu
 
 
@@ -22619,8 +22879,8 @@ you are already familiar with Emacs, just ignore this and go fondle your
 cat instead.
 
 @menu
-* Keystrokes::      Entering text and executing commands.
-* Emacs Lisp::      The built-in Emacs programming language.
+* Keystrokes::                  Entering text and executing commands.
+* Emacs Lisp::                  The built-in Emacs programming language.
 @end menu