Synch with Oort Gnus.
authoryamaoka <yamaoka>
Mon, 2 Apr 2001 02:06:54 +0000 (02:06 +0000)
committeryamaoka <yamaoka>
Mon, 2 Apr 2001 02:06:54 +0000 (02:06 +0000)
18 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-msg.el
lisp/gnus-score.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-uu.el
lisp/gnus-win.el
lisp/gnus.el
lisp/message.el
lisp/mm-decode.el
lisp/qp.el
sample.lpath.el
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi

index a2b189e..bc9fa3c 100644 (file)
@@ -1,3 +1,119 @@
+2001-04-01 00:37:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-score.el (gnus-score-orphans): Clean up.
+
+       * gnus-win.el (gnus-remove-some-windows): Leave one Gnus window. 
+
+       * gnus-sum.el (gnus-summary-exit): Kill the summary buffer a bit
+       later. 
+
+       * gnus-start.el (gnus-close-all-servers): Find the right items to
+       close. 
+
+       * qp.el (quoted-printable-decode-region): Just message
+       malformation; don't quit.
+
+2001-03-31 21:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+       From Gerd Moellmann <gerd@gnu.org>.
+
+       * gnus.el (gnus-interactive): A typo.
+
+2001-03-26  Juanma Barranquero  <lektu@uol.com.br>
+       Committed by ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-util.el (gnus-delete-alist): Declare it as an alias of
+       `assq-delete-all', if that function exists; otherwise use the old
+       definition. Documentation changed to match the one in
+       `assq-delete-all'.
+       
+2001-04-01 00:37:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-start.el (gnus-close-all-servers): New function.
+
+       * gnus-srvr.el (gnus-server-close-all-servers): Clean up.
+       (gnus-server-remove-denials): Clean up.
+
+       * gnus-sum.el (gnus-summary-sort-by-original): New command and
+       keystroke. 
+
+2001-03-31 02:56:55  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-send-news): Message where we are sending.
+       (message-send-mail): Ditto.
+
+       * gnus.el (gnus-server-string): New function.
+
+       * gnus-sum.el (gnus-summary-up-thread): Doc fix.
+
+       * mm-decode.el (mm-default-directory): Customized.
+       (mm-tmp-directory): Ditto.
+
+       * gnus-sum.el (gnus-summary-catchup-and-exit): Doc fix. 
+       (gnus-get-newsgroup-headers): Return -1 for articles without Lines
+       or Chars. 
+       (gnus-summary-line-format-alist): ?l is now a string.
+       (gnus-summary-prepare-threads): Output ? for unknown lines.
+       (gnus-summary-insert-line): Ditto.
+       (gnus-summary-print-article): Unbalanced parentheses.
+
+       * gnus-msg.el (gnus-inews-do-gcc): Check group to allow it to find
+       out whether new stuff has arrived.
+
+2001-03-31 02:14:38  Alan Shutko  <ats@acm.org>
+
+       * gnus-sum.el: Let printing work on ttys on Emacs.
+
+2001-03-31 01:11:14  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-msg.el (gnus-post-news): Add an empty Newsgroups header
+       when forcing news.
+
+       * gnus-sum.el (gnus-summary-mark-article-as-replied): Make into a
+       command. 
+
+2001-03-31 01:04:54  Francis Litterio  <franl-removethis@world.omitthis.std.com>
+
+       * message.el (message-set-auto-save-file-name): Don't use
+       asterisks under nt.
+
+2001-03-31 00:03:42  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-msg.el (gnus-inews-insert-draft-meta-information): Allow
+       lists of articles.
+
+       * gnus-uu.el (gnus-uu-digest-mail-forward): Mark as forwarded.
+
+       * gnus-msg.el (gnus-put-message): Clean up.
+       (gnus-summary-reply): Mark all replied-to articles as replied to.
+       (gnus-inews-add-send-actions): Also mark as forwarded.
+       (gnus-summary-mail-forward): Mark as forwarded.  
+
+       * gnus-sum.el (gnus-summary-mark-article-as-replied): Take a list
+       of articles. 
+       (gnus-summary-mark-article-as-forwarded): Ditto.
+
+       * gnus-msg.el (gnus-summary-resend-message): Mark article as
+       forwarded. 
+       (gnus-summary-mail-forward): Clean up.
+
+       * gnus.el (gnus-article-mark-lists): Added forward.
+
+       * gnus-sum.el (gnus-forwarded-mark): New variable.
+       (gnus-summary-prepare-threads): Use it.
+       (gnus-summary-update-secondary-mark): Ditto.
+       (gnus-newsgroup-forwarded): New variable.
+
+2001-03-30 23:13:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-msg.el (gnus-summary-reply): Allow very wide replies.
+       (gnus-summary-very-wide-reply): New command and keystroke.
+       (gnus-summary-very-wide-reply-with-original): Ditto.
+
+       * gnus-score.el (gnus-adaptive-word-length-limit): New variable. 
+       (gnus-score-adaptive): Use it.
+
+       * gnus-start.el (gnus-get-unread-articles): Clean up.
+
 2001-03-21 20:00:43  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * nnultimate.el (nnultimate-retrieve-headers): Work for other
index 424476f..8928a7d 100644 (file)
@@ -2155,34 +2155,6 @@ always hide."
                    (looking-at "[ \t]*$"))
          (gnus-delete-line))))))
 
-(defun article-replace-with-quoted-text ()
-  "Replace the entire article with the quoted text in the article."
-  (interactive)
-  (unless gnus-cite-prefix-alist
-    (error "No quoted text in the article"))
-  (gnus-summary-show-article t)
-  (save-excursion
-    (set-buffer gnus-article-buffer)
-    (gnus-cite-parse-maybe t)
-    (let ((prefix (concat "^" (caar gnus-cite-prefix-alist)))
-         (buffer-read-only nil)
-         (body nil))
-      (dolist (line (sort (copy-sequence (cdar gnus-cite-prefix-alist)) '<))
-       (save-excursion
-         (set-buffer gnus-original-article-buffer)
-         (goto-char (point-min))
-         (forward-line (1- line))
-         (push (buffer-substring (point) (progn (forward-line 1) (point)))
-               body)))
-      (article-goto-body)
-      (forward-line -1)
-      (delete-region (point) (point-max))
-      (mapcar #'insert (mapcar #'string-as-unibyte (nreverse body)))
-      (goto-char (point-min))
-      (while (re-search-forward prefix nil t)
-       (replace-match "" t t))
-      (gnus-article-prepare-display))))
-
 (defun article-narrow-to-head ()
   "Narrow the buffer to the head of the message.
 Point is left at the beginning of the narrowed-to region."
@@ -3117,7 +3089,6 @@ If variable `gnus-use-long-file-name' is non-nil, it is
      article-strip-trailing-space
      article-strip-blank-lines
      article-strip-all-blank-lines
-     article-replace-with-quoted-text
      article-date-local
      article-date-english
      article-date-iso8601
index f0a4725..0b2a392 100644 (file)
@@ -206,6 +206,8 @@ Thank you for your help in stamping out bugs.
   "R" gnus-summary-reply-with-original
   "w" gnus-summary-wide-reply
   "W" gnus-summary-wide-reply-with-original
+  "v" gnus-summary-very-wide-reply
+  "V" gnus-summary-very-wide-reply-with-original
   "n" gnus-summary-followup-to-mail
   "N" gnus-summary-followup-to-mail-with-original
   "m" gnus-summary-mail-other-window
@@ -231,7 +233,7 @@ Thank you for your help in stamping out bugs.
        (group (make-symbol "gnus-setup-message-group")))
     `(let ((,winconf (current-window-configuration))
           (,buffer (buffer-name (current-buffer)))
-          (,article (and gnus-article-reply (gnus-summary-article-number)))
+          (,article gnus-article-reply)
           (,group gnus-newsgroup-name)
           (message-header-setup-hook
            (copy-sequence message-header-setup-hook))
@@ -246,7 +248,7 @@ Thank you for your help in stamping out bugs.
        (unwind-protect
           (progn
             ,@forms)
-        (gnus-inews-add-send-actions ,winconf ,buffer ,article)
+        (gnus-inews-add-send-actions ,winconf ,buffer ,article ,config)
         (gnus-inews-insert-draft-meta-information ,group ,article)
         (setq gnus-message-buffer (current-buffer))
         (set (make-local-variable 'gnus-message-group-art)
@@ -264,7 +266,11 @@ Thank you for your help in stamping out bugs.
               (not (message-fetch-field gnus-draft-meta-information-header)))
       (goto-char (point-min))
       (insert gnus-draft-meta-information-header ": (\"" group "\" "
-             (if article (number-to-string article) "\"\"") ")\n"))))
+             (if article (number-to-string
+                          (if (listp article)
+                              (car article)
+                            article)) "\"\"")
+             ")\n"))))
 
 ;;;###autoload
 (defun gnus-msg-mail (&optional to subject other-headers continue
@@ -319,7 +325,7 @@ Gcc: header for archiving purposes."
                         (symbol-value (car elem))))
            (throw 'found (cons (cadr elem) (caddr elem)))))))))
 
-(defun gnus-inews-add-send-actions (winconf buffer article)
+(defun gnus-inews-add-send-actions (winconf buffer article &optional config)
   (make-local-hook 'message-sent-hook)
   (add-hook 'message-sent-hook (if gnus-agent 'gnus-agent-possibly-do-gcc
                                 'gnus-inews-do-gcc) nil t)
@@ -338,7 +344,9 @@ Gcc: header for archiving purposes."
       (save-excursion
        (set-buffer ,buffer)
        ,(when article
-          `(gnus-summary-mark-article-as-replied ,article))))
+          (if (eq config 'forward)
+              `(gnus-summary-mark-article-as-forwarded ',article)
+            `(gnus-summary-mark-article-as-replied ',article)))))
    'send))
 
 (put 'gnus-setup-message 'lisp-indent-function 1)
@@ -584,7 +592,7 @@ header line with the old Message-ID."
                            force-news)
   (when article-buffer
     (gnus-copy-article-buffer))
-  (let ((gnus-article-reply article-buffer)
+  (let ((gnus-article-reply (and article-buffer (gnus-summary-article-number)))
        (add-to-list gnus-add-to-list))
     (gnus-setup-message (cond (yank 'reply-yank)
                              (article-buffer 'reply)
@@ -619,7 +627,7 @@ header line with the old Message-ID."
                (message-news (or to-group group))
              (set-buffer gnus-article-copy)
              (gnus-msg-treat-broken-reply-to)
-             (message-followup (if (or newsgroup-p force-news) nil to-group)))
+             (message-followup (if (or newsgroup-p force-news) "" to-group)))
          ;; The is mail.
          (if post
              (progn
@@ -768,21 +776,39 @@ MAX-COLUMN the optional second argument if it is specified, the return value
 
 ;;; Mail reply commands of Gnus summary mode
 
-(defun gnus-summary-reply (&optional yank wide)
-  "Start composing a reply mail to the current message.
+(defun gnus-summary-reply (&optional yank wide very-wide)
+  "Start composing a mail reply to the current message.
 If prefix argument YANK is non-nil, the original article is yanked
-automatically."
+automatically.
+If WIDE, make a wide reply.
+If VERY-WIDE, make a very wide reply."
   (interactive
    (list (and current-prefix-arg
              (gnus-summary-work-articles 1))))
   ;; Stripping headers should be specified with mail-yank-ignored-headers.
   (when yank
     (gnus-summary-goto-subject (car yank)))
-  (let ((gnus-article-reply t))
+  (let ((gnus-article-reply (or yank (gnus-summary-article-number)))
+       (headers ""))
     (gnus-setup-message (if yank 'reply-yank 'reply)
-      (gnus-summary-select-article)
+      (if (not very-wide)
+         (gnus-summary-select-article)
+       (dolist (article very-wide)
+         (gnus-summary-select-article nil nil nil article)
+         (save-excursion
+           (set-buffer (gnus-copy-article-buffer))
+           (gnus-msg-treat-broken-reply-to)
+           (save-restriction
+             (message-narrow-to-head)
+             (setq headers (concat headers (buffer-string)))))))
       (set-buffer (gnus-copy-article-buffer))
       (gnus-msg-treat-broken-reply-to)
+      (save-restriction
+       (message-narrow-to-head)
+       (when very-wide
+         (erase-buffer)
+         (insert headers))
+       (goto-char (point-max)))
       (message-reply nil wide)
       (when yank
        (gnus-inews-yank-articles yank)))))
@@ -808,6 +834,22 @@ The original article will be yanked."
   (interactive "P")
   (gnus-summary-reply-with-original n t))
 
+(defun gnus-summary-very-wide-reply (&optional yank)
+  "Start composing a very wide reply mail to the current message.
+If prefix argument YANK is non-nil, the original article is yanked
+automatically."
+  (interactive
+   (list (and current-prefix-arg
+             (gnus-summary-work-articles 1))))
+  (gnus-summary-reply yank t (gnus-summary-work-articles yank)))
+
+(defun gnus-summary-very-wide-reply-with-original (n)
+  "Start composing a very wide reply mail to the current message.
+The original article will be yanked."
+  (interactive "P")
+  (gnus-summary-reply
+   (gnus-summary-work-articles n) t (gnus-summary-work-articles n)))
+
 (defun gnus-summary-mail-forward (&optional full-headers post)
   "Forward the current message to another user.
 If FULL-HEADERS (the prefix), include full headers when forwarding."
@@ -891,7 +933,8 @@ forward those articles instead."
       (gnus-summary-select-article nil nil nil article)
       (save-excursion
        (set-buffer gnus-original-article-buffer)
-       (message-resend address)))))
+       (message-resend address))
+      (gnus-summary-mark-article-as-forwarded article))))
 
 (defun gnus-summary-post-forward (&optional full-headers)
   "Forward the current article to a newsgroup.
@@ -1001,35 +1044,32 @@ The current group name will be inserted at \"%s\".")
   (let ((reply gnus-article-reply)
        (winconf gnus-prev-winconf)
        (group gnus-newsgroup-name))
+    (unless (and group
+                (not (gnus-group-read-only-p group)))
+      (setq group (read-string "Put in group: " nil (gnus-writable-groups))))
 
-    (or (and group (not (gnus-group-read-only-p group)))
-       (setq group (read-string "Put in group: " nil
-                                (gnus-writable-groups))))
     (when (gnus-gethash group gnus-newsrc-hashtb)
       (error "No such group: %s" group))
-
     (save-excursion
       (save-restriction
        (widen)
        (message-narrow-to-headers)
-       (let (gnus-deletable-headers)
-         (if (message-news-p)
-             (message-generate-headers message-required-news-headers)
-           (message-generate-headers message-required-mail-headers)))
+       (let ((gnus-deletable-headers nil))
+         (message-generate-headers
+          (if (message-news-p)
+              message-required-news-headers
+            message-required-mail-headers)))
        (goto-char (point-max))
        (insert "Gcc: " group "\n")
        (widen)))
-
     (gnus-inews-do-gcc)
-
-    (when (get-buffer gnus-group-buffer)
-      (when (gnus-buffer-exists-p (car-safe reply))
-       (set-buffer (car reply))
-       (and (cdr reply)
-            (gnus-summary-mark-article-as-replied
-             (cdr reply))))
-      (when winconf
-       (set-window-configuration winconf)))))
+    (when (and (get-buffer gnus-group-buffer)
+              (gnus-buffer-exists-p (car-safe reply))
+              (cdr reply))
+      (set-buffer (car reply))
+      (gnus-summary-mark-article-as-replied (cdr reply)))
+    (when winconf
+      (set-window-configuration winconf))))
 
 (defun gnus-article-mail (yank)
   "Send a reply to the address near point.
@@ -1248,7 +1288,7 @@ this is a reply."
            (while (setq group (pop groups))
              (gnus-check-server
               (setq method (gnus-inews-group-method group)))
-             (unless (gnus-request-group group t method)
+             (unless (gnus-request-group group nil method)
                (gnus-request-create-group group method))
              (save-excursion
                (nnheader-set-temp-buffer " *acc*")
index 3947cfd..8abdfac 100644 (file)
@@ -233,6 +233,11 @@ This variable allows the same syntax as `gnus-home-score-file'."
                                             (symbol :tag "other"))
                                     (integer :tag "Score"))))))
 
+(defcustom gnus-adaptive-word-length-limit nil
+  "*Words of a length lesser than this limit will be ignored when doing adaptive scoring."
+  :group 'gnus-score-adapt
+  :type 'integer)
+
 (defcustom gnus-ignored-adaptive-words nil
   "List of words to be ignored when doing adaptive word scoring."
   :group 'gnus-score-adapt
@@ -1551,21 +1556,19 @@ A root is an article with no references.  An orphan is an article
 which has references, but is not connected via its references to a
 root article.  This function finds all the orphans, and adjusts their
 score in GNUS-NEWSGROUP-SCORED by SCORE."
-  (let ((threads (gnus-make-threads)))
-    ;; gnus-make-threads produces a list, where each entry is a "thread"
-    ;; as described in the gnus-score-lower-thread docs.  This function
-    ;; will be called again (after limiting has been done) if the display
-    ;; is threaded.  It would be nice to somehow save this info and use
-    ;; it later.
-    (while threads
-      (let* ((thread (car threads))
-            (id (aref (car thread) gnus-score-index)))
-       ;; If the parent of the thread is not a root, lower the score of
-       ;; it and its descendants.  Note that some roots seem to satisfy
-       ;; (eq id nil) and some (eq id "");  not sure why.
-       (if (and id (not (string= id "")))
-           (gnus-score-lower-thread thread score)))
-      (setq threads (cdr threads)))))
+  ;; gnus-make-threads produces a list, where each entry is a "thread"
+  ;; as described in the gnus-score-lower-thread docs.  This function
+  ;; will be called again (after limiting has been done) if the display
+  ;; is threaded.  It would be nice to somehow save this info and use
+  ;; it later.
+  (dolist (thread (gnus-make-threads))
+    (let ((id (aref (car thread) gnus-score-index)))
+      ;; If the parent of the thread is not a root, lower the score of
+      ;; it and its descendants.  Note that some roots seem to satisfy
+      ;; (eq id nil) and some (eq id "");  not sure why.
+      (when (and id
+                (not (string= id "")))
+       (gnus-score-lower-thread thread score)))))
 
 (defun gnus-score-integer (scores header now expire &optional trace)
   (let ((gnus-score-index (nth 1 (assoc header gnus-header-index)))
@@ -2310,11 +2313,14 @@ score in GNUS-NEWSGROUP-SCORED by SCORE."
                      ;; Put the word and score into the hashtb.
                      (setq val (gnus-gethash (setq word (match-string 0))
                                              hashtb))
-                     (setq val (+ score (or val 0)))
-                     (if (and gnus-adaptive-word-minimum
-                              (< val gnus-adaptive-word-minimum))
-                         (setq val gnus-adaptive-word-minimum))
-                     (gnus-sethash word val hashtb))
+                     (when (or (not gnus-adaptive-word-length-limit)
+                               (> (length word)
+                                  gnus-adaptive-word-length-limit))
+                       (setq val (+ score (or val 0)))
+                       (if (and gnus-adaptive-word-minimum
+                                (< val gnus-adaptive-word-minimum))
+                           (setq val gnus-adaptive-word-minimum))
+                       (gnus-sethash word val hashtb)))
                    (erase-buffer))))
            (set-syntax-table syntab))
          ;; Make all the ignorable words ignored.
index 896464d..9d5648f 100644 (file)
@@ -407,9 +407,8 @@ The following commands are available:
 (defun gnus-server-close-all-servers ()
   "Close all servers."
   (interactive)
-  (let ((servers gnus-inserted-opened-servers))
-    (while servers
-      (gnus-server-close-server (car (pop servers))))))
+  (dolist (server gnus-inserted-opened-servers)
+    (gnus-server-close-server (car server))))
 
 (defun gnus-server-deny-server (server)
   "Make sure SERVER will never be attempted opened."
@@ -425,11 +424,9 @@ The following commands are available:
 (defun gnus-server-remove-denials ()
   "Make all denied servers into closed servers."
   (interactive)
-  (let ((servers gnus-opened-servers))
-    (while servers
-      (when (eq (nth 1 (car servers)) 'denied)
-       (setcar (nthcdr 1 (car servers)) 'closed))
-      (setq servers (cdr servers))))
+  (dolist (server gnus-opened-servers)
+    (when (eq (nth 1 server) 'denied)
+      (setcar (nthcdr 1 server) 'closed)))
   (gnus-server-list-servers))
 
 (defun gnus-server-copy-server (from to)
index 62cbfdd..06dbe70 100644 (file)
@@ -625,6 +625,12 @@ the first newsgroup."
          (setq variables (cdr variables))))
       (setq files (cdr files)))))
 
+(defun gnus-close-all-servers ()
+  "Close all servers."
+  (interactive)
+  (dolist (server gnus-opened-servers)
+    (gnus-close-server (car server))))
+
 (defun gnus-clear-system ()
   "Clear all variables and buffers."
   ;; Clear gnus variables.
@@ -1558,7 +1564,7 @@ newsgroup."
                  gnus-activate-foreign-newsgroups)
                 (t 0))
           level))
-        scanned-methods info group active method retrievegroups)
+        scanned-methods info group active method retrieve-groups)
     (gnus-message 5 "Checking new news...")
 
     (while newsrc
@@ -1605,10 +1611,10 @@ newsgroup."
          (if (gnus-check-backend-function 'retrieve-groups group)
              ;; if server support gnus-retrieve-groups we push
              ;; the group onto retrievegroups for later checking
-             (if (assoc method retrievegroups)
-                 (setcdr (assoc method retrievegroups)
-                         (cons group (cdr (assoc method retrievegroups))))
-               (push (list method group) retrievegroups))
+             (if (assoc method retrieve-groups)
+                 (setcdr (assoc method retrieve-groups)
+                         (cons group (cdr (assoc method retrieve-groups))))
+               (push (list method group) retrieve-groups))
            ;; hack: `nnmail-get-new-mail' changes the mail-source depending
            ;; on the group, so we must perform a scan for every group
            ;; if the users has any directory mail sources.
@@ -1641,21 +1647,21 @@ newsgroup."
        ;; unread articles and stuff.
        (gnus-set-active group nil)
        (let ((tmp (gnus-gethash group gnus-newsrc-hashtb)))
-         (if tmp (setcar tmp t))))))
+         (when tmp
+           (setcar tmp t))))))
 
     ;; iterate through groups on methods which support gnus-retrieve-groups
     ;; and fetch a partial active file and use it to find new news.
-    (while retrievegroups
-      (let* ((mg (pop retrievegroups))
-            (method (or (car mg) gnus-select-method))
-            (groups (cdr mg)))
+    (dolist (rg retrieve-groups)
+      (let ((method (or (car rg) gnus-select-method))
+           (groups (cdr rg)))
        (when (gnus-check-server method)
           ;; Request that the backend scan its incoming messages.
           (when (gnus-check-backend-function 'request-scan (car method))
             (gnus-request-scan nil method))
-          (gnus-read-active-file-2 (mapcar (lambda (group)
-                                             (gnus-group-real-name group))
-                                           groups) method)
+          (gnus-read-active-file-2
+          (mapcar (lambda (group) (gnus-group-real-name group)) groups)
+          method)
           (dolist (group groups)
             (cond
              ((setq active (gnus-active (gnus-info-group
index 4f5f4b8..a0358ff 100644 (file)
@@ -425,7 +425,7 @@ this variable specifies group names."
   :type 'character)
 
 (defcustom gnus-souped-mark ?F
-  "*Mark used for killed articles."
+  "*Mark used for souped articles."
   :group 'gnus-summary-marks
   :type 'character)
 
@@ -449,6 +449,11 @@ this variable specifies group names."
   :group 'gnus-summary-marks
   :type 'character)
 
+(defcustom gnus-forwarded-mark ?O
+  "*Mark used for articles that have been forwarded."
+  :group 'gnus-summary-marks
+  :type 'character)
+
 (defcustom gnus-cached-mark ?*
   "*Mark used for articles that are in the cache."
   :group 'gnus-summary-marks
@@ -1060,7 +1065,7 @@ when prompting the user for which type of files to save."
     (?M ,(macroexpand '(mail-header-id gnus-tmp-header)) ?s)
     (?r ,(macroexpand '(mail-header-references gnus-tmp-header)) ?s)
     (?c (or (mail-header-chars gnus-tmp-header) 0) ?d)
-    (?L gnus-tmp-lines ?d)
+    (?L gnus-tmp-lines ?s)
     (?I gnus-tmp-indentation ?s)
     (?T (if (= gnus-tmp-level 0) "" (make-string (frame-width) ? )) ?s)
     (?R gnus-tmp-replied ?c)
@@ -1162,6 +1167,9 @@ end position and text.")
 (defvar gnus-newsgroup-replied nil
   "List of articles that have been replied to in the current newsgroup.")
 
+(defvar gnus-newsgroup-forwarded nil
+  "List of articles that have been forwarded in the current newsgroup.")
+
 (defvar gnus-newsgroup-expirable nil
   "List of articles in the current newsgroup that can be expired.")
 
@@ -1222,7 +1230,8 @@ end position and text.")
     gnus-newsgroup-auto-expire gnus-newsgroup-unreads
     gnus-newsgroup-unselected gnus-newsgroup-marked
     gnus-newsgroup-reads gnus-newsgroup-saved
-    gnus-newsgroup-replied gnus-newsgroup-expirable
+    gnus-newsgroup-replied gnus-newsgroup-forwarded
+    gnus-newsgroup-expirable
     gnus-newsgroup-processable gnus-newsgroup-killed
     gnus-newsgroup-downloadable gnus-newsgroup-undownloaded
     gnus-newsgroup-unsendable
@@ -1456,6 +1465,7 @@ increase the score of each group you read."
     "\C-c\C-s\C-s" gnus-summary-sort-by-subject
     "\C-c\C-s\C-d" gnus-summary-sort-by-date
     "\C-c\C-s\C-i" gnus-summary-sort-by-score
+    "\C-c\C-s\C-o" gnus-summary-sort-by-original
     "=" gnus-summary-expand-window
     "\C-x\C-s" gnus-summary-reselect-current-group
     "\M-g" gnus-summary-rescan-group
@@ -2064,7 +2074,8 @@ increase the score of each group you read."
        ["Sort by date" gnus-summary-sort-by-date t]
        ["Sort by score" gnus-summary-sort-by-score t]
        ["Sort by lines" gnus-summary-sort-by-lines t]
-       ["Sort by characters" gnus-summary-sort-by-chars t])
+       ["Sort by characters" gnus-summary-sort-by-chars t]
+       ["Original sort" gnus-summary-sort-by-original t])
        ("Help"
        ["Fetch group FAQ" gnus-summary-fetch-faq t]
        ["Describe group" gnus-summary-describe-group t]
@@ -2888,7 +2899,9 @@ buffer that was in action when the last article was fetched."
     (when (string= gnus-tmp-name "")
       (setq gnus-tmp-name gnus-tmp-from))
     (unless (numberp gnus-tmp-lines)
-      (setq gnus-tmp-lines 0))
+      (setq gnus-tmp-lines -1))
+    (when (= gnus-tmp-lines -1)
+      (setq gnus-tmp-lines "?"))
     (gnus-put-text-property-excluding-characters-with-faces
      (point)
      (progn (eval gnus-summary-line-format-spec) (point))
@@ -4256,6 +4269,8 @@ or a straight list of headers."
                    gnus-cached-mark)
                   ((memq number gnus-newsgroup-replied)
                    gnus-replied-mark)
+                  ((memq number gnus-newsgroup-forwarded)
+                   gnus-forwarded-mark)
                   ((memq number gnus-newsgroup-saved)
                    gnus-saved-mark)
                   (t gnus-no-mark))
@@ -4274,7 +4289,9 @@ or a straight list of headers."
            (when (string= gnus-tmp-name "")
              (setq gnus-tmp-name gnus-tmp-from))
            (unless (numberp gnus-tmp-lines)
-             (setq gnus-tmp-lines 0))
+             (setq gnus-tmp-lines -1))
+           (when (= gnus-tmp-lines -1)
+             (setq gnus-tmp-lines "?"))
            (gnus-put-text-property
             (point)
             (progn (eval gnus-summary-line-format-spec) (point))
@@ -5061,15 +5078,15 @@ The resulting hash table is returned, or nil if no Xrefs were found."
              (goto-char p)
              (if (search-forward "\nchars: " nil t)
                  (if (numberp (setq chars (ignore-errors (read cur))))
-                     chars 0)
-               0))
+                     chars -1)
+               -1))
            ;; Lines.
            (progn
              (goto-char p)
              (if (search-forward "\nlines: " nil t)
                  (if (numberp (setq lines (ignore-errors (read cur))))
-                     lines 0)
-               0))
+                     lines -1)
+               -1))
            ;; Xref.
            (progn
              (goto-char p)
@@ -5735,7 +5752,9 @@ If FORCE (the prefix), also save the .newsrc file(s)."
        (setq gnus-article-current nil))
       (set-buffer buf)
       (if (not gnus-kill-summary-on-exit)
-         (gnus-deaden-summary)
+         (progn
+           (gnus-deaden-summary)
+           (setq mode nil))
        ;; We set all buffer-local variables to nil.  It is unclear why
        ;; this is needed, but if we don't, buffer-local variables are
        ;; not garbage-collected, it seems.  This would the lead to en
@@ -5750,10 +5769,7 @@ If FORCE (the prefix), also save the .newsrc file(s)."
        (set-buffer gnus-group-buffer)
        (gnus-summary-clear-local-variables)
        (let ((gnus-summary-local-variables gnus-newsgroup-variables))
-         (gnus-summary-clear-local-variables))
-       ;; Return to group mode buffer.
-       (when (eq mode 'gnus-summary-mode)
-         (gnus-kill-buffer buf)))
+         (gnus-summary-clear-local-variables)))
       (setq gnus-current-select-method gnus-select-method)
       (pop-to-buffer gnus-group-buffer)
       (if (not quit-config)
@@ -5768,6 +5784,9 @@ If FORCE (the prefix), also save the .newsrc file(s)."
              (set-window-start (selected-window) (point))
              (goto-char group-point)))
        (gnus-handle-ephemeral-exit quit-config))
+      ;; Return to group mode buffer.
+      (when (eq mode 'gnus-summary-mode)
+       (gnus-kill-buffer buf))
       ;; Clear the current group name.
       (unless quit-config
        (setq gnus-newsgroup-name nil)))))
@@ -7655,7 +7674,9 @@ to save in."
                              (mail-header-date gnus-current-headers) ")"))))
                (gnus-run-hooks 'gnus-ps-print-hook)
                (save-excursion
-                 (ps-spool-buffer-with-faces))))
+                 (if window-system
+                     (ps-spool-buffer-with-faces)
+                   (ps-spool-buffer)))))
          (kill-buffer buffer))))
     (gnus-summary-remove-process-mark article))
   (ps-despool filename))
@@ -8546,7 +8567,7 @@ the actual number of articles unmarked is returned."
        (error "No such mark type: %s" type)
       (setq var (intern (format "gnus-newsgroup-%s" type)))
       (set var (cons article (symbol-value var)))
-      (if (memq type '(processable cached replied saved))
+      (if (memq type '(processable cached replied forwarded saved))
          (gnus-summary-update-secondary-mark article)
        ;;; !!! This is bobus.  We should find out what primary
        ;;; !!! mark we want to set.
@@ -8560,11 +8581,25 @@ the actual number of articles marked is returned."
   (gnus-summary-mark-forward n gnus-expirable-mark))
 
 (defun gnus-summary-mark-article-as-replied (article)
-  "Mark ARTICLE replied and update the summary line."
-  (push article gnus-newsgroup-replied)
-  (let ((buffer-read-only nil))
-    (when (gnus-summary-goto-subject article nil t)
-      (gnus-summary-update-secondary-mark article))))
+  "Mark ARTICLE as replied to and update the summary line.
+ARTICLE can also be a list of articles."
+  (interactive (list (gnus-summary-article-number)))
+  (let ((articles (if (listp article) article (list article))))
+    (dolist (article articles)
+      (push article gnus-newsgroup-replied)
+      (let ((buffer-read-only nil))
+       (when (gnus-summary-goto-subject article nil t)
+         (gnus-summary-update-secondary-mark article))))))
+
+(defun gnus-summary-mark-article-as-forwarded (article)
+  "Mark ARTICLE as forwarded and update the summary line.
+ARTICLE can also be a list of articles."
+  (let ((articles (if (listp article) article (list article))))
+    (dolist (article articles)
+      (push article gnus-newsgroup-forwarded)
+      (let ((buffer-read-only nil))
+       (when (gnus-summary-goto-subject article nil t)
+         (gnus-summary-update-secondary-mark article))))))
 
 (defun gnus-summary-set-bookmark (article)
   "Set a bookmark in current article."
@@ -8790,6 +8825,8 @@ Iff NO-EXPIRE, auto-expiry will be inhibited."
          gnus-cached-mark)
         ((memq article gnus-newsgroup-replied)
          gnus-replied-mark)
+        ((memq article gnus-newsgroup-forwarded)
+         gnus-forwarded-mark)
         ((memq article gnus-newsgroup-saved)
          gnus-saved-mark)
         (t gnus-no-mark))
@@ -9095,7 +9132,8 @@ If ALL is non-nil, also mark ticked and dormant articles as read."
 
 (defun gnus-summary-catchup-and-exit (&optional all quietly)
   "Mark all unread articles in this group as read, then exit.
-If prefix argument ALL is non-nil, all articles are marked as read."
+If prefix argument ALL is non-nil, all articles are marked as read.
+If QUIETLY is non-nil, no questions will be asked."
   (interactive "P")
   (when (gnus-summary-catchup all quietly nil 'fast)
     ;; Select next newsgroup or exit.
@@ -9390,7 +9428,7 @@ taken."
 
 (defun gnus-summary-up-thread (n)
   "Go up thread N steps.
-If N is negative, go up instead.
+If N is negative, go down instead.
 Returns the difference between N and how many steps down that were
 taken."
   (interactive "p")
@@ -9479,6 +9517,18 @@ Argument REVERSE means reverse order."
   (interactive "P")
   (gnus-summary-sort 'chars reverse))
 
+(defun gnus-summary-sort-by-original (&optional reverse)
+  "Sort the summary buffer using the default sorting method.
+Argument REVERSE means reverse order."
+  (interactive "P")
+  (let* ((buffer-read-only)
+        (gnus-summary-prepare-hook nil))
+    ;; We do the sorting by regenerating the threads.
+    (gnus-summary-prepare)
+    ;; Hide subthreads if needed.
+    (when (and gnus-show-threads gnus-thread-hide-subtree)
+      (gnus-summary-hide-all-threads))))
+
 (defun gnus-summary-sort (predicate reverse)
   "Sort summary buffer by PREDICATE.  REVERSE means reverse order."
   (let* ((thread (intern (format "gnus-thread-sort-by-%s" predicate)))
index 3405b91..8c46c94 100644 (file)
@@ -956,12 +956,15 @@ Entries without port tokens default to DEFAULTPORT."
       (pop list))
     (nreverse out)))
 
-(defun gnus-delete-alist (key alist)
-  "Delete all entries in ALIST that have a key eq to KEY."
-  (let (entry)
-    (while (setq entry (assq key alist))
-      (setq alist (delq entry alist)))
-    alist))
+(if (fboundp 'assq-delete-all)
+    (defalias 'gnus-delete-alist 'assq-delete-all)
+  (defun gnus-delete-alist (key alist)
+    "Delete from ALIST all elements whose car is KEY.
+Return the modified alist."
+    (let (entry)
+      (while (setq entry (assq key alist))
+        (setq alist (delq entry alist)))
+      alist)))
 
 (defmacro gnus-pull (key alist &optional assoc-p)
   "Modify ALIST to be without KEY."
index 6d8448e..6470494 100644 (file)
@@ -521,47 +521,51 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
   (interactive "P")
   (let ((gnus-uu-save-in-digest t)
        (file (make-temp-name (nnheader-concat gnus-uu-tmp-dir "forward")))
+       (message-forward-as-mime message-forward-as-mime)
+       (mail-parse-charset gnus-newsgroup-charset)
+       (mail-parse-ignored-charsets gnus-newsgroup-ignored-charsets)
        gnus-uu-digest-buffer subject from)
-    (gnus-setup-message 'forward
-      (setq gnus-uu-digest-from-subject nil)
-      (setq gnus-uu-digest-buffer
-           (gnus-get-buffer-create " *gnus-uu-forward*"))
-      (gnus-uu-decode-save n file)
-      (set-buffer gnus-uu-digest-buffer)
-      (let ((fs gnus-uu-digest-from-subject))
-       (when fs
-         (setq from (caar fs)
-               subject (gnus-simplify-subject-fuzzy (cdar fs))
-               fs (cdr fs))
-         (while (and fs (or from subject))
-           (when from
-             (unless (string= from (caar fs))
-               (setq from nil)))
-           (when subject
-             (unless (string= (gnus-simplify-subject-fuzzy (cdar fs))
-                              subject)
-               (setq subject nil)))
-           (setq fs (cdr fs))))
-       (unless subject
-         (setq subject "Digested Articles"))
-       (unless from
-         (setq from
-               (if (gnus-news-group-p gnus-newsgroup-name)
-                   gnus-newsgroup-name
-                 "Various"))))
-      (mime-edit-enclose-digest-region (point-min) (point-max))
-      (if post
-         (message-news nil (concat "[" from "] " subject))
-       (message-mail nil (concat "[" from "] " subject)))
-      (message-goto-body)
-      ;; Make sure we're at the start of the line.
-      (unless (bolp)
-       (insert "\n"))
-      ;; Insert the forwarded buffer.
-      (insert-buffer gnus-uu-digest-buffer)
-      (kill-buffer gnus-uu-digest-buffer)
-      (set-text-properties (point-min) (point-max) nil)
-      (message-position-point))
+    (if (and n (not (numberp n)))
+       (setq message-forward-as-mime (not message-forward-as-mime)
+             n nil))
+    (let ((gnus-article-reply (gnus-summary-work-articles n)))
+      (gnus-setup-message 'forward
+       (setq gnus-uu-digest-from-subject nil)
+       (setq gnus-uu-digest-buffer
+             (gnus-get-buffer-create " *gnus-uu-forward*"))
+       (gnus-uu-decode-save n file)
+       (switch-to-buffer gnus-uu-digest-buffer)
+       (let ((fs gnus-uu-digest-from-subject))
+         (when fs
+           (setq from (caar fs)
+                 subject (gnus-simplify-subject-fuzzy (cdar fs))
+                 fs (cdr fs))
+           (while (and fs (or from subject))
+             (when from
+               (unless (string= from (caar fs))
+                 (setq from nil)))
+             (when subject
+               (unless (string= (gnus-simplify-subject-fuzzy (cdar fs))
+                                subject)
+                 (setq subject nil)))
+             (setq fs (cdr fs))))
+         (unless subject
+           (setq subject "Digested Articles"))
+         (unless from
+           (setq from
+                 (if (gnus-news-group-p gnus-newsgroup-name)
+                     gnus-newsgroup-name
+                   "Various"))))
+       (goto-char (point-min))
+       (when (re-search-forward "^Subject: ")
+         (delete-region (point) (gnus-point-at-eol))
+         (insert subject))
+       (goto-char (point-min))
+       (when (re-search-forward "^From:")
+         (delete-region (point) (gnus-point-at-eol))
+         (insert " " from))
+       (let ((message-forward-decoded-p t))
+         (message-forward post))))
     (setq gnus-uu-digest-from-subject nil)))
 
 (defun gnus-uu-digest-post-forward (&optional n)
index de17928..dcdd179 100644 (file)
@@ -548,7 +548,8 @@ should have point."
        (if (featurep 'xemacs)
            (switch-to-buffer nntp-server-buffer)
          (set-buffer nntp-server-buffer)))
-      (mapcar (lambda (b) (delete-windows-on b t)) bufs))))
+      (mapcar (lambda (b) (delete-windows-on b t))
+             (delq lowest-buf bufs)))))
 
 (provide 'gnus-win)
 
index 22a5310..9538a62 100644 (file)
@@ -1795,7 +1795,7 @@ covered by that variable."
     (bookmarks . bookmark) (dormant . dormant)
     (scored . score) (saved . save)
     (cached . cache) (downloadable . download)
-    (unsendable . unsend)))
+    (unsendable . unsend) (forwarded . forward)))
 
 (defvar gnus-headers-retrieved-by nil)
 (defvar gnus-article-reply nil)
@@ -2478,8 +2478,8 @@ g -- Group name."
        out)
       (cond
        ((= c ?r)
-       (push (if (< (point) (mark) (point) (mark))) out)
-       (push (if (> (point) (mark) (point) (mark))) out))))
+       (push (if (< (point) (mark)) (point) (mark)) out)
+       (push (if (> (point) (mark)) (point) (mark)) out))))
     (setq out (delq 'gnus-prefix-nil out))
     (nreverse out)))
 
@@ -3049,6 +3049,15 @@ If NEWSGROUP is nil, return the global kill file name instead."
          (list (intern server) "")))
     gnus-select-method))
 
+(defun gnus-server-string (server)
+  "Return a readable string that describes SERVER."
+  (let* ((server (gnus-server-to-method server))
+        (address (nth 1 server)))
+    (if (and address
+            (not (zerop (length address))))
+       (format "%s via %s" address (car server))
+      (format "%s" (car server)))))
+
 (defun gnus-find-method-for-group (group &optional info)
   "Find the select method that GROUP uses."
   (or gnus-override-method
index 7a514cb..d4fa9f7 100644 (file)
@@ -1453,6 +1453,7 @@ Except if it is nil, use Gnus native MUA; if it is t, use
   (autoload 'gnus-request-post "gnus-int")
   (autoload 'gnus-copy-article-buffer "gnus-msg")
   (autoload 'gnus-alive-p "gnus-util")
+  (autoload 'gnus-server-string "gnus")
   (autoload 'gnus-group-name-charset "gnus-group")
   (autoload 'rmail-output "rmailout")
   (autoload 'mu-cite-original "mu-cite"))
@@ -3424,6 +3425,7 @@ This sub function is for exclusive use of `message-send-news'."
     (backward-char 1)
     (run-hooks 'message-send-news-hook)
     (gnus-open-server method)
+    (message "Sending news with %s..." (gnus-server-string method))
     (gnus-request-post method)
     ))
 
@@ -4672,8 +4674,11 @@ than 988 characters long, and if they are not, trim them until they are."
     (if (gnus-alive-p)
        (setq message-draft-article
              (nndraft-request-associate-buffer "drafts"))
-      (setq buffer-file-name (expand-file-name "*message*"
-                                              message-auto-save-directory))
+      (setq buffer-file-name (expand-file-name
+                             (if (eq system-type 'windows-nt)
+                                 "message"
+                               "*message*")
+                             message-auto-save-directory))
       (setq buffer-auto-save-file-name (make-auto-save-file-name)))
     (clear-visited-file-modtime)
     (static-if (boundp 'MULE)
index d44a5dc..8978c07 100644 (file)
@@ -222,17 +222,25 @@ to:
   :type '(repeat string)
   :group 'mime-display)
 
-(defvar mm-tmp-directory
+(defcustom mm-tmp-directory
   (cond ((fboundp 'temp-directory) (temp-directory))
        ((boundp 'temporary-file-directory) temporary-file-directory)
        ("/tmp/"))
-  "Where mm will store its temporary files.")
+  "Where mm will store its temporary files."
+  :type 'directory
+  :group 'mime-display)
 
 (defcustom mm-inline-large-images nil
   "If non-nil, then all images fit in the buffer."
   :type 'boolean
   :group 'mime-display)
 
+(defcustom mm-default-directory nil
+  "The default directory where mm will save files.
+If not set, `default-directory' will be used."
+  :type 'directory
+  :group 'mime-display)
+
 ;;; Internal variables.
 
 (defvar mm-dissection-list nil)
@@ -805,8 +813,6 @@ external if displayed external."
            (set-buffer cur)
            (insert-buffer-substring temp)))))))
 
-(defvar mm-default-directory nil)
-
 (defun mm-save-part (handle)
   "Write HANDLE to a file."
   (let* ((name (mail-content-type-get (mm-handle-type handle) 'name))
index 697de6c..9875a0b 100644 (file)
@@ -68,7 +68,7 @@ coding-system."
                   ;;  (backward-char))
                   ))
                (t
-                (error "Malformed quoted-printable text")
+                (message "Malformed quoted-printable text")
                 (forward-char)))))
       (if coding-system
          (mm-decode-coding-region (point-min) (point-max) coding-system)))))
index f0d4d3c..f93c8da 100644 (file)
@@ -26,7 +26,7 @@
            ;; uncomment and edit the following line appropriately.
            ;; "/usr/local/share/mule/site-lisp/w3/"
            )))
-      ;; No user servicable parts beyond this point.
+      ;; No user serviceable parts beyond this point.
 \f
       (let ((i (length additional-load-path))
            p)
index fd4da26..92c08b0 100644 (file)
@@ -1,3 +1,18 @@
+2001-04-01 00:32:46  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (S): Renamed.
+       (Summary Sorting): Addition.
+
+2001-03-31 00:40:44  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Other Marks): Additon.
+       (The End): Remove "The" from menus.
+
+2001-03-30 23:34:02  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Adaptive Scoring): Addition.
+       (Summary Mail Commands): Addition.
+
 2001-03-17  Matthias Wiehl  <mwiehl@gmx.de>
 
        * message.texi (Security): Typos.
index aec0138..af35b59 100644 (file)
@@ -458,9 +458,9 @@ 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
 
 @menu
 * Starting Up::        \e$B%K%e!<%9$r8+$D$1$k$N$K$O6lO+$,H<$&$+$bCN$l$J$$\e(B
-* The Group Buffer::   \e$B%0%k!<%W$rA*Br$7!"9XFI$7!":o=|$9$k\e(B
-* The Summary Buffer:: \e$B5-;v$rFI$_!"J]B8$7!"Ej9F$9$k\e(B
-* The Article Buffer:: \e$B5-;v$rI=<($7!"07$&\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
@@ -545,7 +545,7 @@ The Summary Buffer
 * 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::                    \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($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
@@ -669,7 +669,7 @@ Composing Messages
 
 Select Methods
 
-* The Server Buffer:: \e$B;v<B>e$N%5!<%P!<$r:n$C$FJT=8$9$k\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$k\e(B
@@ -784,9 +784,9 @@ Gnus Unplugged
 
 Agent Categories
 
-* Category Syntax::     \e$BJ,N`$H$O$I$s$J$b$N$+\e(B
-* The 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
 
@@ -1636,7 +1636,7 @@ Gnus \e$B$N5/F0$K@.8y$7$?8e$K!"0lHV:G8e$K<B9T$5$l$k%U%C%/$G$9!#\e(B
 
 @end table
 
-@node The Group Buffer
+@node Group Buffer
 @chapter \e$B%0%k!<%W%P%C%U%!\e(B
 @cindex group buffer
 
@@ -3646,7 +3646,7 @@ Gnus
 @kindex ^ (Group)
 @findex gnus-group-enter-server-mode
 \e$B%5!<%P%P%C%U%!%b!<%I$KF~$k\e(B (@code{gnus-group-enter-server-mode})\e$B!#\e(B
-@xref{The Server Buffer}\e$B!#\e(B
+@xref{Server Buffer}\e$B!#\e(B
 
 @item a
 @kindex a (Group)
@@ -3893,7 +3893,7 @@ Gnus \e$B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx$+$b$7$l\e(B
 
 @end table
 
-@node The Summary Buffer
+@node Summary Buffer
 @chapter \e$B35N,%P%C%U%!\e(B
 @cindex summary buffer
 
@@ -3914,7 +3914,7 @@ Gnus \e$B$K!"$"$J$?$,:G8e$K$$$D%0%k!<%W$rFI$s$@$+$r5-O?$5$;$k$HJXMx$+$b$7$l\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::                    \e$B%9%l%C%I$H5-;v$,$I$N$h$&$KJB$S$+$($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
@@ -4608,6 +4608,22 @@ Summary Buffer} \e$B$r;2>H$7$F2<$5$$!#\e(B
 \e$B$9\e(B (@code{gnus-summary-wide-reply-with-original})\e$B!#$3$NL?Na$O%W%m%;%9\e(B/\e$B@\\e(B
 \e$BF,0z?t$N=,47$r;H$$$^$9!#\e(B
 
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+\e$B8=:_$N5-;v$r=q$$$??M$KBP$7$F!"Hs>o$K9-$$JVEz\e(B (very wide reply) \e$B$r$7$^\e(B
+\e$B$9\e(B (@code{gnus-summary-very-wide-reply})\e$B!#\e(B@dfn{\e$BHs>o$K9-$$JVEz\e(B} \e$B$H$O!"%W\e(B
+\e$B%m%;%9\e(B/\e$B@\F,0z?t$G;XDj$5$l$?$9$Y$F$N5-;v$N%X%C%@!<$N\e(B @code{To},
+@code{From}, (\e$B$b$7$/$O\e(B @code{Reply-to}) \e$B$H\e(B @code{Cc}) \e$B$N$9$Y$F$N?M$KJVEz\e(B
+\e$B$r$9$k$3$H$G$9!#$3$NL?Na$O%W%m%;%9\e(B/\e$B@\F,0z?t$N=,47$r;H$$$^$9!#\e(B
+
+@item S V
+@kindex S V (Summary)
+@findex gnus-summary-very-wide-reply-with-original
+\e$B8=:_$N5-;v$KK\5-;v$r4^$s$@Hs>o$K9-$$JVEz$N%a!<%k$rAw$j$^\e(B
+\e$B$9\e(B (@code{gnus-summary-very-wide-reply-with-original})\e$B!#$3$NL?Na$O%W%m%;\e(B
+\e$B%9\e(B/\e$B@\F,0z?t$N=,47$r;H$$$^$9!#\e(B
+
 @item S o m
 @itemx C-c C-f
 @kindex S o m (\e$B35N,\e(B)
@@ -4990,6 +5006,10 @@ 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$BJVEz$r$7$?$+!"%U%)%m!<%"%C%W$r$7$?\e(B (\e$BNc$($P!"Ez$($?\e(B) \e$B5-;v$O$9$Y$FFs7eL\\e(B
 \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$B$9\e(B (@code{gnus-forwarded-mark})\e$B!#\e(B
+
 @item
 @vindex gnus-cached-mark
 \e$B5-;v%-%c%C%7%e$KCy$a$i$l$F$$$k5-;v$OFs7eL\$K\e(B @samp{*} \e$B$N0u$,$D$-$^\e(B
@@ -5922,7 +5942,7 @@ gnus \e$B$OA4$F$N5-;v$N40A4$J\e(B @code{References} \e$BMs$r8+$F!"F1$8%9%l%C%I$KB0$
 \e$B9T$7$F$$$k$H$-$KI=Bj$OL5;k$5$l$^$9!#$3$NJQ?t$,\e(B @code{fuzzy} \e$B$G$"$k$H!"$"\e(B
 \e$B$$$^$$$KEy$7$$I=Bj$r;}$D5-;v$@$1$,4^$^$l$^$9\e(B (@pxref{Fuzzy Matching})\e$B!#\e(B
 
-@node Sorting
+@node Sorting the Summary Buffer
 @section \e$BJB$SBX$(\e(B
 
 @findex gnus-thread-sort-by-total-score
@@ -7756,6 +7776,11 @@ 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
 @kindex C-c C-s C-i (\e$B35N,\e(B)
 @findex gnus-summary-sort-by-score
 \e$B%9%3%"$K$h$C$FJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-score})\e$B!#\e(B
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+\e$B%G%#%U%)%k%H$NJ}K!$GJB$SBX$($^$9\e(B (@code{gnus-summary-sort-by-original})\e$B!#\e(B
 @end table
 
 \e$B$3$l$i$N4X?t$O%9%l%C%I$r;H$C$F$$$k$H$-$H;H$C$F$$$J$$$H$-$NN>J}$GF0:n$7$^\e(B
@@ -8725,7 +8750,7 @@ protocols. Otherwise, ask user.
 @end table
 @end ignore
 
-@node The Article Buffer
+@node Article Buffer
 @chapter \e$B5-;v%P%C%U%!\e(B
 @cindex article buffer
 
@@ -9681,7 +9706,7 @@ you've typed it correctly.
 
 \e$BA*BrJ}K!$O\e(B @dfn{\e$B;v<B>e$N%5!<%P!<\e(B} \e$B$rDj5A$9$k$H8@$&$3$H$,$G$-$k$+$b$7$l$^\e(B
 \e$B$;$s\e(B---\e$B$G$9$+$i;d$?$A$O$A$g$&$I$=$l$r$7$^$7\e(B
-\e$B$?\e(B (@pxref{The Server Buffer})\e$B!#\e(B
+\e$B$?\e(B (@pxref{Server Buffer})\e$B!#\e(B
 
 \e$B%0%k!<%W$N\e(B @dfn{\e$BL>A0\e(B} \e$B$O%P%C%/%(%s%I$,%0%k!<%W$rG'<1$9$kL>A0$G$9!#\e(B
 
@@ -9694,16 +9719,16 @@ 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
-* The 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$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
 @end menu
 
-@node The Server Buffer
+@node Server Buffer
 @section \e$B%5!<%P!<%P%C%U%!\e(B
 
 \e$BEAE}E*$K!"\e(B@dfn{\e$B%5!<%P!<\e(B} \e$B$O$=$l$K@\B3$7$F!"$=$l$+$i>pJs$rMW5a$9$k%^%7%s\e(B
@@ -10024,8 +10049,8 @@ you've typed it correctly.
 \e$B$=$l$G!"0l;~E*$K$=$N%^%7%s$N5!7y$,0-$$$@$1$@$H2?$,5/$3$k$N$G$7$g$&\e(B? \e$B$I$&\e(B
 \e$B$d$C$F%^%7%s$,La$C$F$-$F$$$k$+$I$&$+$C$r:F$SD4$Y$k;v$,$G$-$k$G$N$7$g$&\e(B?
 
-\e$B%5!<%P!<%P%C%U%!$KHt$S0\$C$F\e(B (@pxref{The Server Buffer})\e$B!"0J2<$NL?Na$G\e(B
-\e$B$D$D$/$@$1$G$G$-$^$9\e(B:
+\e$B%5!<%P!<%P%C%U%!$KHt$S0\$C$F\e(B (@pxref{Server Buffer})\e$B!"0J2<$NL?Na$G$D$D$/\e(B
+\e$B$@$1$G$G$-$^$9\e(B:
 
 @table @kbd
 
@@ -14054,9 +14079,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
-* The 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
@@ -14318,7 +14343,7 @@ file
 @end itemize
 @end enumerate
 
-@node The Category Buffer
+@node Category Buffer
 @subsubsection \e$BJ,N`%P%C%U%!!<\e(B
 
 \e$BDL>o$OA4$F$NJ,N`$OJ,N`%P%C%U%!!<$+$i4IM}$7$^$9!#\e(B(\e$B%0%k!<%W%P%C%U%!!<\e(B
@@ -15702,6 +15727,12 @@ gnus \e$B$K$O$3$l$i$rA4$F<+F0E*$K\e(B --- \e$B$^$k$GKbK!$G$b;H$C$?$h$&$K:n@.\e(B
 \e$B$l$^$9!#L5;k$7$?$$C18l$rDI2C$7$?$$$H$-$O!"$3$NJQ?t$G$O$J\e(B
 \e$B$/\e(B @code{gnus-ignored-adaptive-words} \e$B%j%9%H$NJ}$r;H$C$F$/$@$5$$!#\e(B
 
+@vindex gnus-adaptive-word-length-limit
+\e$BC;$$C18l$G$OE,1~@-%9%3%"$r:nF0$5$;$k$Y$-$G$O$J$$$H;W$&?M$b$$$k$G$7$g$&!#\e(B
+\e$B$b$7$=$&$J$i\e(B @code{gnus-adaptive-word-length-limit} \e$B$K@0?t$r@_Dj$9$k$3$H\e(B
+\e$B$,$G$-!"$3$N?tCM$h$jC;$$C18l$OL5;k$5$l$^$9!#$3$NJQ?t$N=i4|@_DjCM\e(B
+\e$B$O\e(B @code{nil} \e$B$G$9!#\e(B
+
 @vindex gnus-adaptive-word-syntax-table
 \e$B%9%3%"IU$1$,=*N;$7$?$H$-!"\e(B@code{gnus-adaptive-word-syntax-table} \e$B$NJ8K!\e(B
 \e$BI=$,$=$N1F6A$r<u$1$^$9!#$3$l$OI8=`$NJ8K!I=$H;w$F$$$^$9$,!"C18l$N9=@.MWAG\e(B
index a57de5b..37cb613 100644 (file)
@@ -405,9 +405,9 @@ the program.
 
 @menu
 * Starting Up::           Finding news can be a pain.
-* The Group Buffer::      Selecting, subscribing and killing groups.
-* The Summary Buffer::    Reading, saving and posting articles.
-* The Article Buffer::    Displaying and handling articles.
+* 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.
@@ -491,7 +491,7 @@ The Summary Buffer
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
-* Sorting::                     How articles and threads are sorted.
+* Sorting the Summary Buffer::  How articles and threads are sorted.
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
@@ -612,7 +612,7 @@ Composing Messages
 
 Select Methods
 
-* The Server Buffer::     Making and editing virtual servers.
+* 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.
@@ -719,7 +719,7 @@ Gnus Unplugged
 Agent Categories
 
 * Category Syntax::       What a category looks like.
-* The Category Buffer::   A buffer for maintaining categories.
+* Category Buffer::       A buffer for maintaining categories.
 * Category Variables::    Customize'r'Us.
 
 Agent Commands
@@ -1566,8 +1566,8 @@ default is @samp{Tuxedomoon.Jingle4.au}.
 @end table
 
 
-@node The Group Buffer
-@chapter The Group Buffer
+@node Group Buffer
+@chapter Group Buffer
 @cindex group buffer
 
 The @dfn{group buffer} lists all (or parts) of the available groups.  It
@@ -3622,7 +3622,7 @@ happens.  You just have to be careful if you do stuff like that.
 @kindex ^ (Group)
 @findex gnus-group-enter-server-mode
 Enter the server buffer (@code{gnus-group-enter-server-mode}).
-@xref{The Server Buffer}.
+@xref{Server Buffer}.
 
 @item a
 @kindex a (Group)
@@ -3871,8 +3871,8 @@ file(s) whether Gnus thinks it is necessary or not.
 @end table
 
 
-@node The Summary Buffer
-@chapter The Summary Buffer
+@node Summary Buffer
+@chapter Summary Buffer
 @cindex summary buffer
 
 A line for each article is displayed in the summary buffer.  You can
@@ -3892,7 +3892,7 @@ You can have as many summary buffers open as you wish.
 * Marking Articles::            Marking articles as read, expirable, etc.
 * Limiting::                    You can limit the summary buffer.
 * Threading::                   How threads are made.
-* Sorting::                     How articles and threads are sorted.
+* Sorting the Summary Buffer::  How articles and threads are sorted.
 * Asynchronous Fetching::       Gnus might be able to pre-fetch articles.
 * Article Caching::             You may store articles in a cache.
 * Persistent Articles::         Making articles expiry-resistant.
@@ -4629,6 +4629,22 @@ Mail a wide reply to the current article and include the original
 message (@code{gnus-summary-wide-reply-with-original}).  This command uses
 the process/prefix convention.
 
+@item S v
+@kindex S v (Summary)
+@findex gnus-summary-very-wide-reply
+Mail a very wide reply to the author of the current article
+(@code{gnus-summary-wide-reply}).  A @dfn{very wide reply} is a reply
+that goes out to all people listed in the @code{To}, @code{From} (or
+@code{Reply-to}) and @code{Cc} headers in all the process/prefixed
+articles.  This command uses the process/prefix convention.
+
+@item S W
+@kindex S W (Summary)
+@findex gnus-summary-wide-reply-with-original
+Mail a very wide reply to the current article and include the original
+message (@code{gnus-summary-wide-reply-with-original}).  This command uses
+the process/prefix convention.
+
 @item S o m
 @itemx C-c C-f
 @kindex S o m (Summary)
@@ -5021,6 +5037,10 @@ All articles that you have replied to or made a followup to (i.e., have
 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
+the second column (@code{gnus-forwarded-mark}).
+
 @item
 @vindex gnus-cached-mark
 Articles stored in the article cache will be marked with an @samp{*} in
@@ -6000,8 +6020,8 @@ that have subjects fuzzily equal will be included (@pxref{Fuzzy
 Matching}).
 
 
-@node Sorting
-@section Sorting
+@node Sorting the Summary Buffer
+@section Sorting the Summary Buffer
 
 @findex gnus-thread-sort-by-total-score
 @findex gnus-thread-sort-by-date
@@ -8144,6 +8164,12 @@ Sort by article length (@code{gnus-summary-sort-by-chars}).
 @kindex C-c C-s C-i (Summary)
 @findex gnus-summary-sort-by-score
 Sort by score (@code{gnus-summary-sort-by-score}).
+
+@item C-c C-s C-o
+@kindex C-c C-s C-o (Summary)
+@findex gnus-summary-sort-by-original
+Sort using the default sorting method
+(@code{gnus-summary-sort-by-original}).
 @end table
 
 These functions will work both when you use threading and when you don't
@@ -9139,8 +9165,8 @@ protocols. Otherwise, ask user.
 
 @end table
 
-@node The Article Buffer
-@chapter The Article Buffer
+@node Article Buffer
+@chapter Article Buffer
 @cindex article buffer
 
 The articles are displayed in the article buffer, of which there is only
@@ -10120,7 +10146,7 @@ name}.  There may be additional elements in the select method, where the
 value may have special meaning for the backend in question.
 
 One could say that a select method defines a @dfn{virtual server}---so
-we do just that (@pxref{The Server Buffer}).
+we do just that (@pxref{Server Buffer}).
 
 The @dfn{name} of the group is the name the backend will recognize the
 group as.
@@ -10134,7 +10160,7 @@ backend just knows this group as @samp{soc.motss}.
 The different methods all have their peculiarities, of course.
 
 @menu
-* The Server Buffer::     Making and editing virtual servers.
+* 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.
@@ -10144,8 +10170,8 @@ The different methods all have their peculiarities, of course.
 @end menu
 
 
-@node The Server Buffer
-@section The Server Buffer
+@node Server Buffer
+@section Server Buffer
 
 Traditionally, a @dfn{server} is a machine or a piece of software that
 one connects to, and then requests information from.  Gnus does not
@@ -10471,7 +10497,7 @@ it will regard that server as ``down''.
 So, what happens if the machine was only feeling unwell temporarily?
 How do you test to see whether the machine has come up again?
 
-You jump to the server buffer (@pxref{The Server Buffer}) and poke it
+You jump to the server buffer (@pxref{Server Buffer}) and poke it
 with the following commands:
 
 @table @kbd
@@ -14585,7 +14611,7 @@ managing categories.
 
 @menu
 * Category Syntax::       What a category looks like.
-* The Category Buffer::   A buffer for maintaining categories.
+* Category Buffer::       A buffer for maintaining categories.
 * Category Variables::    Customize'r'Us.
 @end menu
 
@@ -14861,8 +14887,8 @@ Group Parameter specification
 @end itemize
 @end enumerate
 
-@node The Category Buffer
-@subsubsection The Category Buffer
+@node Category Buffer
+@subsubsection Category Buffer
 
 You'd normally do all category maintenance from the category buffer.
 When you enter it for the first time (with the @kbd{J c} command from
@@ -15996,9 +16022,9 @@ interesting (with @kbd{I T} or @kbd{I S}), and ignore (@kbd{C y}) the
 rest.  Next time you enter the group, you will see new articles in the
 interesting threads, plus any new threads.
 
-I.e.---the orphan score atom is for high-volume groups where there
-exist a few interesting threads which can't be found automatically by
-ordinary scoring rules.
+I.e.---the orphan score atom is for high-volume groups where a few
+interesting threads which can't be found automatically by ordinary
+scoring rules exist.
 
 @item adapt
 This entry controls the adaptive scoring.  If it is @code{t}, the
@@ -16203,6 +16229,12 @@ Words that appear in the @code{gnus-default-ignored-adaptive-words} list
 will be ignored.  If you wish to add more words to be ignored, use the
 @code{gnus-ignored-adaptive-words} list instead.
 
+@vindex gnus-adaptive-word-length-limit
+Some may feel that short words shouldn't count when doing adaptive
+scoring.  If so, you may set @code{gnus-adaptive-word-length-limit} to
+an integer.  Words shorter than this number will be ignored.  This
+variable defaults til @code{nil}.
+
 @vindex gnus-adaptive-word-syntax-table
 When the scoring is done, @code{gnus-adaptive-word-syntax-table} is the
 syntax table in effect.  It is similar to the standard syntax table, but