Synch with Oort Gnus. t-gnus-6_15_0-02-quimby
authoryamaoka <yamaoka>
Fri, 5 Jan 2001 07:08:17 +0000 (07:08 +0000)
committeryamaoka <yamaoka>
Fri, 5 Jan 2001 07:08:17 +0000 (07:08 +0000)
* lisp/gnus-vers.el (gnus-revision-number): Increment to 02.
* lisp/dgnushack.el (dgnushack-texi-format): Remove "@anchor" if it is not
 supported.

49 files changed:
ChangeLog
lisp/ChangeLog
lisp/binhex.el
lisp/dgnushack.el
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cache.el
lisp/gnus-cite.el
lisp/gnus-demon.el
lisp/gnus-draft.el
lisp/gnus-group.el
lisp/gnus-msg.el
lisp/gnus-picon.el
lisp/gnus-score.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus-uu.el
lisp/gnus-vers.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/lpath.el
lisp/message.el
lisp/messagexmas.el
lisp/mm-bodies.el
lisp/mm-util.el
lisp/mm-uu.el
lisp/mm-view.el
lisp/mml.el
lisp/nndb.el
lisp/nnfolder.el
lisp/nnheader.el
lisp/nnheaderxm.el
lisp/nnmail.el
lisp/nnml.el
lisp/nnslashdot.el
lisp/nntp.el
lisp/nnweb.el
lisp/nnwfm.el
lisp/qp.el
lisp/time-date.el
texi/ChangeLog
texi/Makefile.in
texi/emacs-mime.texi
texi/gnus-ja.texi
texi/gnus.texi
texi/message-ja.texi
texi/message.texi
texi/texi2latex.el [new file with mode: 0644]

index 7a65488..e45d977 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2001-01-05  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * lisp/gnus-vers.el (gnus-revision-number): Increment to 02.
+
+       * lisp/dgnushack.el (dgnushack-texi-format): Remove "@anchor" if it
+       is not supported.
+
 2000-12-26  Katsumi Yamaoka <yamaoka@jpl.org>
 
        * lisp/gnus.el: Bind `:parameter-type', `:parameter-document',
index 698e453..3f08584 100644 (file)
@@ -1,3 +1,175 @@
+2001-01-05 06:49:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * time-date.el (time-to-number-of-days): New function.
+
+2001-01-04 11:06:14  Gregory Chernov  <greg@visiontech-dml.com>
+
+       * nnslashdot.el (nnslashdot-request-list): Always get the right
+       sid. 
+
+2001-01-05 00:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * message.el (message-minibuffer-local-map): New keymap.
+       (message-read-from-minibuffer): Use it.
+       * gnus-msg.el (gnus-summary-resend-message): Use it
+
+2001-01-04 22:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-start.el (gnus-display-time-event-handler): New function.
+       (gnus-after-getting-new-news-hook): Use it.
+
+2001-01-03 07:26:58  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-ignored-mail-headers): Add draft header.
+
+2001-01-02 06:28:28  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-summary-expire-articles): Don't save
+       excursion. 
+
+       * nnslashdot.el (nnslashdot-request-list): Get the right year.
+
+2001-01-01 00:52:44  Ed L. Cashin  <ecashin@coe.uga.edu>
+
+       * gnus-sum.el (gnus-summary-expire-articles): Save excursion.
+
+2000-12-31 11:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * qp.el (quoted-printable-decode-region): Don't backward-char.
+
+2000-12-31 03:57:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-draft.el: Mark articles as replied.
+
+       * gnus-sum.el (gnus-summary-add-mark): New function.
+
+       * gnus-group.el (gnus-add-mark): New function.
+
+       * gnus-sum.el (gnus-summary-buffer-name): New function.
+       (gnus-summary-setup-buffer): Use it.
+
+       * gnus-draft.el: Set things up with the right post method and
+       stuff. 
+
+       * message.el (message-ignored-news-headers): Remove X-Draft-From.
+
+       * gnus-msg.el (gnus-inews-insert-draft-meta-information): New function.
+
+       * gnus.el (gnus-draft-meta-information-header): New variable.
+
+2000-12-30 00:17:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-treatment-function-alist): Move the date
+       functions before the header sorting functions.
+
+       * mm-uu.el (mm-uu-pgp-signed-extract-1): Unquote "- " quotes.
+
+       * dgnushack.el (dgnushack-compile): Message whether there is w3. 
+       Don't (push "/usr/share/emacs/site-lisp" load-path).
+
+       * gnus-cite.el (gnus-article-fill-cited-article): Don't add space
+       to empty fill prefixes.
+
+2000-12-30 10:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nntp.el (nntp-open-connection): Kill pbuffer if process is nil.
+       Suggested by Christoph Conrad <christoph.conrad@gmx.de>.
+
+2000-12-30 09:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * nnheader.el (autoload): Autoload gnus-sorted-intersection.
+
+       * nnml.el (autoload): Move to nnheader.el.
+
+       * nnfolder.el (nnfolder-existing-articles): Reversed, i.e. sorted.
+       (nnfolder-request-expire-articles): Use gnus-sorted-intersection.
+       (nnfolder-retrieve-headers): Use intersection. Suggested by Jonas
+       Kvarnstr\e,Av\e(Bm <jonkv@ida.liu.se>.
+
+2000-12-30 00:17:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (article-make-date-line): Get the hours right.
+       (gnus-ignored-headers): More hiding.
+
+       * nnmail.el (nnmail-expiry-wait): Not an integer.
+
+       * message.el (message-goto-body): Only expand abbrev when called
+       interactively. 
+       (message-make-lines): Use it.
+
+2000-12-29 20:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus-msg.el (gnus-inews-yank-articles): Reparse headers.
+
+2000-12-30 00:17:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-summary-limit-include-expunged): Really
+       include the expunged articles.
+
+       * gnus-group.el (gnus-group-sort-by-server): New function.
+
+       * gnus.el (gnus-method-to-server-name): New function.
+       (gnus-group-prefixed-name): Use it.
+
+       * gnus-group.el (gnus-group-sort-function): Doc fix.
+       (gnus-group-sort-groups-by-server): New command.
+
+2000-12-29 13:25:10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-art.el (gnus-treat-date-english): New variable.
+       (article-date-english): New command.
+       (gnus-english-month-names): New variable.
+       (article-make-date-line): Do 'english.
+
+       * gnus-cite.el (gnus-article-fill-cited-article): Add a space
+       after the fill prefix.
+
+       * gnus-sum.el (gnus-summary-make-menu-bar): Removed "Enter
+       score...". 
+
+       * gnus-art.el (gnus-ignored-headers): Hide more headers.
+
+       * message.el (message-mode-map): Bind comment-region.
+
+       * gnus-art.el (gnus-mime-display-part): Let w3 display
+       multipart/related.
+
+       * mm-bodies.el (mm-long-lines-p): New function.
+       (mm-body-encoding): Use it.
+       (mm-body-encoding): Encode articles with lines longer than 1000
+       characters. 
+
+2000-12-29 01:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * mm-util.el (mm-enable-multibyte): Use
+       default-enable-multibyte-characters.
+       (mm-enable-multibyte-mule4): Ditto.
+       (mm-disable-multibyte): Test XEmacs.
+       (mm-disable-multibyte-mule4): Ditto.
+       (mm-with-unibyte-current-buffer): Simplified.
+       (mm-with-unibyte-current-buffer-mule4): Ditto.
+
+2000-12-28 19:44:56  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnheaderxm.el (nnheader-string-as-multibyte): New alias.
+
+       * nnheader.el (nnheader-string-as-multibyte): New alias.
+
+       * mm-view.el (mm-inline-text): Warn when bugging out in w3. 
+
+       * gnus-uu.el (gnus-message-process-mark): New function.
+       (gnus-uu-mark-by-regexp): Use it.
+       (gnus-new-processable): New function.
+
+2000-12-28 19:21:57  Inge Frick  <inge@nada.kth.se>
+
+       * gnus-sum.el (gnus-no-mark): New variable.
+
+2000-11-01 01:12:29  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nnwfm.el (nnwfm-create-mapping): Remove quote marks and
+       backslashes. 
+
 2000-12-26  Katsumi Yamaoka <yamaoka@jpl.org>
 
        * gnus-art.el (gnus-article-banner-alist): Remove duplicate
index 9215f25..0147921 100644 (file)
@@ -1,8 +1,7 @@
 ;;; binhex.el -- elisp native binhex decode
-;; Copyright (c) 1998 Free Software Foundation, Inc.
+;; Copyright (c) 1998, 1999, 2000 Free Software Foundation, Inc.
 
 ;; Author: Shenghuo Zhu <zsh@cs.rochester.edu>
-;; Create Date: Oct 1, 1998
 ;; Keywords: binhex news
 
 ;; This file is part of GNU Emacs.
index e34deae..6016405 100644 (file)
@@ -262,17 +262,23 @@ Try to re-configure with --with-addpath=FLIM_PATH and run make again.
 
 (defconst dgnushack-unexporting-files
   (append '("dgnushack.el" "dgnuspath.el" "lpath.el" "ptexinfmt.el")
-         (unless (or (condition-case nil
+         (unless (or (condition-case code
                          (require 'w3-forms)
-                       (error nil))
+                       (error
+                        (message "No w3: %s %s retrying..." code
+                                 (locate-library "w3-forms"))
+                        nil))
                      ;; Maybe mis-configured Makefile is used (e.g.
                      ;; configured for FSFmacs but XEmacs is running).
                      (let ((lp (delete dgnushack-w3-dir
                                        (copy-sequence load-path))))
-                       (when (condition-case nil
-                                 (let ((load-path lp))
-                                   (require 'w3-forms))
-                               (error nil))
+                       (when (let ((load-path lp))
+                               (condition-case code
+                                   (require 'w3-forms)
+                                 (error
+                                  (message "No w3: %s %s" code
+                                           (locate-library "w3-forms"))
+                                  nil)))
                          ;; If success, fix `load-path' for compiling.
                          (setq load-path lp))))
            '("nnweb.el" "nnlistserv.el" "nnultimate.el"
@@ -390,6 +396,13 @@ Modify to suit your needs."))
                                   (1+ (match-end 0))
                                 (point-max))))
              (goto-char (point-min))
+             ;; Remove "@anchor" if it is not supported.
+             (unless (fboundp 'texinfo-anchor)
+               (while (re-search-forward "^@anchor" nil t)
+                 (delete-region (match-beginning 0) (progn
+                                                      (forward-line 1)
+                                                      (point))))
+               (goto-char (point-min)))
              ;; Add suffix if it is needed.
              (when (and addsuffix
                         (re-search-forward
index b71c302..fd5f269 100644 (file)
@@ -382,7 +382,7 @@ agent minor mode in all Gnus buffers."
 
 (defun gnus-agent-insert-meta-information (type &optional method)
   "Insert meta-information into the message that says how it's to be posted.
-TYPE can be either `mail' or `news'.  If the latter METHOD can
+TYPE can be either `mail' or `news'.  If the latter, then METHOD can
 be a select method."
   (save-excursion
     (message-remove-header gnus-agent-meta-information-header)
index 8740a7b..fef33f3 100644 (file)
     "^List-[A-Za-z]+:" "^X-Listprocessor-Version:"
     "^X-Received:" "^X-Distribute:" "^X-Sequence:" "^X-Juno-Line-Breaks:"
     "^X-Notes-Item:" "^X-MS-TNEF-Correlator:" "^x-uunet-gateway:"
-    "^X-Received:" "^Content-length:" "X-precedence:")
+    "^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:")
   "*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."
@@ -933,6 +936,13 @@ See the manual for details."
   :group 'gnus-article-treat
   :type gnus-article-treat-head-custom)
 
+(defcustom gnus-treat-date-english nil
+  "Display the Date in a format that can be read aloud in English.
+Valid values are nil, t, `head', `last', an integer or a predicate.
+See the manual for details."
+  :group 'gnus-article-treat
+  :type gnus-article-treat-head-custom)
+
 (defcustom gnus-treat-date-lapsed nil
   "Display the Date header in a way that says how much time has elapsed.
 Valid values are nil, t, `head', `last', an integer or a predicate.
@@ -1103,6 +1113,10 @@ It is a string, such as \"PGP\". If nil, ask user."
 
 ;;; Internal variables
 
+(defvar gnus-english-month-names
+  '("January" "February" "March" "April" "May" "June" "July" "August"
+    "September" "October" "November" "December"))
+
 (defvar article-goto-body-goes-to-point-min-p nil)
 (defvar gnus-article-wash-types nil)
 (defvar gnus-article-emphasis-alist nil)
@@ -1119,6 +1133,13 @@ It is a string, such as \"PGP\". If nil, ask user."
     (gnus-treat-fill-long-lines gnus-article-fill-long-lines)
     (gnus-treat-strip-cr gnus-article-remove-cr)
     (gnus-treat-display-xface gnus-article-display-x-face)
+    (gnus-treat-date-ut gnus-article-date-ut)
+    (gnus-treat-date-local gnus-article-date-local)
+    (gnus-treat-date-english gnus-article-date-english)
+    (gnus-treat-date-lapsed gnus-article-date-lapsed)
+    (gnus-treat-date-original gnus-article-date-original)
+    (gnus-treat-date-user-defined gnus-article-date-user)
+    (gnus-treat-date-iso8601 gnus-article-date-iso8601)
     (gnus-treat-hide-headers gnus-article-maybe-hide-headers)
     (gnus-treat-hide-boring-headers gnus-article-hide-boring-headers)
     (gnus-treat-hide-signature gnus-article-hide-signature)
@@ -1131,12 +1152,6 @@ It is a string, such as \"PGP\". If nil, ask user."
     (gnus-treat-emphasize gnus-article-emphasize)
     (gnus-treat-highlight-citation gnus-article-highlight-citation)
     (gnus-treat-highlight-signature gnus-article-highlight-signature)
-    (gnus-treat-date-ut gnus-article-date-ut)
-    (gnus-treat-date-local gnus-article-date-local)
-    (gnus-treat-date-lapsed gnus-article-date-lapsed)
-    (gnus-treat-date-original gnus-article-date-original)
-    (gnus-treat-date-user-defined gnus-article-date-user)
-    (gnus-treat-date-iso8601 gnus-article-date-iso8601)
     (gnus-treat-strip-trailing-blank-lines
      gnus-article-remove-trailing-blank-lines)
     (gnus-treat-strip-leading-blank-lines
@@ -2411,6 +2426,26 @@ should replace the \"Date:\" one, or should be added below it."
           (if (> real-sec 0)
               " ago"
             " in the future"))))))
+     ;; Display the date in proper English
+     ((eq type 'english)
+      (let ((dtime (decode-time time)))
+       (concat
+        "Date: the "
+        (number-to-string (nth 3 dtime))
+        (let ((digit (% (nth 3 dtime) 10)))
+          (cond
+           ((= digit 1) "st")
+           ((= digit 2) "nd")
+           ((= digit 3) "rd")
+           (t "th")))
+        " of "
+        (nth (1- (nth 4 dtime)) gnus-english-month-names)
+        " "
+        (number-to-string (nth 5 dtime))
+        " at "
+        (format "%02d" (nth 2 dtime))
+        ":"
+        (format "%02d" (nth 1 dtime)))))
      (t
       (error "Unknown conversion type: %s" type)))))
 
@@ -2419,6 +2454,11 @@ should replace the \"Date:\" one, or should be added below it."
   (interactive (list t))
   (article-date-ut 'local highlight))
 
+(defun article-date-english (&optional highlight)
+  "Convert the current article date to something that is proper English."
+  (interactive (list t))
+  (article-date-ut 'english highlight))
+
 (defun article-date-original (&optional highlight)
   "Convert the current article date to what it was originally.
 This is only useful if you have used some other date conversion
@@ -2947,6 +2987,7 @@ If variable `gnus-use-long-file-name' is non-nil, it is
      article-strip-blank-lines
      article-strip-all-blank-lines
      article-date-local
+     article-date-english
      article-date-iso8601
      article-date-original
      article-date-ut
@@ -4041,7 +4082,9 @@ In no internal viewer is available, use an external viewer."
     ;;;!!! Most multipart/related is an HTML message plus images.
     ;;;!!! Unfortunately we are unable to let W3 display those 
     ;;;!!! included images, so we just display it as a mixed multipart.
-    (gnus-mime-display-mixed (cdr handle)))
+    ;;(gnus-mime-display-mixed (cdr handle))
+    ;;;!!! No, w3 can display everything just fine.
+    (gnus-mime-display-part (cadr handle)))
    ((equal (car handle) "multipart/signed")
     (or (memq 'signed gnus-article-wash-types)
        (push 'signed gnus-article-wash-types))
@@ -5915,11 +5958,10 @@ For example:
     (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))
-                                            (set-marker (make-marker)
-                                                        (point-max))))))
+    (mm-set-handle-multipart-parameter
+     handle 'gnus-region 
+     (cons (set-marker (make-marker) (point-min))
+          (set-marker (make-marker) (point-max))))))
 
 
 ;;; @ for mime-view
index 5f255b6..befdb5c 100644 (file)
@@ -486,7 +486,8 @@ Returns the list of articles removed."
                      ?. ?_)))
          ;; Translate the first colon into a slash.
          (when (string-match ":" group)
-           (aset group (match-beginning 0) ?/))
+                 (setq group (concat (substring group 0 (match-beginning 0))
+                                     "/" (substring group (match-end 0)))))
          (nnheader-replace-chars-in-string group ?. ?/)))
       t)
      gnus-cache-directory))))
index 681745c..77176e5 100644 (file)
@@ -440,7 +440,9 @@ If WIDTH (the numerical prefix), use that text width when filling."
          (narrow-to-region (caar marks) (caadr marks))
          (let ((adaptive-fill-regexp
                 (concat "^" (regexp-quote (cdar marks)) " *"))
-               (fill-prefix (cdar marks)))
+               (fill-prefix
+                (if (string= (cdar marks) "") ""
+                  (concat (cdar marks) " "))))
            (fill-region (point-min) (point-max)))
          (set-marker (caar marks) nil)
          (setq marks (cdr marks)))
index 6a77b8e..d647928 100644 (file)
@@ -1,5 +1,7 @@
 ;;; gnus-demon.el --- daemonic Gnus behaviour
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;;      Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: news
index 849dc9b..7106b0f 100644 (file)
 ;;;!!!but for the time being, we'll just run this tiny function uncompiled.
 
 (defun gnus-draft-setup-for-editing (narticle group)
-  (gnus-setup-message 'forward
-    (let ((article narticle))
-      (message-mail)
-      (erase-buffer)
-      (if (not (gnus-request-restore-buffer article group))
-         (error "Couldn't restore the article")
-       (funcall gnus-draft-decoding-function)
-       ;; Insert the separator.
-       (goto-char (point-min))
-       (search-forward "\n\n")
-       (forward-char -1)
-       (insert mail-header-separator)
-       (forward-line 1)
-       (message-set-auto-save-file-name)))))
+  (let (ga)
+    (gnus-setup-message 'forward
+      (let ((article narticle))
+       (message-mail)
+       (erase-buffer)
+       (if (not (gnus-request-restore-buffer article group))
+           (error "Couldn't restore the article")
+         (funcall gnus-draft-decoding-function)
+         ;; Insert the separator.
+         (goto-char (point-min))
+         (search-forward "\n\n")
+         (forward-char -1)
+         (insert mail-header-separator)
+         (forward-line 1)
+         (setq ga (message-fetch-field gnus-draft-meta-information-header))
+         (message-set-auto-save-file-name))))
+    (when (and ga
+              (ignore-errors (setq ga (car (read-from-string ga)))))
+      (setq message-post-method
+           `(lambda (arg)
+              (gnus-post-method arg ,(car ga))))
+      (message-add-action
+       `(gnus-add-mark ,(car ga) 'replied ,(cadr ga))
+       'send))))
 
 (defvar gnus-draft-send-draft-buffer " *send draft*")
 (defun gnus-draft-setup-for-sending (narticle group)
index 2bd19f4..f10f27d 100644 (file)
@@ -37,6 +37,7 @@
 (require 'gnus-win)
 (require 'gnus-undo)
 (require 'time-date)
+(require 'gnus-ems)
 
 (defcustom gnus-group-archive-directory
   "*ftp@ftp.hpc.uh.edu:/pub/emacs/ding-list/"
@@ -117,8 +118,8 @@ This function will be called with group info entries as the arguments
 for the groups to be sorted.  Pre-made functions include
 `gnus-group-sort-by-alphabet', `gnus-group-sort-by-real-name',
 `gnus-group-sort-by-unread', `gnus-group-sort-by-level',
-`gnus-group-sort-by-score', `gnus-group-sort-by-method', and
-`gnus-group-sort-by-rank'.
+`gnus-group-sort-by-score', `gnus-group-sort-by-method',
+`gnus-group-sort-by-server', and `gnus-group-sort-by-rank'.
 
 This variable can also be a list of sorting functions. In that case,
 the most significant sort function should be the last function in the
@@ -131,6 +132,7 @@ list."
                (function-item gnus-group-sort-by-level)
                (function-item gnus-group-sort-by-score)
                (function-item gnus-group-sort-by-method)
+               (function-item gnus-group-sort-by-server)
                (function-item gnus-group-sort-by-rank)
                (function :tag "other" nil)))
 
@@ -2677,6 +2679,12 @@ If REVERSE, sort in reverse order."
   (interactive "P")
   (gnus-group-sort-groups 'gnus-group-sort-by-method reverse))
 
+(defun gnus-group-sort-groups-by-server (&optional reverse)
+  "Sort the group buffer alphabetically by server name.
+If REVERSE, sort in reverse order."
+  (interactive "P")
+  (gnus-group-sort-groups 'gnus-group-sort-by-server reverse))
+
 ;;; Selected group sorting.
 
 (defun gnus-group-sort-selected-groups (n func &optional reverse)
@@ -2781,6 +2789,15 @@ sort in reverse order."
           (symbol-name (car (gnus-find-method-for-group
                              (gnus-info-group info2) info2)))))
 
+(defun gnus-group-sort-by-server (info1 info2)
+  "Sort alphabetically by server name."
+  (string< (gnus-method-to-server-name
+           (gnus-find-method-for-group
+            (gnus-info-group info1) info1))
+          (gnus-method-to-server-name
+           (gnus-find-method-for-group
+            (gnus-info-group info2) info2))))
+
 (defun gnus-group-sort-by-score (info1 info2)
   "Sort by group score."
   (< (gnus-info-score info1) (gnus-info-score info2)))
@@ -3766,7 +3783,8 @@ and the second element is the address."
            (setcar (nthcdr 2 entry) info)
            (when (and (not (eq (car entry) t))
                       (gnus-active (gnus-info-group info)))
-             (setcar entry (length (gnus-list-of-unread-articles (car info))))))
+             (setcar entry (length
+                            (gnus-list-of-unread-articles (car info))))))
        (error "No such group: %s" (gnus-info-group info))))))
 
 (defun gnus-group-set-method-info (group select-method)
@@ -3801,6 +3819,16 @@ and the second element is the address."
                     (sort (nconc (gnus-uncompress-range (cdr m))
                                  (copy-sequence articles)) '<) t))))))
 
+(defun gnus-add-mark (group mark article)
+  "Mark ARTICLE in GROUP with MARK, whether the group is displayed or not."
+  (let ((buffer (gnus-summary-buffer-name group)))
+    (if (gnus-buffer-live-p buffer)
+       (save-excursion
+         (set-buffer (get-buffer buffer))
+         (gnus-summary-add-mark article mark))
+      (gnus-add-marked-articles group (cdr (assq mark gnus-article-mark-lists))
+                               (list article)))))
+
 ;;;
 ;;; Group timestamps
 ;;;
index 486229f..06625a9 100644 (file)
@@ -247,6 +247,7 @@ Thank you for your help in stamping out bugs.
           (progn
             ,@forms)
         (gnus-inews-add-send-actions ,winconf ,buffer ,article)
+        (gnus-inews-insert-draft-meta-information ,group ,article)
         (setq gnus-message-buffer (current-buffer))
         (set (make-local-variable 'gnus-message-group-art)
              (cons ,group ,article))
@@ -256,6 +257,15 @@ Thank you for your help in stamping out bugs.
        (gnus-configure-windows ,config t)
        (set-buffer-modified-p nil))))
 
+(defun gnus-inews-insert-draft-meta-information (group article)
+  (save-excursion
+    (when (and group
+              (not (string= group ""))
+              (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"))))
+
 ;;;###autoload
 (defun gnus-msg-mail (&rest args)
   "Start editing a mail message to be sent.
@@ -269,8 +279,8 @@ Gcc: header for archiving purposes."
 
 ;;;###autoload
 (define-mail-user-agent 'gnus-user-agent
-      'gnus-msg-mail 'message-send-and-exit
-      'message-kill-buffer 'message-send-hook)
+  'gnus-msg-mail 'message-send-and-exit
+  'message-kill-buffer 'message-send-hook)
 
 (defun gnus-setup-posting-charset (group)
   (let ((alist gnus-group-posting-charset-alist)
@@ -415,7 +425,10 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
 
       (gnus-copy-article-buffer)
       (let ((message-reply-buffer gnus-article-copy)
-           (message-reply-headers gnus-current-headers))
+           (message-reply-headers 
+            (with-current-buffer gnus-article-copy
+              ;; The headers are decoded.
+              (nnheader-parse-head t))))
        (message-yank-original)
        (setq beg (or beg (mark t))))
       (when articles
@@ -815,7 +828,9 @@ If FULL-HEADERS (the prefix), include full headers when forwarding."
 
 (defun gnus-summary-resend-message (address n)
   "Resend the current article to ADDRESS."
-  (interactive "sResend message(s) to: \nP")
+  (interactive 
+   (list (message-read-from-minibuffer "Resend message(s) to: ") 
+        current-prefix-arg))
   (let ((articles (gnus-summary-work-articles n))
        article)
     (while (setq article (pop articles))
@@ -1202,7 +1217,7 @@ this is a reply."
                            (gnus-set-active group (cons (car active) 
                                                         (cdr group-art))))
                      (gnus-activate-group group)))
-                 (let ((buffer (concat "*Summary " group "*"))
+                 (let ((buffer (gnus-summary-buffer-name group))
                        (mark gnus-read-mark)
                        (article (cdr group-art)))
                    (unless 
index e527523..9a4c9ba 100644 (file)
@@ -1,5 +1,7 @@
 ;;; gnus-picon.el --- displaying pretty icons in Gnus
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;;      Free Software Foundation, Inc.
 
 ;; Author: Wes Hardaker <hardaker@ece.ucdavis.edu>
 ;; Keywords: news xpm annotation glyph faces
index 56d9ef7..dc617df 100644 (file)
@@ -1810,7 +1810,7 @@ score in GNUS-NEWSGROUP-SCORED by SCORE."
            (put-text-property (1- (point)) (point) 'articles alike))
          (setq alike (list art)
                last this)))
-      (when last ; Bwadr, duplicate code.
+      (when last                       ; Bwadr, duplicate code.
        (insert last ?\n)
        (put-text-property (1- (point)) (point) 'articles alike))
 
@@ -1819,7 +1819,7 @@ score in GNUS-NEWSGROUP-SCORED by SCORE."
        (setq alist (car scores)
              scores (cdr scores)
              entries (assoc header alist))
-       (while (cdr entries) ;First entry is the header index.
+       (while (cdr entries)            ;First entry is the header index.
          (let* ((rest (cdr entries))
                 (kill (car rest))
                 (match (nth 0 kill))
index 27af8ee..3501554 100644 (file)
@@ -373,8 +373,7 @@ This hook is called as the first thing when Gnus is started."
   :type 'hook)
 
 (defcustom gnus-after-getting-new-news-hook
-  (when (gnus-boundp 'display-time-timer)
-    '(display-time-event-handler))
+  '(gnus-display-time-event-handler)
   "A hook run after Gnus checks for new news when Gnus is already running."
   :group 'gnus-group-new
   :type 'hook)
@@ -2816,6 +2815,11 @@ If this variable is nil, don't do anything."
            (file-name-as-directory (expand-file-name gnus-default-directory))
          default-directory)))
 
+(defun gnus-display-time-event-handler ()
+  "Like `display-time-event-handler', but test `display-time-timer'."
+  (when (gnus-boundp 'display-time-timer)
+    (display-time-event-handler)))
+
 (provide 'gnus-start)
 
 ;;; gnus-start.el ends here
index c32c19c..9c165f9 100644 (file)
@@ -458,6 +458,11 @@ this variable specifies group names."
   :group 'gnus-summary-marks
   :type 'character)
 
+(defcustom gnus-no-mark ?  ;Whitespace
+  "*Mark used for articles that have no other secondary mark."
+  :group 'gnus-summary-marks
+  :type 'character)
+
 (defcustom gnus-ancient-mark ?O
   "*Mark used for ancient articles."
   :group 'gnus-summary-marks
@@ -1643,6 +1648,7 @@ increase the score of each group you read."
     "z" gnus-article-date-ut
     "u" gnus-article-date-ut
     "l" gnus-article-date-local
+    "p" gnus-article-date-english
     "e" gnus-article-date-lapsed
     "o" gnus-article-date-original
     "i" gnus-article-date-iso8601
@@ -1715,7 +1721,6 @@ increase the score of each group you read."
       "Score"
       (nconc
        (list
-       ["Enter score..." gnus-summary-score-entry t]
        ["Customize" gnus-score-customize t])
        (gnus-make-score-map 'increase)
        (gnus-make-score-map 'lower)
@@ -2614,9 +2619,13 @@ display only a single character."
          (aset table i [??]))))
     (setq buffer-display-table table)))
 
+(defun gnus-summary-buffer-name (group)
+  "Return the summary buffer name of GROUP."
+  (concat "*Summary " group "*"))
+
 (defun gnus-summary-setup-buffer (group)
   "Initialize summary buffer."
-  (let ((buffer (concat "*Summary " group "*")))
+  (let ((buffer (gnus-summary-buffer-name group)))
     (if (get-buffer buffer)
        (progn
          (set-buffer buffer)
@@ -2802,7 +2811,7 @@ buffer that was in action when the last article was fetched."
                (gnus-tmp-replied gnus-replied-mark)
                ((memq gnus-tmp-current gnus-newsgroup-saved)
                 gnus-saved-mark)
-               (t gnus-unread-mark)))
+               (t gnus-no-mark)))
         (gnus-tmp-from (mail-header-from gnus-tmp-header))
         (gnus-tmp-name
          (cond
@@ -4190,7 +4199,7 @@ or a straight list of headers."
                    gnus-replied-mark)
                   ((memq number gnus-newsgroup-saved)
                    gnus-saved-mark)
-                  (t gnus-unread-mark))
+                  (t gnus-no-mark))
             gnus-tmp-from (mail-header-from gnus-tmp-header)
             gnus-tmp-name
             (cond
@@ -8402,6 +8411,20 @@ the actual number of articles unmarked is returned."
       (gnus-summary-remove-process-mark (car gnus-newsgroup-processable))))
   (gnus-summary-position-point))
 
+(defun gnus-summary-add-mark (article type)
+  "Mark ARTICLE with a mark of TYPE."
+  (let ((vtype (car (assq type gnus-article-mark-lists)))
+       var)
+    (if (not vtype)
+       (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))
+         (gnus-summary-update-secondary-mark article)
+       ;;; !!! This is bobus.  We should find out what primary
+       ;;; !!! mark we want to set.
+       (gnus-summary-update-mark gnus-del-mark 'unread)))))
+       
 (defun gnus-summary-mark-as-expirable (n)
   "Mark N articles forward as expirable.
 If N is negative, mark backward instead.  The difference between N and
@@ -8642,7 +8665,7 @@ Iff NO-EXPIRE, auto-expiry will be inhibited."
          gnus-replied-mark)
         ((memq article gnus-newsgroup-saved)
          gnus-saved-mark)
-        (t gnus-unread-mark))
+        (t gnus-no-mark))
    'replied)
   (when (gnus-visual-p 'summary-highlight 'highlight)
     (gnus-run-hooks 'gnus-summary-update-hook))
@@ -8786,6 +8809,11 @@ The difference between N and the number of marks cleared is returned."
              (gnus-read-mark-p mark))
       (gnus-summary-mark-article gnus-current-article gnus-read-mark))))
 
+(defun gnus-summary-mark-unread-as-ticked ()
+   "Intended to be used by `gnus-summary-mark-article-hook'."
+  (when (memq gnus-current-article gnus-newsgroup-unreads)
+    (gnus-summary-mark-article gnus-current-article gnus-ticked-mark)))
+
 (defun gnus-summary-mark-region-as-read (point mark all)
   "Mark all unread articles between point and mark as read.
 If given a prefix, mark all articles between point and mark as read,
@@ -8859,7 +8887,7 @@ even ticked and dormant ones."
     (let ((scored gnus-newsgroup-scored)
          headers h)
       (while scored
-       (unless (gnus-summary-goto-subject (caar scored))
+       (unless (gnus-number-to-header (caar scored))
          (and (setq h (gnus-summary-article-header (caar scored)))
               (< (cdar scored) gnus-summary-expunge-below)
               (push h headers)))
index 85ce328..38c253e 100644 (file)
        (delete-char 1))
       (goto-char (next-single-property-change (point) prop nil (point-max))))))
 
+(require 'nnheader)
 (defun gnus-newsgroup-directory-form (newsgroup)
   "Make hierarchical directory name from NEWSGROUP name."
-  (let ((newsgroup (gnus-newsgroup-savable-name newsgroup))
-       (len (length newsgroup))
-       idx)
-    ;; If this is a foreign group, we don't want to translate the
-    ;; entire name.
-    (if (setq idx (string-match ":" newsgroup))
-       (aset newsgroup idx ?/)
-      (setq idx 0))
-    ;; Replace all occurrences of `.' with `/'.
-    (while (< idx len)
-      (when (= (aref newsgroup idx) ?.)
-       (aset newsgroup idx ?/))
-      (setq idx (1+ idx)))
-    newsgroup))
+  (let* ((newsgroup (gnus-newsgroup-savable-name newsgroup))
+        (idx (string-match ":" newsgroup)))
+    (concat
+     (if idx (substring newsgroup 0 idx))
+     (if idx "/")
+     (nnheader-replace-chars-in-string
+      (if idx (substring newsgroup (1+ idx)) newsgroup)
+      ?. ?/))))
 
 (defun gnus-newsgroup-savable-name (group)
   ;; Replace any slashes in a group name (eg. an ange-ftp nndoc group)
index 993914b..6b8d330 100644 (file)
@@ -571,17 +571,40 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
 ;; Process marking.
 
+(defun gnus-message-process-mark (unmarkp new-marked)
+  (let ((old (- (length gnus-newsgroup-processable) (length new-marked))))
+    (message "%d mark%s %s%s"
+            (length new-marked)
+            (if (= (length new-marked) 1) "" "s")
+            (if unmarkp "removed" "added")
+            (cond
+             ((and (zerop old)
+                   (not unmarkp))
+              "")
+             (unmarkp
+              (format ", %d remain marked"
+                      (length gnus-newsgroup-processable)))
+             (t
+              (format ", %d already marked" old))))))
+
+(defun gnus-new-processable (unmarkp articles)
+  (if unmarkp
+      (gnus-intersection gnus-newsgroup-processable articles)
+    (gnus-set-difference articles gnus-newsgroup-processable)))
+
 (defun gnus-uu-mark-by-regexp (regexp &optional unmark)
   "Set the process mark on articles whose subjects match REGEXP.
 When called interactively, prompt for REGEXP.
 Optional UNMARK non-nil means unmark instead of mark."
   (interactive "sMark (regexp): \nP")
-  (let ((articles (gnus-uu-find-articles-matching regexp)))
-    (while articles
-      (if unmark
-         (gnus-summary-remove-process-mark (pop articles))
-       (gnus-summary-set-process-mark (pop articles))))
-    (message ""))
+  (save-excursion
+    (let* ((articles (gnus-uu-find-articles-matching regexp))
+          (new-marked (gnus-new-processable unmark articles)))
+      (while articles
+       (if unmark
+           (gnus-summary-remove-process-mark (pop articles))
+         (gnus-summary-set-process-mark (pop articles))))
+      (gnus-message-process-mark unmark new-marked)))
   (gnus-summary-position-point))
 
 (defun gnus-uu-unmark-by-regexp (regexp)
index 407890b..0a4ac35 100644 (file)
@@ -31,7 +31,7 @@
 (require 'product)
 (provide 'gnus-vers)
 
-(defconst gnus-revision-number "01"
+(defconst gnus-revision-number "02"
   "Revision number for this version of gnus.")
 
 ;; Product information of this gnus.
index d21cfa7..84dc234 100644 (file)
@@ -1,5 +1,7 @@
 ;;; gnus-xmas.el --- Gnus functions for XEmacs
-;; Copyright (C) 1995,96,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000
+;;      Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     Katsumi Yamaoka <yamaoka@jpl.org>
index d530de1..97ac96f 100644 (file)
@@ -1650,6 +1650,7 @@ If nil, no default charset is assumed when posting."
 
 (defvar gnus-agent-gcc-header "X-Gnus-Agent-Gcc")
 (defvar gnus-agent-meta-information-header "X-Gnus-Agent-Meta-Information")
+(defvar gnus-draft-meta-information-header "X-Draft-From")
 (defvar gnus-group-get-parameter-function 'gnus-group-get-parameter)
 (defvar gnus-original-article-buffer " *Original Article*")
 (defvar gnus-newsgroup-name nil)
@@ -1661,9 +1662,6 @@ If nil, no default charset is assumed when posting."
 (defvar gnus-agent-fetching nil
   "Whether Gnus agent is in fetching mode.")
 
-(defvar gnus-agent-fetching nil
-  "Whether Gnus agent is in fetching mode.")
-
 (defvar gnus-command-method nil
   "Dynamically bound variable that says what the current backend is.")
 
@@ -2616,21 +2614,24 @@ that that variable is buffer-local to the summary buffers."
       (and active
           (file-exists-p active))))))
 
+(defsubst gnus-method-to-server-name (method)
+  (concat
+   (format "%s" (car method))
+   (when (and
+         (or (assoc (format "%s" (car method))
+                    (gnus-methods-using 'address))
+             (gnus-server-equal method gnus-message-archive-method))
+         (nth 1 method)
+         (not (string= (nth 1 method) "")))
+     (concat "+" (nth 1 method)))))
+
 (defun gnus-group-prefixed-name (group method)
   "Return the whole name from GROUP and METHOD."
   (and (stringp method) (setq method (gnus-server-to-method method)))
   (if (or (not method)
          (gnus-server-equal method "native"))
       group
-    (concat (format "%s" (car method))
-           (when (and
-                  (or (assoc (format "%s" (car method))
-                             (gnus-methods-using 'address))
-                      (gnus-server-equal method gnus-message-archive-method))
-                  (nth 1 method)
-                  (not (string= (nth 1 method) "")))
-             (concat "+" (nth 1 method)))
-           ":" group)))
+    (concat (gnus-method-to-server-name method) ":" group)))
 
 (defun gnus-group-real-prefix (group)
   "Return the prefix of the current group name."
index ff93cba..93b8433 100644 (file)
@@ -13,6 +13,7 @@
 
 (maybe-fbind '(babel-fetch
               babel-wash create-image decode-coding-string display-graphic-p
+              display-time-event-handler
               find-image font-create-object gnus-mule-get-coding-system
               font-lock-set-defaults
               image-size image-type-available-p insert-image
@@ -61,7 +62,8 @@
                     set-buffer-multibyte set-char-table-range
                     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))
+                    window-edges x-color-values x-popup-menu browse-url
+                    frame-char-height frame-char-width))
       (maybe-bind '(buffer-display-table
                    buffer-file-coding-system font-lock-defaults
                    global-face-data gnus-article-x-face-too-ugly
index 6d03623..21de9a8 100644 (file)
@@ -232,13 +232,14 @@ included.  Organization, Lines and User-Agent are optional."
   :type 'sexp)
 
 (defcustom message-ignored-news-headers
-  "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:"
+  "^NNTP-Posting-Host:\\|^Xref:\\|^[BGF]cc:\\|^Resent-Fcc:\\|X-Draft-From:"
   "*Regexp of headers to be removed unconditionally before posting."
   :group 'message-news
   :group 'message-headers
   :type 'regexp)
 
-(defcustom message-ignored-mail-headers "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:"
+(defcustom message-ignored-mail-headers
+  "^[GF]cc:\\|^Resent-Fcc:\\|^Xref:\\|X-Draft-From:"
   "*Regexp of headers to be removed unconditionally before mailing."
   :group 'message-mail
   :group 'message-headers
@@ -644,6 +645,12 @@ The function `message-supersede' runs this hook."
   :group 'message-various
   :type 'hook)
 
+(defcustom message-minibuffer-local-map 
+  (let ((map (make-sparse-keymap 'message-minibuffer-local-map)))
+    (set-keymap-parent map minibuffer-local-map)
+    map)
+  "Keymap for `message-read-from-minibuffer'.")
+
 ;;;###autoload
 (defcustom message-citation-line-function 'message-insert-citation-line
   "*Function called to insert the \"Whomever writes:\" line."
@@ -1661,7 +1668,7 @@ Return the number of headers removed."
   (goto-char (point-min)))
 
 (defun message-narrow-to-head-1 ()
-  "Like `message-narrow-to-head'. Don't widen."
+  "Like `message-narrow-to-head'.  Don't widen."
   (narrow-to-region
    (goto-char (point-min))
    (if (search-forward "\n\n" nil 1)
@@ -1810,6 +1817,7 @@ Point is left at the beginning of the narrowed-to region."
   (define-key message-mode-map "\M-q" 'message-fill-paragraph)
 
   (define-key message-mode-map "\t" 'message-tab)
+  (define-key message-mode-map "\M-;" 'comment-region)
 
   (define-key message-mode-map "\C-x\C-s" 'message-save-drafts)
   (define-key message-mode-map "\C-xk" 'message-mimic-kill-buffer))
@@ -1935,8 +1943,6 @@ M-RET    message-newline-and-reformat (break the line and reformat)."
   (message-setup-fill-variables)
   ;; Allow using comment commands to add/remove quoting.
   (set (make-local-variable 'comment-start) message-yank-prefix)
-  ;;(when (fboundp 'mail-hist-define-keys)
-  ;;  (mail-hist-define-keys))
   (if (featurep 'xemacs)
       (message-setup-toolbar)
     (set (make-local-variable 'font-lock-defaults)
@@ -2083,10 +2089,12 @@ a string \"never\" is inserted in default."
   (interactive)
   (message-position-on-field "Summary" "Subject"))
 
-(defun message-goto-body ()
+(defun message-goto-body (&optional interactivep)
   "Move point to the beginning of the message body."
-  (interactive)
-  (if (looking-at "[ \t]*\n") (expand-abbrev))
+  (interactive (list t))
+  (when (and interactivep
+            (looking-at "[ \t]*\n"))
+    (expand-abbrev))
   (goto-char (point-min))
   (or (search-forward (concat "\n" mail-header-separator "\n") nil t)
       (search-forward "\n\n" nil t)))
@@ -3917,10 +3925,7 @@ If NOW, use that time instead."
   (save-excursion
     (save-restriction
       (widen)
-      (goto-char (point-min))
-      (re-search-forward
-       (concat "^" (regexp-quote mail-header-separator) "$"))
-      (forward-line 1)
+      (message-goto-body)
       (int-to-string (count-lines (point) (point-max))))))
 
 (defun message-make-in-reply-to ()
@@ -4805,20 +4810,21 @@ responses here are directed to other addresses.")))
       ;; Allow customizations to have their say.
       (if (not wide)
          ;; This is a regular reply.
-         (if (message-functionp message-reply-to-function)
-             (setq follow-to (funcall message-reply-to-function)))
-       ;; This is a followup.
-       (if (message-functionp message-wide-reply-to-function)
+         (when (message-functionp message-reply-to-function)
            (save-excursion
-             (setq follow-to
-                   (funcall message-wide-reply-to-function)))))
+             (setq follow-to (funcall message-reply-to-function))))
+       ;; This is a followup.
+       (when (message-functionp message-wide-reply-to-function)
+         (save-excursion
+           (setq follow-to
+                 (funcall message-wide-reply-to-function)))))
       (setq message-id (message-fetch-field "message-id" t)
            references (message-fetch-field "references")
            date (message-fetch-field "date")
            from (message-fetch-field "from")
            subject (or (message-fetch-field "subject") "none"))
-      (if gnus-list-identifiers
-         (setq subject (message-strip-list-identifiers subject)))
+      (when gnus-list-identifiers
+       (setq subject (message-strip-list-identifiers subject)))
       (setq subject (message-make-followup-subject subject))
 
       (when (and (setq gnus-warning (message-fetch-field "gnus-warning"))
@@ -5712,9 +5718,11 @@ regexp varstr."
   "Read from the minibuffer while providing abbrev expansion."
   (if (fboundp 'mail-abbrevs-setup)
       (let ((mail-abbrev-mode-regexp "")
-           (minibuffer-setup-hook 'mail-abbrevs-setup))
+           (minibuffer-setup-hook 'mail-abbrevs-setup)
+           (minibuffer-local-map message-minibuffer-local-map))
        (read-from-minibuffer prompt))
-    (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook))
+    (let ((minibuffer-setup-hook 'mail-abbrev-minibuffer-setup-hook)
+         (minibuffer-local-map message-minibuffer-local-map))
       (read-string prompt))))
 
 (defun message-use-alternative-email-as-from ()
index 62f2cd4..b3be4ee 100644 (file)
@@ -1,5 +1,7 @@
 ;;; messagexmas.el --- XEmacs extensions to message
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;;      Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Keywords: mail, news
index 9983a8f..28d202e 100644 (file)
@@ -112,16 +112,32 @@ If no encoding was done, nil is returned."
              (setq start nil))
            charset)))))))
 
-(eval-when-compile (defvar message-posting-charset))
+(defun mm-long-lines-p (length)
+  "Say whether any of the lines in the buffer is longer than LINES."
+  (save-excursion
+    (goto-char (point-min))
+    (end-of-line)
+    (while (and (not (eobp))
+               (not (> (current-column) length)))
+      (forward-line 1)
+      (end-of-line))
+    (and (> (current-column) length)
+        (current-column))))
+
+(defvar message-posting-charset)
 
 (defun mm-body-encoding (charset &optional encoding)
   "Do Content-Transfer-Encoding and return the encoding of the current buffer."
-  (let ((bits (mm-body-7-or-8)))
+  (let ((bits (mm-body-7-or-8))
+       (longp (mm-long-lines-p 1000)))
     (require 'message)
     (cond
-     ((and (not mm-use-ultra-safe-encoding) (eq bits '7bit))
+     ((and (not mm-use-ultra-safe-encoding)
+          (not longp)
+          (eq bits '7bit))
       bits)
      ((and (not mm-use-ultra-safe-encoding)
+          (not longp)
           (or (eq t (cdr message-posting-charset))
               (memq charset (cdr message-posting-charset))
               (eq charset mail-parse-charset)))
index dea9759..c1e1c53 100644 (file)
@@ -230,23 +230,26 @@ used as the line break code type of the coding system."
   "Set the multibyte flag of the current buffer.
 Only do this if the default value of `enable-multibyte-characters' is
 non-nil.  This is a no-op in XEmacs."
-  (when (and (fboundp 'set-buffer-multibyte)
-             (boundp 'enable-multibyte-characters)
-            (default-value 'enable-multibyte-characters))
+  (when (and (not (featurep 'xemacs))
+             (boundp 'default-enable-multibyte-characters)
+            default-enable-multibyte-characters
+            (fboundp 'set-buffer-multibyte))
     (set-buffer-multibyte t)))
 
 (defsubst mm-disable-multibyte ()
   "Unset the multibyte flag of in the current buffer.
 This is a no-op in XEmacs."
-  (when (fboundp 'set-buffer-multibyte)
+  (when (and (not (featurep 'xemacs))
+            (fboundp 'set-buffer-multibyte))
     (set-buffer-multibyte nil)))
 
 (defsubst mm-enable-multibyte-mule4 ()
   "Enable multibyte in the current buffer.
 Only used in Emacs Mule 4."
-  (when (and (fboundp 'set-buffer-multibyte)
-             (boundp 'enable-multibyte-characters)
-            (default-value 'enable-multibyte-characters)
+  (when (and (not (featurep 'xemacs))
+             (boundp 'default-enable-multibyte-characters)
+            default-enable-multibyte-characters
+            (fboundp 'set-buffer-multibyte)
             (fboundp 'charsetp)
             (not (charsetp 'eight-bit-control)))
     (set-buffer-multibyte t)))
@@ -254,7 +257,8 @@ Only used in Emacs Mule 4."
 (defsubst mm-disable-multibyte-mule4 ()
   "Disable multibyte in the current buffer.
 Only used in Emacs Mule 4."
-  (when (and (fboundp 'set-buffer-multibyte)
+  (when (and (not (featurep 'xemacs))
+            (fboundp 'set-buffer-multibyte)
             (fboundp 'charsetp)
             (not (charsetp 'eight-bit-control)))
     (set-buffer-multibyte nil)))
@@ -356,15 +360,19 @@ Use unibyte mode for this."
   "Evaluate FORMS with current current buffer temporarily made unibyte.
 Also bind `default-enable-multibyte-characters' to nil.
 Equivalent to `progn' in XEmacs"
-  (let ((multibyte (make-symbol "multibyte")))
-    `(if (fboundp 'set-buffer-multibyte)
-        (let ((,multibyte enable-multibyte-characters))
+  (let ((buffer (make-symbol "buffer")))
+    `(if (and (not (featurep 'xemacs))
+             (boundp 'enable-multibyte-characters)
+             enable-multibyte-characters
+             (fboundp 'set-buffer-multibyte))
+        (let ((,buffer (current-buffer)))
           (unwind-protect
               (let (default-enable-multibyte-characters)
                 (set-buffer-multibyte nil)
                 ,@forms)
-            (set-buffer-multibyte ,multibyte)))
-       (progn
+            (set-buffer ,buffer)
+            (set-buffer-multibyte t)))
+       (let (default-enable-multibyte-characters)
         ,@forms))))
 (put 'mm-with-unibyte-current-buffer 'lisp-indent-function 0)
 (put 'mm-with-unibyte-current-buffer 'edebug-form-spec '(body))
@@ -372,23 +380,22 @@ Equivalent to `progn' in XEmacs"
 (defmacro mm-with-unibyte-current-buffer-mule4 (&rest forms)
   "Evaluate FORMS there like `progn' in current buffer.
 Mule4 only."
-  (let ((multibyte (make-symbol "multibyte")))
-    `(if (or (featurep 'xemacs)
-            (not (fboundp 'set-buffer-multibyte))
-            (not (fboundp 'charsetp))
-            (charsetp 'eight-bit-control)) ;; For Emacs Mule 4 only.
-        (progn
-          ,@forms)
-       (let ((,multibyte (default-value 'enable-multibyte-characters)))
+  (let ((buffer (make-symbol "buffer")))
+    `(if (and (not (featurep 'xemacs))
+             (boundp 'enable-multibyte-characters)
+             enable-multibyte-characters
+             (fboundp 'set-buffer-multibyte)
+             (fboundp 'charsetp)
+             (not (charsetp 'eight-bit-control))) ;; For Emacs Mule 4 only.
+       (let ((,buffer (current-buffer)))
         (unwind-protect
-            (let ((buffer-file-coding-system mm-binary-coding-system)
-                  (coding-system-for-read mm-binary-coding-system)
-                  (coding-system-for-write mm-binary-coding-system))
+            (let (default-enable-multibyte-characters)
               (set-buffer-multibyte nil)
-              (setq-default enable-multibyte-characters nil)
               ,@forms)
-          (setq-default enable-multibyte-characters ,multibyte)
-          (set-buffer-multibyte ,multibyte))))))
+          (set-buffer ,buffer)
+          (set-buffer-multibyte t)))
+       (let (default-enable-multibyte-characters)
+        ,@forms))))
 (put 'mm-with-unibyte-current-buffer-mule4 'lisp-indent-function 0)
 (put 'mm-with-unibyte-current-buffer-mule4 'edebug-form-spec '(body))
 
index a2352df..f6f43ac 100644 (file)
@@ -275,10 +275,12 @@ Return that buffer."
       (if (search-forward "\n\n" nil t)
          (delete-region (point-min) (point)))
       (if (re-search-forward mm-uu-pgp-beginning-signature nil t)
-         (delete-region (match-beginning 0) (point-max))))
-    (list
-     (mm-make-handle buf
-                    '("text/plain"  (charset . gnus-decoded))))))
+         (delete-region (match-beginning 0) (point-max)))
+      (goto-char (point-min))
+      (while (re-search-forward "^- " nil t)
+       (replace-match "" t t)
+       (forward-line 1)))
+    (list (mm-make-handle buf '("text/plain" (charset . gnus-decoded))))))
 
 (defun mm-uu-pgp-signed-extract ()
   (let ((mm-security-handle (list (format "multipart/signed"))))
index d55eb79..d2a67a0 100644 (file)
                      (url-standalone-mode t))
                  (condition-case var
                      (w3-region (point-min) (point-max))
-                   (error)))))
+                   (error
+                    (message
+                     "Error while rendering html; showing as text/plain"))))))
            (mm-handle-set-undisplayer
             handle
             `(lambda ()
index 200dea0..eb7c7f5 100644 (file)
@@ -299,7 +299,8 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
              (with-temp-buffer
                (setq charset (mm-charset-to-coding-system 
                               (cdr (assq 'charset cont))))
-               (if (eq charset 'ascii) (setq charset nil))
+               (when (eq charset 'ascii)
+                 (setq charset nil))
                (cond
                 ((cdr (assq 'buffer cont))
                  (insert-buffer-substring (cdr (assq 'buffer cont))))
@@ -316,7 +317,8 @@ If MML is non-nil, return the buffer up till the correspondent mml tag."
                    ;; Remove quotes from quoted tags.
                    (goto-char (point-min))
                    (while (re-search-forward
-                           "<#!+/?\\(part\\|multipart\\|external\\|mml\\)" nil t)
+                           "<#!+/?\\(part\\|multipart\\|external\\|mml\\)"
+                           nil t)
                      (delete-region (+ (match-beginning 0) 2)
                                     (+ (match-beginning 0) 3))))))
                (cond 
index 4868f01..30eb2e2 100644 (file)
@@ -1,5 +1,6 @@
 ;;; nndb.el --- nndb access for Gnus
-;; Copyright (C) 1997,98 Free Software Foundation, Inc.
+
+;; Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
 
 ;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
 ;;         Kai Grossjohann <grossjohann@ls6.informatik.uni-dortmund.de>
index fb18a1c..ba9dc38 100644 (file)
@@ -37,6 +37,9 @@
 (require 'gnus-util)
 (require 'gnus-range)
 
+(eval-and-compile
+  (autoload 'gnus-intersection "gnus-range"))
+
 (nnoo-declare nnfolder)
 
 (defvoo nnfolder-directory (expand-file-name message-directory)
@@ -141,6 +144,10 @@ all.  This may very well take some time.")
            'headers
          (if (nnfolder-retrieve-headers-with-nov articles fetch-old)
              'nov
+           (setq articles (gnus-sorted-intersection 
+                           ;; Is ARTICLES sorted?
+                           (sort articles '<)
+                           (nnfolder-existing-articles)))
            (while (setq article (pop articles))
              (set-buffer nnfolder-current-buffer)
              (when (nnfolder-goto-article article)
@@ -337,13 +344,13 @@ all.  This may very well take some time.")
       (let ((marker (concat "\n" nnfolder-article-marker))
            (number "[0-9]+")
            numbers)
-      
        (while (and (search-forward marker nil t)
                    (re-search-forward number nil t))
          (let ((newnum (string-to-number (match-string 0))))
            (if (nnmail-within-headers-p)
                (push newnum numbers))))
-       numbers))))
+       ;; The article numbers are increasing, so this result is sorted.
+       (nreverse numbers)))))
 
 (deffoo nnfolder-request-expire-articles
     (articles newsgroup &optional server force)
@@ -354,7 +361,7 @@ all.  This may very well take some time.")
         ;; The articles that really exist and will
         ;; be expired if they are old enough.
         (maybe-expirable
-         (gnus-intersection articles (nnfolder-existing-articles))))
+         (gnus-sorted-intersection articles (nnfolder-existing-articles))))
     (nnmail-activate 'nnfolder)
 
     (save-excursion
index 046d4b4..7d216c1 100644 (file)
@@ -37,6 +37,7 @@
 (require 'mail-utils)
 (require 'mime)
 (eval-and-compile
+  (autoload 'gnus-sorted-intersection "gnus-range")
   (autoload 'gnus-intersection "gnus-range")
   (autoload 'gnus-sorted-complement "gnus-range"))
 
@@ -1133,6 +1134,7 @@ find-file-hooks, etc.
 (defalias 'nnheader-run-at-time 'run-at-time)
 (defalias 'nnheader-cancel-timer 'cancel-timer)
 (defalias 'nnheader-cancel-function-timers 'cancel-function-timers)
+(defalias 'nnheader-string-as-multibyte 'string-as-multibyte)
 
 (defun nnheader-Y-or-n-p (prompt)
   "Ask user a \"Y/n\" question. Return t if answer is neither \"n\", \"N\" nor \"C-g\"."
index 7ec301a..22d44b5 100644 (file)
@@ -1,5 +1,7 @@
 ;;; nnheaderxm.el --- making Gnus backends work under XEmacs
-;; Copyright (C) 1996,97,98,99 Free Software Foundation, Inc.
+
+;; Copyright (C) 1996, 1997, 1998, 1999, 2000
+;;      Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;;     Katsumi Yamaoka  <yamaoka@jpl.org>
@@ -56,6 +58,7 @@
 (defalias 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
 (defalias 'nnheader-cancel-timer 'delete-itimer)
 (defalias 'nnheader-cancel-function-timers 'ignore)
+(defalias 'nnheader-string-as-multibyte 'identity)
 (defalias 'nnheader-Y-or-n-p 'nnheader-xmas-Y-or-n-p)
 
 (provide 'nnheaderxm)
index f2bf49d..197866f 100644 (file)
@@ -153,7 +153,7 @@ number of days) -- this doesn't have to be an integer.  This variable
 can also be `immediate' and `never'."
   :group 'nnmail-expire
   :type '(choice (const immediate)
-                (integer :tag "days")
+                (number :tag "days")
                 (const never)))
 
 (defcustom nnmail-expiry-wait-function nil
index 481d678..6f1bd6b 100644 (file)
@@ -37,8 +37,6 @@
 (require 'nnheader)
 (require 'nnmail)
 (require 'nnoo)
-(eval-and-compile
-  (autoload 'gnus-sorted-intersection "gnus-range"))
 
 (nnoo-declare nnml)
 
index 1a9ac54..4fcb011 100644 (file)
                    (nnweb-decode-entities-string (match-string 1)))
              (re-search-forward "<url>\\([^<]+\\)</url>")
              (setq sid (match-string 1))
-             (string-match "/\\([0-9/]+\\)\\(.shtml\\|$\\)" sid)
-             (setq sid (concat "00/" (match-string 1 sid)))
+             (string-match "sid=\\([0-9/]+\\)\\(.shtml\\|$\\)" sid)
+             (setq sid (match-string 1 sid))
              (re-search-forward "<comments>\\([^<]+\\)</comments>")
              (setq articles (string-to-number (match-string 1)))
              (setq gname (concat description " (" sid ")"))
index 542e59c..05147ed 100644 (file)
@@ -979,6 +979,8 @@ password contained in '~/.nntp-authinfo'."
             nil))))
     (when timer
       (nnheader-cancel-timer timer))
+    (unless process
+      (nntp-kill-buffer pbuffer))
     (when (and (buffer-name pbuffer)
               process)
       (process-kill-without-query process)
index dcdf4d4..628b0c8 100644 (file)
@@ -691,7 +691,7 @@ and `altavista'.")
 (defun nnweb-insert-html (parse)
   "Insert HTML based on a w3 parse tree."
   (if (stringp parse)
-      (insert parse)
+      (insert (nnheader-string-as-multibyte parse))
     (insert "<" (symbol-name (car parse)) " ")
     (insert (mapconcat
             (lambda (param)
index 5ec1a06..130c689 100644 (file)
                     (format "Item.asp?GroupID=%d&ThreadID=%d" sid
                             thread-id)))
            (goto-char (point-min))
-           (setq contents
-                 (ignore-errors (w3-parse-buffer (current-buffer))))
-           (setq tables (caddar (caddar (cdr (caddar (caddar contents))))))
+           (setq tables (caddar
+                         (caddar
+                          (cdr (caddar
+                                (caddar
+                                 (ignore-errors
+                                   (w3-parse-buffer (current-buffer)))))))))
            (setq tables (cdr (caddar (memq (assq 'div tables) tables))))
            (setq contents nil)
            (dolist (table tables)
-             (setq table (caddar (caddar (caddr table)))
-                   hstuff (delete ":link" (nnweb-text (car table)))
-                   bstuff (car (caddar (cdr table)))
-                   from (car hstuff))
-             (when (nth 2 hstuff)
-               (setq time (nnwfm-date-to-time (nth 2 hstuff)))
-               (push (list from time bstuff) contents)))
+             (when (eq (car table) 'table)
+               (setq table (caddar (caddar (caddr table)))
+                     hstuff (delete ":link" (nnweb-text (car table)))
+                     bstuff (car (caddar (cdr table)))
+                     from (car hstuff))
+               (when (nth 2 hstuff)
+                 (setq time (nnwfm-date-to-time (nth 2 hstuff)))
+                 (push (list from time bstuff) contents))))
            (setq contents (nreverse contents))
            (dolist (art (cdr elem))
                (push (list (car art)
        (while (re-search-forward "  wr(" nil t)
          (forward-char -1)
          (setq elem (message-tokenize-header
-                     (buffer-substring
-                      (1+ (point))
-                      (progn
-                        (forward-sexp 1)
-                        (1- (point))))))
+                     (nnweb-replace-in-string
+                      (buffer-substring
+                       (1+ (point))
+                       (progn
+                         (forward-sexp 1)
+                         (1- (point))))
+                      "\\\\[\"\\\\]" "")))
          (push (list
                 (string-to-number (nth 1 elem))
                 (nnweb-replace-in-string (nth 2 elem) "\"" "")
index 3470a9b..2f63abf 100644 (file)
@@ -53,7 +53,7 @@ coding-system."
        (if coding-system
            (mm-encode-coding-region (point-min) (point-max) coding-system))
        (goto-char (point-min))
-       (while (and (skip-chars-forward "^=" to)
+       (while (and (skip-chars-forward "^=")
                    (not (eobp)))
          (cond ((eq (char-after (1+ (point))) ?\n)
                 (delete-char 2))
@@ -63,8 +63,10 @@ coding-system."
                                            16)))
                   (insert byte)
                   (delete-char 3)
-                  (unless (eq byte ?=)
-                    (backward-char))))
+                  ;; Why backward-char??? 
+                  ;;(unless (eq byte 61) ;; 61 is not ?= in XEmacs
+                  ;;  (backward-char))
+                  ))
                (t
                 (error "Malformed quoted-printable text")
                 (forward-char)))))
index 7d934e6..4c0fa38 100644 (file)
@@ -131,6 +131,11 @@ The Gregorian date Sunday, December 31, 1bce is imaginary."
        (- (/ (1- year) 100))           ;       - century years
        (/ (1- year) 400))))            ;       + Gregorian leap years
 
+(defun time-to-number-of-days (time)
+  "Return the number of days represented by TIME.
+The number of days will be returned as a floating point number."
+  (/ (+ (* 1.0 65536 (car time)) (cadr time)) (* 60 60 24)))
+
 ;;;###autoload
 (defun safe-date-to-time (date)
   "Parse DATE and return a time structure.
index 6583f0b..3f9c590 100644 (file)
@@ -1,3 +1,77 @@
+2001-01-05 06:53:13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * emacs-mime.texi (time-date): Addition.
+       (time-date): Addition.
+
+2001-01-04 22:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Newest Features): uref, not url.
+
+       * texi2latex.el (latexi-translate-file): Ignore anchor.
+
+2001-01-04  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Article Washing): Refer to `Customizing Articles' for
+       permanent changes.  Suggested by Russell Marks (russel dot marks
+       at ntlworld dot com).
+
+2001-01-03  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Article Washing): Mention `C-u g' as a sort of
+       anti-washing. 
+
+2001-01-01 11:40:34  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (extensions): Removed.
+
+2000-12-31 10:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * texi2latex.el (latexi-translate-file): Understand uref.
+
+2000-12-30  Kai Gro\e,A_\e(Bjohann  <Kai.Grossjohann@CS.Uni-Dortmund.DE>
+
+       * gnus.texi (Selecting a Group): Explain in more detail, what a
+       prefix arg means for SPC.  Refer people to M-g command from
+       summary buffer.  Kudos to Paul Repacholi <prep@prep.synonet.com>
+       and Dan Jacobson <jidanni@kimo.com.tw> for suggesting this.
+
+2000-12-29 21:43:20  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.texi (Spelling): New.
+
+2000-12-29 10:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * texi2latex.el (latexi-translate-file): Support srcdir.
+       (latexi-translate-file): Understand ifnottex, dircategory, and
+       direntry. Set coding-system-for-write to iso-8859-1.
+
+       * Makefile.in: Fix for srcdir.
+
+       * gnus.texi (NoCeM): Use file instead of uref.
+       (Mail Source Specifiers): Use subsubsection instead of
+       subsubheading.
+
+2000-12-29 01:00:00  ShengHuo ZHU  <zsh@cs.rochester.edu>
+
+       * gnus.texi (Top): Set version to Oort Gnus v0.01.
+
+       * Makefile.in (install): The info files are in the current
+       directory.
+
+2000-12-29  Christopher Splinter  <chris@splinter.inka.de>
+
+       * gnus.texi (Customizing Articles): Added documentation for
+       `gnus-treat-hide-citation-maybe', `gnus-treat-date-iso8601' and
+       `gnus-treat-date-user-defined'.
+
+2000-12-29 00:38:59  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Posting Styles): Addition.
+
+2000-12-28 20:04:26  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.texi (Buffer Entry): New section.
+
 2000-12-22  Christopher Splinter  <chris@splinter.inka.de>
 
        * gnus.texi (Group Parameters): Add documentation for the `banner'
index 3d447b3..5e2441c 100644 (file)
@@ -73,23 +73,23 @@ pdf: gnus.pdf message.pdf refcard.pdf emacs-mime.pdf
 
 .texi.dvi :
        sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
-       $(TEXI2DVI) gnustmp.texi
+       $(TEXI2DVI) -I $(srcdir) gnustmp.texi
        cp gnustmp.dvi $*.dvi
        rm gnustmp.*
 
 .texi.pdf :
        sed -e '/@iflatex/,/@end iflatex/d' $< > gnustmp.texi
-       $(TEXI2PDF) gnustmp.texi
+       $(TEXI2PDF) -I $(srcdir) gnustmp.texi
        cp gnustmp.pdf $*.pdf
        rm gnustmp.*
 
 refcard.dvi: refcard.tex gnuslogo.refcard gnusref.tex
-       $(LATEX) refcard.tex
+       TEXINPUTS=$(srcdir):$$TEXINPUTS $(LATEX) refcard.tex
 
 
 refcard.pdf: refcard.tex gnuslogo.refcard gnusref.tex
-       epstopdf gnuslogo.refcard --outfile=gnuslogo.refcard.pdf
-       $(PDFLATEX) refcard.tex
+       epstopdf $(srcdir)/gnuslogo.refcard --outfile=gnuslogo.refcard.pdf
+       TEXINPUTS=$(srcdir):$$TEXINPUTS $(PDFLATEX) refcard.tex
 
 clean:
        rm -f *.orig *.rej *.elc *~ gnus-[0-9] gnus-[0-9][0-9]
@@ -110,16 +110,16 @@ makeinfo:
        makeinfo -o message message.texi
 
 texi2latex.elc: texi2latex.el
-       $(EMACSINFO) -batch -l bytecomp --eval '(byte-compile-file "texi2latex.el")'
+       srcdir=$(srcdir)/../lisp $(EMACSINFO) -l $(srcdir)/../lisp/dgnushack.el --eval '(byte-compile-file "$(srcdir)/texi2latex.el")'
 
-latex: gnus.texi texi2latex.elc
-       $(EMACSINFO) -batch -q -no-site-file gnus.texi -l ./texi2latex.elc -f latexi-translate
+latex gnus.latexi gnus-faq.latexi: $(srcdir)/gnus.texi $(srcdir)/gnus-faq.texi texi2latex.elc
+       srcdir=$(srcdir) $(EMACSINFO) -l ./texi2latex.elc -f latexi-translate
 
-latexps:
+latexps: gnus.latexi
        $(MAKE) texi2latex.elc
        rm -f gnus.aux
        egrep -v "label.*Index|chapter.*Index" gnus.latexi > gnus.tmplatexi1
-       $(LATEX) gnus.tmplatexi1
+       TEXINPUTS=$(srcdir):$$TEXINPUTS $(LATEX) gnus.tmplatexi1
        ./splitindex
        makeindex -o gnus.kind gnus.kidx
        makeindex -o gnus.cind gnus.cidx
@@ -170,11 +170,10 @@ install: $(INFO_DEPS)
        $(SHELL) $(top_srcdir)/mkinstalldirs $(infodir)
        @list='$(INFO_DEPS)'; \
        for file in $$list; do \
-         d=$(srcdir); \
-         for ifile in `CDPATH=: && cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
-           if test -f $$d/$$ifile; then \
-             echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \
-             $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \
+         for ifile in `echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
+           if test -f $$ifile; then \
+             echo " $(INSTALL_DATA) $$ifile $(infodir)/$$ifile"; \
+             $(INSTALL_DATA) $$ifile $(infodir)/$$ifile; \
            else : ; fi; \
          done; \
        done
index a0c96b4..f0f5be4 100644 (file)
@@ -18,7 +18,7 @@
 
 This file documents the Emacs MIME interface functionality.
 
-Copyright (C) 1998,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -47,7 +47,7 @@ license to the document, as described in section 6 of the license.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1998,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -512,8 +512,7 @@ say.)
 These functions convert between five formats: A date string, an Emacs
 time structure, a decoded time list, a second number, and a day number.
 
-The functions have quite self-explanatory names, so the following just
-gives an overview of which functions are available.
+Here's a bunch of time/date/second/day examples:
 
 @example
 (parse-time-string "Sat Sep 12 12:21:54 1998 +0200")
@@ -528,7 +527,7 @@ gives an overview of which functions are available.
 (seconds-to-time 905595714.0)
 @result{} (13818 19266 0)
 
-(time-to-day '(13818 19266))
+(time-to-days '(13818 19266))
 @result{} 729644
 
 (days-to-time 729644)
@@ -553,12 +552,91 @@ gives an overview of which functions are available.
 (time-to-day-in-year '(13818 19266))
 @result{} 255
 
+(time-to-number-of-days
+ (time-since
+  (date-to-time "Mon, 01 Jan 2001 02:22:26 GMT")))
+@result{} 4.146122685185185
 @end example
 
 And finally, we have @code{safe-date-to-time}, which does the same as
 @code{date-to-time}, but returns a zero time if the date is
 syntactically malformed.
 
+The five data representations used are the following:
+
+@table @var
+@item date
+An RFC822 (or similar) date string.  For instance: @code{"Sat Sep 12
+12:21:54 1998 +0200"}.
+
+@item time
+An internal Emacs time.  For instance: @code{(13818 26466)}.
+
+@item seconds
+A floating point representation of the internal Emacs time.  For
+instance: @code{905595714.0}.
+
+@item days
+An integer number representing the number of days since 00000101.  For
+instance: @code{729644}.
+
+@item decoded time
+A list of decoded time.  For instance: @code{(54 21 12 12 9 1998 6 t
+7200)}.
+@end table
+
+All the examples above represent the same moment.
+
+These are the functions available:
+
+@table @code
+@item date-to-time
+Take a date and return a time.
+
+@item time-to-seconds
+Take a time and return seconds.
+
+@item seconds-to-time
+Take seconds and return a time.
+
+@item time-to-days
+Take a time and return days.
+
+@item days-to-time
+Take days and return a time.
+
+@item date-to-day
+Take a date and return days.
+
+@item time-to-number-of-days
+Take a time and return the number of days that represents.
+
+@item safe-date-to-time
+Take a date and return a time.  If the date is not syntactically valid,
+return a "zero" date.
+
+@item time-less-p
+Take two times and say whether the first time is less (i. e., earlier)
+than the second time.
+
+@item time-since
+Take a time and return a time saying how long it was since that time.
+
+@item subtract-time
+Take two times and subtract the second from the first.  I. e., return
+the time between the two times.
+
+@item days-between
+Take two days and return the number of days between those two days.
+
+@item date-leap-year-p
+Take a year number and say whether it's a leap year.
+
+@item time-to-day-in-year
+Take a time and return the day number within the year that the time is
+in. 
+
+@end table
 
 
 @node qp
index 4e8f179..7501e41 100644 (file)
@@ -5,7 +5,7 @@
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
-@dircategory Editors
+@dircategory Emacs
 @direntry
 * Gnus-ja: (gnus-ja).         The newsreader gnus (Japanese).
 @end direntry
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000 
+Free Software Foundation, Inc.
 
 
 Permission is granted to copy, distribute and/or modify this document
@@ -319,7 +320,7 @@ This file documents gnus, the GNU Emacs newsreader.
 
 \e$B$3$N%U%!%$%k$O\e(B GNU Emacs \e$B$N%K%e!<%9%j!<%@$G$"$k\e(B gnus \e$B$K4X$9$k@bL@=q$G$9!#\e(B
 
-Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -366,7 +367,7 @@ license to the document, as described in section 6 of the license.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -657,7 +658,6 @@ The Article Buffer
 Composing Messages
 
 * Mail::              \e$B%a!<%k$HJVEz\e(B
-* Post::              \e$BEj9F$H%U%)%m!<%"%C%W\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
@@ -1998,6 +1998,13 @@ Gnus \e$B$O\e(B @code{gnus-user-format-function-}@samp{X} \e$B4X?t$r8F$S=P$7$^$9!#$
 \e$B$"$l$P\e(B gnus \e$B$O?7$7$$J}$+$i\e(B @var{N} \e$B8D$N5-;v$r<hF@$7!"\e(B@var{N} \e$B$,Ii$N?t$G\e(B
 \e$B$"$l$P\e(B gnus \e$B$O8E$$J}$+$i\e(B @code{abs(@var{N})} \e$B8D$N5-;v$r<hF@$7$^$9!#\e(B
 
+\e$B$7$?$,$C$F!"\e(B@kbd{SPC} \e$B$G$OIaDL$K%0%k!<%W$KF~$j!"\e(B@kbd{C-u SPC} \e$B$G$O8E$$5-\e(B
+\e$B;v$,8=$l$^$9!#\e(B@kbd{C-u 4 2 SPC} \e$B$G$O\e(B 42 \e$B8D$N:G?7$N5-;v$r<hF@$7!"\e(B@kbd{C-u
+- 4 2 SPC} \e$B$G$O\e(B 42 \e$B8D$N:G$b8E$$5-;v$r<hF@$7$^$9!#\e(B
+
+\e$B%0%k!<%W$K$$$k\e(B (\e$B35N,%P%C%U%!$K$$$k\e(B) \e$B$H$-$O!"\e(B@kbd{M-g} \e$B$G?7$7$$5-;v$r<hF@\e(B
+\e$B$G$-$k$7!"\e(B@kbd{C-u M-g} \e$B$G$O8E$$5-;v$rI=<($9$k$3$H$,$G$-$^$9!#\e(B
+
 @item RET
 @kindex RET (Group)
 @findex gnus-group-select-group
@@ -2580,7 +2587,7 @@ 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%U%)%m!<%"%C%W$H%K%e!<%9$X$NEj9F$r$9$k$H$-$K;HMQ$5$l$k%"%I%l%9!#\e(B
 
 @example
-(to-address .  "some@@where.com")
+(to-address . "some@@where.com")
 @end example
 
 \e$B$3$l$O<g$K!"JD$8$?%a!<%j%s%0%j%9%H$rI=$o$9%a!<%k%0%k!<%W$K$*$$$FJXMx$J$b\e(B
@@ -2928,6 +2935,10 @@ kill \e$B$5$l$?%0%k!<%W$rA4$FI=<($7$^$9\e(B (@code{gnus-group-list-killed})\e$B!#@\
 @findex gnus-group-sort-by-method
 \e$BA*BrJ}K!$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9!#\e(B
 
+@item gnus-group-sort-by-server
+@findex gnus-group-sort-by-server
+\e$B%5!<%P!<L>$N%"%k%U%!%Y%C%H=g$GJB$YBX$($^$9!#\e(B
+
 @end table
 
 @code{gnus-group-sort-function} \e$B$OJB$YBX$(4X?t$N%j%9%H$G$"$C$F$b9=$$$^$;\e(B
@@ -7095,8 +7106,8 @@ Fonts})\e$B!#F1$8%a%C%;!<%8$NCf$KJ#?t$N5-;v$+$i$N0zMQ$,$"$k$H!"\e(Bgnus \e$B$O$=$l$
 @findex gnus-article-strip-banner
 @cindex banner
 @cindex OneList
-@cindex stripping advertisments
-@cindex advertisments
+@cindex stripping advertisements
+@cindex advertisements
 @code{banner} \e$B%0%k!<%W%Q%i%a!<%?$G;XDj$5$l$?%P%J!<$r<h$j=|$-$^\e(B
 \e$B$9\e(B (@code{gnus-article-strip-banner})\e$B!#$3$l$O<g$K!"$$$/$D$+$N%a!<%j%s%0%j%9\e(B
 \e$B%H$d;J2q<TIU$-$N%0%k!<%W$,A4$F$N%0%k!<%W$KDI2C$9$k!"15F+$7$$%P%J!<$H\e(B/\e$B$b\e(B
@@ -7193,8 +7204,15 @@ Gnus \e$B$O$I$3$N0zMQJ8$,1#$5$l$F$$$k$+$r<($9$?$a$K%\%?%s$rIU$12C$(!"J8>O$N\e(B
 \e$B$^$9$,!"IaDL$O$b$C$HNI$/8+$($k2?$+$KMn$ACe$-$^$9!#$=$l$K$b$C$H$-$l$$$G$9!"\e(B
 \e$B$?$V$s!#\e(B
 
+gnus \e$B$,5-;v$rI=<($9$k4{Dj$N$d$jJ}$rJQ$($?$$$H$-\e(B
+\e$B$O\e(B @xref{Customizing Articles} \e$B$r;2>H$7$F2<$5$$!#\e(B
+
 @table @kbd
 
+@item C-u g
+\e$B$3$l$O5-;v@vBu$G$O$J$/$F!"$=$N5U$G$9!#$3$l$r%?%$%W$9$k$H!"%G%#%9%/$d%5!<\e(B
+\e$B%P!<$K$"$k$,$^$^$N5-;v$,8+$($^$9!#\e(B
+
 @item W l
 @kindex W l (\e$B35N,\e(B)
 @findex gnus-summary-stop-page-breaking
@@ -7320,6 +7338,7 @@ HZ \e$B$^$?$O\e(B HZP \e$B$r=hM}$7$^$9!#\e(BHZ (\e$B$^$?$O\e(B HZP) \e$B$OCf9q8l$N5-;v$
 \include{xface}
 @end iflatex
 @end iftex
+@anchor{X-Face}
 \e$B$9$Y$F$N\e(B X-Face \e$BMs$rC5$7$FI=<($7$^$9\e(B(@code{gnus-article-display-x-face})\e$B!#\e(B
 \e$B$3$NL?Na$OJQ?t\e(B @code{gnus-article-x-face-command} \e$B$K$h$C$FM?$($i$l$?4X?t\e(B
 \e$B$K$h$C$F<B9T$5$l$^$9!#$3$NJQ?t$,J8;zNs$J$i$P!"$3$NJ8;zNs$,%5%V%7%'%k$G<B\e(B
@@ -7511,6 +7530,12 @@ UT (\e$BJLL>\e(B GMT, ZULU) \e$B$GF|IU$rI=<($7$^$9\e(B (@code{gnus-article-date-ut})
 @findex gnus-article-date-local
 \e$BF|IU$r$=$NCO0h$N;~4VBS$GI=<($7$^$9\e(B (@code{gnus-article-date-local})\e$B!#\e(B
 
+@item W T p
+@kindex W T p (Summary)
+@findex gnus-article-date-english
+\e$BF|IU$r1Q8l$GH/2;$G$-$k7A<0$GI=<($7$^\e(B
+\e$B$9\e(B (@code{gnus-article-date-english})\e$B!#\e(B
+
 @item W T s
 @kindex W T s (\e$B35N,\e(B)
 @vindex gnus-article-time-format
@@ -8925,6 +8950,7 @@ 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,
 @item gnus-treat-hide-boring-headers (head)
 @item gnus-treat-hide-signature (t, last)
 @item gnus-treat-hide-citation (t, integer)
+@item gnus-treat-hide-citation-maybe (t, integer)
 @item gnus-treat-strip-pgp (t, last, integer)
 @item gnus-treat-strip-pem (t, last, integer)
 @item gnus-treat-highlight-headers (head)
@@ -8932,8 +8958,11 @@ 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,
 @item gnus-treat-highlight-signature (t, last, integer)
 @item gnus-treat-date-ut (head)
 @item gnus-treat-date-local (head)
+@item gnus-treat-date-english (head)
 @item gnus-treat-date-lapsed (head)
 @item gnus-treat-date-original (head)
+@item gnus-treat-date-iso8601 (head)
+@item gnus-treat-date-user-defined (head)
 @item gnus-treat-strip-headers-in-body (t, integer)
 @item gnus-treat-strip-trailing-blank-lines (t, last, integer)
 @item gnus-treat-strip-leading-blank-lines (t, integer)
@@ -9098,7 +9127,6 @@ 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,
 
 @menu
 * Mail::              \e$B%a!<%k$HJVEz\e(B
-* Post::              \e$BEj9F$H%U%)%m!<%"%C%W\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
@@ -9135,30 +9163,6 @@ Superseding} \e$B$r;2>H$7$F$/$@$5$$!#\e(B
 
 @end table
 
-@node Post
-@section \e$BEj9F\e(B
-
-\e$B%K%e!<%95-;v:n@.$N$?$a$NJQ?t\e(B:
-
-@table @code
-@item gnus-sent-message-ids-file
-@vindex gnus-sent-message-ids-file
-Gnus \e$B$OAw?.$7$?A4$F$N%a!<%k$N\e(B @code{Message-ID} \e$BMzNr%U%!%$\e(B
-\e$B%k\e(B (history file) \e$B$rJ]B8$7$^$9!#$b$7%a!<%k$r4{$KAw$C$?;v$,H/8+$5$l$?$J$i!"\e(B
-\e$BMxMQ<T$K%a!<%k$r:FAw$9$k$+$I$&$+$r?R$M$^$9!#\e(B(\e$B$3$l$O<g$KF1$8%Q%1%C%H$rJ#\e(B
-\e$B?t2sAw$k798~$N$"$k\e(B @sc{soup} \e$B%Q%1%C%H$d!"$=$l$K;w$?$h$&$J$b$N$r07$C$F$$\e(B
-\e$B$k$H$-$KLr$KN)$A$^$9!#\e(B) \e$B$3$NJQ?t$O$3$NMzNr%U%!%$%k$,$I$3$K$"$k$+$r;XDj$7\e(B
-\e$B$^$9!#%G%#%U%)%k%H$G$O\e(B @file{~/News/Sent-Message-IDs} \e$B$G$9!#\e(BGnus \e$B$,MzNr\e(B
-\e$B%U%!%$%k$rJ];}$9$k;v$rK>$^$J$$$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{nil} \e$B$K@_Dj$9\e(B
-\e$B$k;v$,$G$-$^$9!#\e(B
-
-@item gnus-sent-message-ids-length
-@vindex gnus-sent-messages-ids-length
-\e$B$3$NJQ?t$O$I$l$/$i$$B?$/$N\e(B @code{Message-ID} \e$B$rMzNr%U%!%$%k$KJ];}$9$k$+\e(B
-\e$B$r;XDj$7$^$9!#%G%#%U%)%k%H$G$O\e(B 1000 \e$B$G$9!#\e(B
-
-@end table
-
 @node Posting Server
 @section \e$BEj9F$9$k%5!<%P!<\e(B
 
@@ -9468,16 +9472,24 @@ Gnus \e$B$O30$X=P$F9T$/A4$F$N%a%C%;!<%8$K!"0l$D$+$=$l0J>e$N$=$N%5!<%P!<$N%0\e(B
         ((message-news-p)
          (signature my-news-signature))
         (header "From\\|To" "larsi.*org"
-         (Organization "Somewhere, Inc."))
+                (Organization "Somewhere, Inc."))
         ((posting-from-work-p)
          (signature-file "~/.work-signature")
          (address "user@@bar.foo")
          (body "You are fired.\n\nSincerely, your boss.")
          (organization "Important Work, Inc"))
+        ("nnml:.*"
+         (From (save-excursion
+                 (set-buffer gnus-article-buffer)
+                 (message-fetch-field "to"))))
         ("^nn.+:"
          (signature-file "~/.mail-signature"))))
 @end lisp
 
+@samp{nnml:.*} \e$B$N5,B'$O!"$"$J$?$,=P$9$9$Y$F$NJV;v$N\e(B @code{To} \e$B%"%I%l%9\e(B
+\e$B$r\e(B @code{From} \e$B%"%I%l%9$H$7$F;H$&$3$H$r0UL#$7$^$9!#$3$l$O!"$"$J$?$,$?$/\e(B
+\e$B$5$s$N%a!<%j%s%0%j%9%H$K;22C$7$F$$$k>l9g$KJXMx$G$7$g$&!#\e(B
+
 @node Drafts
 @section \e$B2<=q$-\e(B
 @cindex drafts
@@ -9655,7 +9667,26 @@ message, if you've typed it correctly.
 @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
-\e$B$+%=%U%H%&%'%"$G$9!#\e(B
+\e$B$+%=%U%H%&%'%"$G$9!#\e(Bgnus \e$B$OK\Ev$N$I$s$J%5!<%P!<$K$bD>@\$K$O@\B3$;$:!"%P%C\e(B
+\e$B%/%(%s%I$+B>$N$b$N$rDL$7$F$9$Y$F$N=hM}$r9T$J$$$^$9!#$7$+$7!"$=$l$O<B:]$N\e(B
+\e$BG^BN$H\e(B gnus \e$B$N4V$KC1$K0l$D$+$=$l0J>e$N3,AX$rCV$/$3$H$G$"$C$F!"$=$l$>$l$N\e(B
+\e$B%P%C%/%(%s%I$,$^$5$K5?;wE*$J%5!<%P!<$KAjEv$9$k$H8@$C$F$bNI$$$G$7$g$&!#\e(B
+
+\e$BNc$($P\e(B @code{nntp} \e$B%P%C%/%(%s%I$O!"0[$J$k$$$/$D$+$N<B:_$9$k\e(B @sc{nntp} \e$B%5!<\e(B
+\e$B%P!<!"$"$k$$$OF1$8<B:_$9$k\e(B @sc{nntp} \e$B%5!<%P!<$N0[$J$k%]!<%H$K@\B3$9$k$?\e(B
+\e$B$a$KMQ$$$i$l$^$9!#$"$J$?$O!"$I$N%P%C%/%(%s%I$r;H$&$+!"$=$7$F$I$s$J%Q%i%a!<\e(B
+\e$B%?$r@_Dj$9$k$+$rA*BrJ}K!\e(B (@dfn{select method}) \e$B$G;XDj$7$^$9!#\e(B
+
+\e$BA*BrJ}K!$N;XDj$O!"$H$-$K6K$a$FLLE]$J$b$N$K$J$j$^$9!#$=$&$@$J$"!"Nc$($P!"\e(B
+@sc{nov} \e$B%X%C%@!<$r<h$j4s$;$h$&$H$9$k$H8G$^$C$F$7$^$$!"A*Br$N:n6H$,8N>c\e(B
+\e$B$,$A$J\e(B @sc{nntp} \e$B%5!<%P!<\e(B @samp{news.funet.fi} \e$B$N%]!<%H\e(B 13 \e$B$rFI$_$?$$>l\e(B
+\e$B9g$H$+!#$&$*$C$[$s!#$H$K$+$/$G$9$M!"$3$N%5!<%P!<$r;H$&$=$l$>$l$N%0%k!<%W\e(B
+\e$B$K$D$$$F$=$&$$$&$3$H$r@_Dj$7$J$1$l$P$J$i$J$$$H$7$?$i!"BgJQ$J:n6H$K$J$C$F\e(B
+\e$B$7$^$&$G$7$g$&!#$=$3$G\e(B gnus \e$B$O!"$=$&$$$&:n6H$r%5!<%P!<%P%C%U%!$G9T$J$&$?\e(B
+\e$B$a$K!"A*BrJ}K!$KL>A0$rIU$1$k<jCJ$r@_$1$F$$$k$N$G$9!#\e(B
+
+\e$B%5!<%P!<%P%C%U%!$KF~$k$?$a$K$O!"%0%k!<%W%P%C%U%!\e(B
+\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
@@ -10055,14 +10086,16 @@ Gnus \e$B$,$I$l$+$N%5!<%P!<$+$i@\B35qH]$r<u$1$?$+$I$&$+$NA4$F$N0u$r>C5n$7$^\e(B
 
 @item
 \e$B$=$l$>$l$N9T$OG$0U$N?t$N\e(B \e$B6h@Z$j0u\e(B/\e$BCM\e(B \e$B$NBP$r4^$`;v$,$G$-$^$9!#\e(B
-@end enumerate
 
 \e$BM-8z$J6h@Z$j0u$O\e(B @samp{machine}, @samp{login}, @samp{password},
-@samp{default} \e$B$G$9!#\e(Bgnus \e$B$O\e(B @file{.netrc}/@code{ftp} \e$B$N9=J8$N867?$K$O8=\e(B
-\e$B$l$J$$Fs$D$N?7$7$$6h@Z$j0u!"L>IU$1$F\e(B @samp{port} \e$B$H\e(B @samp{force} \e$B$rF3F~\e(B
-\e$B$7$^$9!#\e(B(\e$B$3$l$,\e(B @file{.authinfo} \e$B%U%!%$%k$NMM<0$,\e(B @file{.netrc} \e$B%U%!%$%k\e(B
-\e$B$NMM<0$+$i0o$l$kM#0l$NJ}K!$G$9!#\e(B) @samp{port} \e$B$O%5!<%P!<$N$I$N%]!<%H$rG'\e(B
-\e$B>Z$KMQ$$$k$+$r<($7!"\e(B@samp{force} \e$B$O0J2<$G@bL@$7$^$9!#\e(B
+@samp{default} \e$B$G$9!#2C$($F!"\e(Bgnus \e$B$O\e(B @file{.netrc}/@code{ftp} \e$B$N9=J8$N86\e(B
+\e$B7?$K$O8=$l$J$$Fs$D$N?7$7$$6h@Z$j0u!"L>IU$1\e(B
+\e$B$F\e(B @samp{port} \e$B$H\e(B @samp{force} \e$B$rF3F~$7$^$9!#\e(B
+(\e$B$3$l$,\e(B @file{.authinfo} \e$B%U%!%$%k$NMM<0$,\e(B @file{.netrc} \e$B%U%!%$%k$NMM<0$+\e(B
+\e$B$i0o$l$kM#0l$NJ}K!$G$9!#\e(B) @samp{port} \e$B$O%5!<%P!<$N$I$N%]!<%H$rG'>Z$KMQ$$\e(B
+\e$B$k$+$r<($7!"\e(B@samp{force} \e$B$O0J2<$G@bL@$7$^$9!#\e(B
+
+@end enumerate
 
 \e$B$3$l$,$=$N%U%!%$%k$NNc$G$9\e(B:
 
@@ -10242,7 +10275,7 @@ default force yes
 @item nntp-open-ssl-stream
 \e$B%5!<%P!<$K\e(B @dfn{\e$B0BA4$J\e(B} \e$B%A%c%s%M%k$r;H$C$F%5!<%P!<$K@\B3$7$^$9!#$3$l$r;H\e(B
 \e$B$&$?$a$K$O!"\e(BSSLay \e$B$,%$%s%9%H!<%k$5$l$F$$$J$1$l$P$J$j$^$;\e(B
-\e$B$s\e(B (@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} \e$B$H!"\e(B@file{ssl.el} (\e$BNc$(\e(B
+\e$B$s\e(B (@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL} \e$B$H!"\e(B@file{ssl.el} (\e$BNc$(\e(B
 \e$B$P!"\e(BW3 \e$B$NG[I[$+$i\e(B) \e$B$,I,MW$K$J$j$^$9\e(B)\e$B!#$=$l$+$i%5!<%P!<$r<!$N$h$&$KDj5A$7\e(B
 \e$B$^$9\e(B:
 
@@ -10362,7 +10395,7 @@ 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$
 @item nntp-record-commands
 @vindex nntp-record-commands
 \e$B$b$7\e(B @code{nil} \e$B$G$J$$$H!"\e(B@code{nntp} \e$B$O\e(B @sc{nntp} \e$B%5!<%P!<$KAw$C$?A4$F\e(B
-\e$B$NL?Na$r\e(B (\e$B;~4V$H6&$K\e(B) @samp{*nntp-log*} \e$B%P%C%U%!$K5-O?$7$^$9!#$3$l$OF0:n\e(B
+\e$B$NL?Na$r\e(B (\e$B;~9o$H6&$K\e(B) @samp{*nntp-log*} \e$B%P%C%U%!$K5-O?$7$^$9!#$3$l$OF0:n\e(B
 \e$B$7$F$$$J$$$H;W$o$l$k\e(B gnus/@sc{nntp} \e$B@\B3$r%G%#%P%C%0$7$F$$$k$H$-$KLr$KN)\e(B
 \e$B$A$^$9!#\e(B
 
@@ -10784,7 +10817,8 @@ POP \e$B%5!<%P!<$NL>A0$G$9!#=i4|CM$O\e(B @code{MAILHOST} \e$B4D6-JQ?t$+$i<hF@$5$l$^
 POP \e$B%5!<%P!<$N%]!<%HHV9f$G$9!#$3$l$O?tCM\e(B (\e$BNc$($P\e(B @samp{:port 1234}) \e$B$+J8\e(B
 \e$B;zNs\e(B (\e$BNc$($P\e(B @samp{:port "pop3"}) \e$B$G$9!#$b$7J8;zNs$J$i\e(B Unix \e$B%7%9%F%`$K$*\e(B
 \e$B$1$k\e(B @file{/etc/services} \e$B$K:\$C$F$$$k%5!<%S%9L>$G$J$1$l$P$J$j$^$;$s!#=i\e(B
-\e$B4|CM$O\e(B @samp{pop3} \e$B$G$9!#\e(B
+\e$B4|CM$O\e(B @samp{pop3} \e$B$G$9!#%7%9%F%`$K$h$C$F$O\e(B @samp{"pop-3"} \e$B$H$7$J$1$l$P\e(B
+\e$B$J$i$J$$$+$b$7$l$^$;$s!#\e(B
 
 @item :user
 POP \e$B%5!<%P!<$KM?$($kMxMQ<TL>$G$9!#=i4|CM$O%m%0%$%sL>$G$9!#\e(B
@@ -11026,7 +11060,7 @@ www.my-deja.com \e$B$J$I$N%&%'%V%a!<%k%5!<%P!<$+$i%a!<%k$r<hF@$7$^$9!#\e(B
 @end table
 @end table
 
-@subsubheading Function Interface
+@subsubsection Function Interface
 
 \e$B>e5-$N$$$/$D$+$N%-!<%o!<%I$O!"<B9T$9$k$?$a$N\e(B Lisp \e$B4X?t$r;XDj$7$^$9!#4X?t\e(B
 \e$B$,<B9T$5$l$F$$$k4V$@$1!"$=$l$>$l$N%-!<%o!<%I\e(B @code{:foo} \e$B$NCM$H$7$F\e(B Lisp
@@ -11350,10 +11384,12 @@ table) \e$B$K=>$C$F40A4$K9gCW$7$J$1$l$P$J$j$^$;$s!#@55,I=8=$G%U%#!<%k%IL>$+\e(B
 @code{nnmail-message-id-cache-length} \e$B$NCM$r4{DjCM$h$j$b4v$i$+Bg$-$JCM$K\e(B
 \e$B@_Dj$9$k$3$H$r$*4+$a$7$^$9!#$=$&$9$k$H!":#D4$Y$i$l$?%a%C%;!<%8\e(B ID \e$BC#$O:#\e(B
 \e$B$7$P$i$/%-%c%C%7%e$NCf$KB8B3$G$-$^$9\e(B (5000 \e$B$K@_Dj$9$k$H%-%c%C%7%e%U%!%$\e(B
-\e$B%k$NBg$-$5$O$@$$$?$$\e(B 300 \e$B%-%m%P%$%H$0$i$$$K$J$k$_$?$$$G$9\e(B)\e$B!#$5$i$K!"\e(B
-\e$BJQ?t\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM$rHs\e(B nil \e$B$K@_Dj$9$l$P!"\e(B
-Gnus \e$B$O0\F0$5$l$?5-;v$N%a%C%;!<%8\e(B ID \e$B$r$b5-O?$9$k$N$G!"%U%)%m!<%"%C%W5-\e(B
-\e$B;v$O?F5-;v$N0\F0@h$HF1$8%0%k!<%W$KF~$k$h$&$K$J$j$^$9!#\e(B
+\e$B%k$NBg$-$5$O$@$$$?$$\e(B 300 \e$B%-%m%P%$%H$0$i$$$K$J$k$_$?$$$G$9\e(B)\e$B!#\e(B
+@vindex nnmail-cache-accepted-message-ids
+\e$B$5$i$K!"JQ?t\e(B @code{nnmail-cache-accepted-message-ids} \e$B$NCM$r\e(B
+\e$BHs\e(B @code{nil} \e$B$K@_Dj$9$l$P!"\e(Bgnus \e$B$O0\F0$5$l$?5-;v$N%a%C%;!<%8\e(B ID \e$B$r$b5-\e(B
+\e$BO?$9$k$N$G!"%U%)%m!<%"%C%W5-;v$O?F5-;v$N0\F0@h$HF1$8%0%k!<%W$KF~$k$h$&$K\e(B
+\e$B$J$j$^$9!#\e(B
 
 @node Group Mail Splitting
 @subsection \e$B%0%k!<%W%a!<%kJ,3d\e(B
@@ -11477,8 +11513,10 @@ nnml:mail.others:
 @var{auto-update} \e$B$,\e(B @code{nil} \e$B$GL5$$$H!"\e(B
 @code{gnus-group-split-update} \e$B$,\e(B @code{nnmail-pre-get-new-mail-hook} \e$B$K\e(B
 \e$BDI2C$5$l!"FsEY$H\e(B @code{nnmail-split-fancy} \e$B$N99?7$r?4G[$9$kI,MW$O$"$j$^\e(B
-\e$B$;$s!#\e(B@var{catch-all} \e$B$r>JN,$7$J$$>l9g$O\e(B (\e$B$=$l$O%*%W%7%g%s$G\e(B nil \e$B$HF1$8\e(B)\e$B!"\e(B
-@code{gnus-group-split-default-catch-all-group} \e$B$O$=$NCM$K@_Dj$5$l$^$9!#\e(B
+\e$B$;$s!#\e(B@var{catch-all} \e$B$r>JN,$7$J$$>l9g$O\e(B (\e$B$=$l$O%*%W%7%g%s\e(B
+\e$B$G\e(B @code{nil} \e$B$HEy\e(B
+\e$B2A\e(B)\e$B!"\e(B@code{gnus-group-split-default-catch-all-group} \e$B$O$=$NCM$K@_Dj$5$l\e(B
+\e$B$^$9!#\e(B
 
 @vindex gnus-group-split-updated-hook
 @code{nnmail-split-fancy} \e$B$,\e(B @code{gnus-group-split-update} \e$B$G@_Dj$5$l$?\e(B
@@ -12341,7 +12379,7 @@ 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
 @cindex Slashdot
 @cindex nnslashdot
 
-Slashdot (@file{http://slashdot.org/}) \e$B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<\e(B
+Slashdot (@uref{http://slashdot.org/}) \e$B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<\e(B
 \e$B%95-;v$N8e$K3hH/$J5DO@$,$J$5$l$F$$$^$9!#\e(B@code{nnslashdot} \e$B$G$OJXMx$JJ}K!\e(B
 \e$B$G$3$N2q5D<<$rFI$`$3$H$,$G$-$^$9!#\e(B
 
@@ -12425,7 +12463,7 @@ Slashdot (@file{http://slashdot.org/}) \e$B$O?M5$$N$"$k%K%e!<%9%5%$%H$G!"%K%e!<\e(
 @cindex nnultimate
 @cindex Ultimate Bulletin Board
 
-Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) \e$B$O$*$=$i$/0l\e(B
+Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) \e$B$O$*$=$i$/0l\e(B
 \e$BHVNI$/;H$o$l$F$$$k%&%'%V7G<(HD%7%9%F%`$G$7$g$&!#$H$F$b@0A3$H$7$FNI$$3&LL\e(B
 \e$B$G!"\e(Bgnus \e$B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3$H$,2DG=$G\e(B
 \e$B$9!#\e(B
@@ -12453,7 +12491,7 @@ http://www.tcj.com/messboard.ubbcgi/ RET}\e$B!#\e(B(\e$B6=L#$N$"$k2q5D<<\e(B
 @cindex Web Archive
 
 \e$B%a!<%j%s%0%j%9%H$NCf$K$ONc$($P!"\e(B
-@file{http://www.egroups.com/} \e$B$d\e(B @file{http://www.mail-archive.com/} \e$B$N\e(B
+@uref{http://www.egroups.com/} \e$B$d\e(B @uref{http://www.mail-archive.com/} \e$B$N\e(B
 \e$B$h$&$K%&%'%V%5!<%P!<$K$7$+%"!<%+%$%V$,L5$$$b$N$b$"$j$^$9!#$H$F$b@0A3$H$7\e(B
 \e$B$FNI$$3&LL$G!"\e(Bgnus \e$B$,%0%k!<%W$r:G?7$N>uBV$KJ]$C$F$*$/$?$a$K>pJs$rF@$k$3\e(B
 \e$B$H$,2DG=$G$9!#\e(B
@@ -13351,7 +13389,7 @@ nnimap \e$B$O\e(B @samp{imtest} \e$B%P!<%8%g%s\e(B 1.5.x \e$B$H\e(B 1.6.x \e$B$NN>J}$r%
 \e$B$r4^$_$^$9!#\e(B
 
 @vindex imap-ssl-program
-SSL \e$B@\B3$N$?$a$N\e(B OpenSSL \e$B%W%m%0%i%`$O\e(B @file{http://www.openssl.org/} \e$B$+\e(B
+SSL \e$B@\B3$N$?$a$N\e(B OpenSSL \e$B%W%m%0%i%`$O\e(B @uref{http://www.openssl.org/} \e$B$+\e(B
 \e$B$iF~<j$G$-$^$9!#\e(BOpenSSL \e$B$O0JA0$O\e(B SSLeay \e$B$H$7$FCN$i$l$F$$$?$b$N$G!"\e(B
 nnimap \e$B$O$=$l$b%5%]!<%H$7$^$9!#$7$+$7!"\e(BSSLeay \e$B$N:G?7HG$G$"$k\e(B 0.9.x \e$B$K$O\e(B
 \e$B=EBg$J%P%0$,$"$k$?$a;H$($^$;$s!#0JA0$NHG!"FC$K\e(B SSLeay 0.8.x \e$B$O;H$($k$3$H\e(B
@@ -14623,7 +14661,7 @@ Message \e$B$r2#<h$j$7$F!"\e(Boffline \e$B$G\e(B post/send \e$B$9$k$?$a$NHFMQ%i%$%V%i
 \e$B$3$N\e(B @code{MIEE} \e$B$r;H$&$H\e(B @code{gnus-offline} \e$B$rMQ$$$F\e(B@code{nnspool} \e$B$b\e(B
 \e$B%3%s%H%m!<%k$9$k;v$,$G$-$^$9\e(B(\e$B$3$3$G$O=R$Y$^$;$s$,!D\e(B)\e$B!#\e(B(\e$B$b$A$m\e(B
 \e$B$s\e(B @code{gnus-agent} + @code{MIEE} \e$B$H$$$&AH9g$;$b2DG=$G\e(B
-\e$B$9\e(B) @code{MIEE} \e$B$O\e(B @file{http://www.shiojiri.ne.jp/%7Et-ichi/lisp/miee.el} \e$B$+\e(B
+\e$B$9\e(B) @code{MIEE} \e$B$O\e(B @uref{http://www.shiojiri.ne.jp/%7Et-ichi/lisp/miee.el} \e$B$+\e(B
 \e$B$i<h$C$FMh$k;v$,$G$-$^$9!#\e(B@code{gnus-setup-for-offline} \e$B$G@_Dj$7$?>l9g$K\e(B
 \e$B$O!"\e(B@code{MIEE} \e$B$N@_Dj$O$$$C$5$$$7$J$/$F$b$+$^$$$^$;$s!#\e(B
 
@@ -16007,7 +16045,7 @@ GNUS \e$B>C5n%U%!%$%k$rJT=8$9$k$?$a$NFs$D$N35N,%P%C%U%!4X?t$,$"$j$^$9!#\e(B
 
 \e$B>C5n%U%!%$%k$+$i%9%3%"%U%!%$%k$X$NJQ49%Q%C%1!<%8$O!"I8=`$G$O\e(Bgnus \e$B$K$O4^\e(B
 \e$B$^$l$^$;$s!#\e(B
-@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el} \e$B$+\e(B
+@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el} \e$B$+\e(B
 \e$B$iF~<j$9$k$3$H$,$G$-$^$9!#\e(B
 
 \e$B$b$7$"$J$?$N>C5n%U%!%$%k$,Hs>o$KJ#;($J$b$N$G$"$l$P\e(B --- \e$B$=$l\e(B
@@ -16044,7 +16082,7 @@ GoupLens \e$B$O!"KhF|:n@.$5$l$kB?$/$NNL$N%K%e!<%95-;v$+$i<A$NNI$$5-;v$rB>$N\e(B
 
 GroupLens \e$B$r;H$&$?$a$K$O!"%m!<%+%k$N\e(B Better Bit Berau (BBB) \e$B$KI.\e(B
 \e$BL>\e(B (pseudonym) \e$B$rEPO?$7$J$1$l$P$J$j$^$;$s!#\e(B
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} \e$B$,8=:_!"$A$^$?\e(B
+@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} \e$B$,8=:_!"$A$^$?\e(B
 \e$B$KB8:_$9$kM#0l$N\e(B better bit \e$B$G$9!#\e(B
 
 \e$BEPO?$7$?8e$G!"$$$/$D$+$NJQ?t$r@_Dj$9$kI,MW$,$"$j$^$9!#\e(B
@@ -17606,13 +17644,13 @@ Picon \e$B$H$O$J$s$G$7$g$&\e(B? Picons \e$B%&%'%V%5%$%H$+$iD>@\0zMQ$7$^$7$g$&!#\e(B
 @vindex gnus-picons-piconsearch-url
 \e$B$"$J$?$,%$%s%?!<%M%C%H$X>o;~@\B3$7$F$$$k$N$J$i$P!"\e(B
 @code{gnus-picons-piconsearch-url} \e$B$KJ8;z\e(B
-\e$BNs\e(B @file{http://www.cs.indiana.edu/picons/search.html} \e$B$r@_Dj$9$k$3$H$G!"\e(B
+\e$BNs\e(B @uref{http://www.cs.indiana.edu/picons/search.html} \e$B$r@_Dj$9$k$3$H$G!"\e(B
 Steve Kinzler \e$B$N\e(B picon \e$B8!:w%(%s%8%s$r;H$&$3$H$,$G$-$^$9!#\e(B
 
 @vindex gnus-picons-database
 \e$B$=$&$G$J$1$l$P!"H`$N%G!<%?%Y!<%9$r<j85$KJ#@=$9$kI,MW$,$"$j$^$9!#\e(Bpicon \e$B%G!<\e(B
 \e$B%?%Y!<%9$NF~<j$H%$%s%9%H!<%k$N<j=g$O!"%&%'%V%V%i%&%6!<\e(B
-\e$B$G\e(B @file{http://www.cs.indiana.edu/picons/ftp/index.html} \e$B$K9T$C$F$_$F$/\e(B
+\e$B$G\e(B @uref{http://www.cs.indiana.edu/picons/ftp/index.html} \e$B$K9T$C$F$_$F$/\e(B
 \e$B$@$5$$!#\e(BGnus \e$B$O\e(B picons \e$B$,\e(B @code{gnus-picons-database} \e$B$G<($5$l$k>l=j$K%$\e(B
 \e$B%s%9%H!<%k$7$F$"$k$b$N$H4|BT$7$^$9!#\e(B
 
@@ -17682,7 +17720,7 @@ picon \e$B%G!<%?%Y!<%9$N>l=j!#\e(B@file{news}, @file{domains}, @file{users} (\e$B$J
 @item gnus-picons-piconsearch-url
 @vindex gnus-picons-piconsearch-url
 Web \e$B>e$N\e(B picon \e$B8!:w%(%s%8%s$N\e(B URL\e$B!#8=:_CN$i$l$F$$$kM#0l$N%(%s%8%s\e(B
-\e$B$O\e(B @file{http://www.cs.indiana.edu:800/piconsearch} \e$B$G$9!#%M%C%H%o!<%/CY\e(B
+\e$B$O\e(B @uref{http://www.cs.indiana.edu:800/piconsearch} \e$B$G$9!#%M%C%H%o!<%/CY\e(B
 \e$B1d$r2sHr$9$k$?$a$K\e(B icon \e$B$O%P%C%/%0%i%&%s%I$G<hF@$5$l$^$9!#$b$7$3$l$,\e(B
 @code{nil} (\e$B=i4|@_DjCM\e(B) \e$B$G$"$l$P!"\e(B
 picon \e$B$O\e(B @code{gnus-picons-database} \e$B$G<($5$l$k%m!<%+%k$N%G!<%?%Y!<%9$+\e(B
@@ -18059,7 +18097,7 @@ Gnus \e$B$O!"%9%3%"IU$1!"%9%l%C%I$N7A@.!"%9%l%C%IHf3S$J$I$r9T$&$H$-$K!"\e(B
 \e$B$^$?!"$"$J$?$,BU$1<T$N%M%C%H%o!<%/;TL1$G$b$"$k$J$i!"\e(B
 @file{gnus-junk.el} \e$B%Q%C%1!<%8$K$h$C$F<+F0E*$K6l>p$r$$$&J}$,NI$$$H;W$&$+\e(B
 \e$B$b$7$l$^$;$s!#$3$l\e(B
-\e$B$O\e(B @file{<URL:http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html>} \e$B$+\e(B
+\e$B$O\e(B @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html} \e$B$+\e(B
 \e$B$i!VL5NA$G!WMxMQ$G$-$^$9!#$[$H$s$I$N\e(B spam \e$B%a!<%k$O<+F0E*$KAw$i$l$F$$$k$N\e(B
 \e$B$G!"$A$g$C$H$@$11'Ch$N%P%i%s%9$,$H$l$k$+$b$7$l$^$;$s!#\e(B
 
@@ -18250,7 +18288,7 @@ but at the common table.@*
 \e$B$?!#\e(B
 
 \e$B$3$NL5Ni$r9T$C$??MJ*$rD4$Y$F$_$?$$$N$J$i!"$"$J$?$N\e(B (\e$B$/$=\e(B!) \e$B%&%'%V%V%i%&\e(B
-\e$B%6!<$r\e(B @file{http://quimby.gnus.org/~larsi/} \e$B$K8~$1$k;v$,$G$-$^$9!#\e(B
+\e$B%6!<$r\e(B @uref{http://quimby.gnus.org/} \e$B$K8~$1$k;v$,$G$-$^$9!#\e(B
 \e$B$3$l$O?7$7$/$F?h$JHG$N\e(B gnus \e$B$NBh0lG[I[>l=j$G!"\e(BNewsrc \e$B$r$V$C2u$7$F?M!9$r\e(B
 \e$B7cE\$5$l$k%5%$%H$H$7$FCN$i$l$F$$$^$9!#\e(B
 
@@ -19534,7 +19572,7 @@ latest version of gnus or some explanation on where to find it.
  A way to continue editing the latest Message composition.
 
 @item
- http://www.sonicnet.com/feature/ari3/
+@uref{http://www.sonicnet.com/feature/ari3/}
 
 @item
  facep is not declared.
@@ -19800,9 +19838,9 @@ Message-ID, delete the "original".
  when replying to several messages at once, put the "other" message-ids
 into a See-Also header.
 @item
- support setext: URL:http://www.bsdi.com/setext/
+ support setext: @uref{http://www.bsdi.com/setext/}
 @item
- support ProleText: <URL:http://proletext.clari.net/prole/proletext.html>
+ support ProleText: @uref{http://proletext.clari.net/prole/proletext.html}
 @item
  when browsing a foreign server, the groups that are already subscribed
 should be listed as such and not as "K".
@@ -20116,7 +20154,7 @@ problem is that archives are spread all over the net, unlike FAQs.
 What would be best I suppose is to find the one closest to your site.
 
 In any case, there is a list of general news group archives at @*
-ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html
+@uref{ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html}
 
 @item
 @example
@@ -20402,7 +20440,7 @@ in the summary buffer.
 version branches as threading, checkin date as the date, etc.
 
 @item
- http://www.dejanews.com/forms/dnsetfilter_exp.html ?
+@uref{http://www.dejanews.com/forms/dnsetfilter_exp.html}?
 This filter allows one to construct advance queries on the Dejanews
 database such as specifying start and end dates, subject, author,
 and/or newsgroup name.
@@ -20496,7 +20534,7 @@ Mac, MS (etc) characters into ISO 8859-1.
 @item
 @example
  (add-hook 'gnus-exit-query-functions
-'(lambda ()
+ (lambda ()
    (if (and (file-exists-p nnmail-spool-file)
             (> (nnheader-file-size nnmail-spool-file) 0))
        (yes-or-no-p "New mail has arrived.  Quit Gnus anyways? ")
@@ -22759,3 +22797,8 @@ Gnus \e$B$O\e(B Emacs Lisp \e$B$K$h$C$F=q$+$l$F$$$F!"$=$l$O$?$/$5$s$NC`<!2r<a<B9T$5
 @end iftex
 
 @c End:
+% LocalWords:  Backend BNF mucho Backends backends detailmenu cindex kindex kbd
+% LocalWords:  findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver
+% LocalWords:  nnmbox backend newusers Blllrph NEWGROUPS dingnusdingnusdingnus
+% LocalWords:  pre fab rec comp nnslashdot regex ga ga sci nnml nnbabyl nnmh
+% LocalWords:  nnfolder emph looong eld newsreaders defun init elc pxref
index 1113427..6dbd151 100644 (file)
@@ -5,7 +5,7 @@
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
-@dircategory Editors
+@dircategory Emacs
 @direntry
 * Gnus: (gnus).         The newsreader Gnus.
 @end direntry
 
 \thispagestyle{empty}
 
-Copyright \copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright \copyright{} 1995, 1996, 1997, 1998, 1999, 2000 
+Free Software Foundation, Inc.
 
 
 Permission is granted to copy, distribute and/or modify this document
@@ -300,7 +301,7 @@ license to the document, as described in section 6 of the license.
 
 This file documents gnus, the GNU Emacs newsreader.
 
-Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -329,7 +330,7 @@ license to the document, as described in section 6 of the license.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -601,7 +602,6 @@ The Article Buffer
 Composing Messages
 
 * Mail::                 Mailing and replying.
-* Post::                 Posting and following up.
 * 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.
@@ -645,7 +645,7 @@ Getting 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.
+* 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.
@@ -770,7 +770,7 @@ Various
 * 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 tendonitis in ten easy steps!
+* 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.
@@ -1065,7 +1065,7 @@ conjunction with each other, you have to send $1 per usage instance to
 me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
 Applications}) will be much more expensive, of course.)
 
-Anyways, you start one gnus up the normal way with @kbd{M-x gnus} (or
+Anyway, you start one gnus up the normal way with @kbd{M-x gnus} (or
 however you do it).  Each subsequent slave gnusae should be started with
 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
 files, but instead save @dfn{slave files} that contain information only
@@ -1940,6 +1940,14 @@ determines the number of articles gnus will fetch.  If @var{N} is
 positive, gnus fetches the @var{N} newest articles, if @var{N} is
 negative, Gnus fetches the @code{abs(@var{N})} oldest articles.
 
+Thus, @kbd{SPC} enters the group normally, @kbd{C-u SPC} offers old
+articles, @kbd{C-u 4 2 SPC} fetches the 42 newest articles, and @kbd{C-u
+- 4 2 SPC} fetches the 42 oldest ones.
+
+When you are in the group (in the Summary buffer), you can type
+@kbd{M-g} to fetch new articles, or @kbd{C-u M-g} to also show the old
+ones.
+
 @item RET
 @kindex RET (Group)
 @findex gnus-group-select-group
@@ -2540,7 +2548,7 @@ The following group parameters can be used:
 Address used by when doing followups and new posts.
 
 @example
-(to-address .  "some@@where.com")
+(to-address . "some@@where.com")
 @end example
 
 This is primarily useful in mail groups that represent closed mailing
@@ -2894,6 +2902,10 @@ Sort by number of unread articles.
 @findex gnus-group-sort-by-method
 Sort alphabetically on the select method.
 
+@item gnus-group-sort-by-server
+@findex gnus-group-sort-by-server
+Sort alphabetically on the Gnus server name.
+
 
 @end table
 
@@ -5166,7 +5178,7 @@ even though I haven't heard of anybody wanting it to go to the
 previous (unread) article, I'm sure there are people that want that as
 well.
 
-Multiply these five behaviours with five different marking commands, and
+Multiply these five behaviors with five different marking commands, and
 you get a potentially complex set of variable to control what each
 command should do.
 
@@ -5451,7 +5463,7 @@ hierarchical fashion.
 Threading is done by looking at the @code{References} headers of the
 articles.  In a perfect world, this would be enough to build pretty
 trees, but unfortunately, the @code{References} header is often broken
-or simply missing.  Weird news propagation excarcerbates the problem,
+or simply missing.  Weird news propagation exacerbates the problem,
 so one has to employ other heuristics to get pleasing results.  A
 plethora of approaches exists, as detailed in horrible detail in
 @pxref{Customizing Threading}.
@@ -6154,7 +6166,7 @@ Used carefully, though, it could be just an easier way to save articles.
 To turn caching on, set @code{gnus-use-cache} to @code{t}.  By default,
 all articles ticked or marked as dormant will then be copied
 over to your local cache (@code{gnus-cache-directory}).  Whether this
-cache is flat or hierarchal is controlled by the
+cache is flat or hierarchical is controlled by the
 @code{gnus-use-long-file-name} variable, as usual.
 
 When re-selecting a ticked or dormant article, it will be fetched from the
@@ -7227,8 +7239,8 @@ Hide @sc{pem} (privacy enhanced messages) cruft
 @findex gnus-article-strip-banner
 @cindex banner
 @cindex OneList
-@cindex stripping advertisments
-@cindex advertisments
+@cindex stripping advertisements
+@cindex advertisements
 Strip the banner specified by the @code{banner} group parameter
 (@code{gnus-article-strip-banner}).  This is mainly used to hide those
 annoying banners and/or signatures that some mailing lists and moderated
@@ -7329,8 +7341,16 @@ We call this ``article washing'' for a really good reason.  Namely, the
 something else'', but normally results in something looking better.
 Cleaner, perhaps.
 
+@xref{Customizing Articles}, if you want to change how Gnus displays
+articles by default.
+
 @table @kbd
 
+@item C-u g
+This is not really washing, it's sort of the opposite of washing.  If
+you type this, you see the article exactly as it exists on disk or on
+the server.
+
 @item W l
 @kindex W l (Summary)
 @findex gnus-summary-stop-page-breaking
@@ -7459,6 +7479,7 @@ has been done.
 \include{xface}
 @end iflatex
 @end iftex
+@anchor{X-Face}
 Look for and display any X-Face headers
 (@code{gnus-article-display-x-face}).  The command executed by this
 function is given by the @code{gnus-article-x-face-command} variable.
@@ -7660,6 +7681,12 @@ Display the date in international format, aka. ISO 8601
 @findex gnus-article-date-local
 Display the date in the local timezone (@code{gnus-article-date-local}).
 
+@item W T p
+@kindex W T p (Summary)
+@findex gnus-article-date-english
+Display the date in a format that's easily pronounceable in English
+(@code{gnus-article-date-english}).
+
 @item W T s
 @kindex W T s (Summary)
 @vindex gnus-article-time-format
@@ -7950,7 +7977,7 @@ variable, which is an alist of regexps (to match group names) and
 default charsets to be used when reading these groups.
 
 In addition, some people do use soi-disant @sc{mime}-aware agents that
-aren't.  These blitely mark messages as being in @code{iso-8859-1} even
+aren't.  These blithely mark messages as being in @code{iso-8859-1} even
 if they really are in @code{koi-8}.  To help here, the
 @code{gnus-newsgroup-ignored-charsets} variable can be used.  The
 charsets that are listed here will be ignored.  The variable can be set
@@ -9346,6 +9373,7 @@ possible but those listed are probably sufficient for most people.
 @item gnus-treat-hide-boring-headers (head)
 @item gnus-treat-hide-signature (t, last)
 @item gnus-treat-hide-citation (t, integer)
+@item gnus-treat-hide-citation-maybe (t, integer)
 @item gnus-treat-strip-pgp (t, last, integer)
 @item gnus-treat-strip-pem (t, last, integer)
 @item gnus-treat-highlight-headers (head)
@@ -9353,8 +9381,11 @@ possible but those listed are probably sufficient for most people.
 @item gnus-treat-highlight-signature (t, last, integer)
 @item gnus-treat-date-ut (head)
 @item gnus-treat-date-local (head)
+@item gnus-treat-date-english (head)
 @item gnus-treat-date-lapsed (head)
 @item gnus-treat-date-original (head)
+@item gnus-treat-date-iso8601 (head)
+@item gnus-treat-date-user-defined (head)
 @item gnus-treat-strip-headers-in-body (t, integer)
 @item gnus-treat-strip-trailing-blank-lines (t, last, integer)
 @item gnus-treat-strip-leading-blank-lines (t, integer)
@@ -9524,7 +9555,6 @@ on your setup (@pxref{Posting Server}).
 
 @menu
 * Mail::                 Mailing and replying.
-* Post::                 Posting and following up.
 * 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.
@@ -9563,31 +9593,6 @@ should be sent in several parts. If it is nil, the size is unlimited.
 @end table
 
 
-@node Post
-@section Post
-
-Variables for composing news articles:
-
-@table @code
-@item gnus-sent-message-ids-file
-@vindex gnus-sent-message-ids-file
-Gnus will keep a @code{Message-ID} history file of all the mails it has
-sent.  If it discovers that it has already sent a mail, it will ask the
-user whether to re-send the mail.  (This is primarily useful when
-dealing with @sc{soup} packets and the like where one is apt to send the
-same packet multiple times.)  This variable says what the name of this
-history file is.  It is @file{~/News/Sent-Message-IDs} by default.  Set
-this variable to @code{nil} if you don't want gnus to keep a history
-file.
-
-@item gnus-sent-message-ids-length
-@vindex gnus-sent-message-ids-length
-This variable says how many @code{Message-ID}s to keep in the history
-file.  It is 1000 by default.
-
-@end table
-
-
 @node Posting Server
 @section Posting Server
 
@@ -9699,7 +9704,7 @@ use to store sent messages.  The default is:
 @end lisp
 
 You can, however, use any mail select method (@code{nnml},
-@code{nnmbox}, etc.).  @code{nnfolder} is a quite likeable select method
+@code{nnmbox}, etc.).  @code{nnfolder} is a quite likable select method
 for doing this sort of thing, though.  If you don't like the default
 directory chosen, you could say something like:
 
@@ -9908,16 +9913,24 @@ So here's a new example:
         ((message-news-p)
          (signature my-news-signature))
         (header "From\\|To" "larsi.*org"
-         (Organization "Somewhere, Inc."))
+                (Organization "Somewhere, Inc."))
         ((posting-from-work-p)
          (signature-file "~/.work-signature")
          (address "user@@bar.foo")
          (body "You are fired.\n\nSincerely, your boss.")
          (organization "Important Work, Inc"))
+        ("nnml:.*"
+         (From (save-excursion
+                 (set-buffer gnus-article-buffer)
+                 (message-fetch-field "to"))))
         ("^nn.+:"
          (signature-file "~/.mail-signature"))))
 @end lisp
 
+The @samp{nnml:.*} rule means that you use the @code{To} address as the
+@code{From} address in all your outgoing replies, which might be handy
+if you fill many roles.
+
 
 @node Drafts
 @section Drafts
@@ -10114,7 +10127,7 @@ These select method specifications can sometimes become quite
 complicated---say, for instance, that you want to read from the
 @sc{nntp} server @samp{news.funet.fi} on port number 13, which
 hangs if queried for @sc{nov} headers and has a buggy select.  Ahem.
-Anyways, if you had to specify that for each group that used this
+Anyway, if you had to specify that for each group that used this
 server, that would be too much work, so Gnus offers a way of naming
 select methods, which is what you do in the server buffer.
 
@@ -10233,7 +10246,7 @@ servers.
 @findex gnus-server-regenerate-server
 Request that the server regenerate all its data structures
 (@code{gnus-server-regenerate-server}).  This can be useful if you have
-a mail backend that has gotten out of synch.
+a mail backend that has gotten out of sync.
 
 @end table
 
@@ -10536,15 +10549,16 @@ The file contains one or more line, each of which define one server.
 
 @item
 Each line may contain an arbitrary number of token/value pairs.  
-@end enumerate
 
 The valid tokens include @samp{machine}, @samp{login}, @samp{password},
-@samp{default}.  Gnus introduce two new tokens, not present in the
-original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
+@samp{default}.  In addition Gnus introduces two new tokens, not present
+in the original @file{.netrc}/@code{ftp} syntax, namely @samp{port} and
 @samp{force}.  (This is the only way the @file{.authinfo} file format
-deviates from the @file{.netrc} file format.) @samp{port} is used to
-indicate what port on the server the credentials apply to, @samp{force}
-is explained below.
+deviates from the @file{.netrc} file format.)  @samp{port} is used to
+indicate what port on the server the credentials apply to and
+@samp{force} is explained below.
+
+@end enumerate
 
 Here's an example file:
 
@@ -10726,8 +10740,8 @@ This works for Solaris @code{telnet}, for instance.
 @item nntp-open-ssl-stream
 Opens a connection to a server over a @dfn{secure} channel.  To use this
 you must have SSLay installed
-(@file{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
-@file{ssl.el} (from the W3 distributeion, for instance).  You then
+(@uref{ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL}, and you also need
+@file{ssl.el} (from the W3 distribution, for instance).  You then
 define a server as follows:
 
 @lisp
@@ -10849,7 +10863,7 @@ server closes connection.
 @item nntp-record-commands
 @vindex nntp-record-commands
 If non-@code{nil}, @code{nntp} will log all commands it sends to the
-@sc{nntp} server (along with a timestep) in the @samp{*nntp-log*}
+@sc{nntp} server (along with a timestamp) in the @samp{*nntp-log*}
 buffer.  This is useful if you are debugging a Gnus/@sc{nntp} connection
 that doesn't seem to work.
 
@@ -10866,7 +10880,7 @@ and might be useful, for instance, to speed up reading groups that
 contain very big articles---@samp{alt.binaries.pictures.furniture}, for
 instance.
 
-Anyways, you just specify @code{nnspool} as the method and @code{""} (or
+Anyway, you just specify @code{nnspool} as the method and @code{""} (or
 anything else) as the address.
 
 If you have access to a local spool, you should probably use that as the
@@ -11283,7 +11297,8 @@ The name of the POP server.  The default is taken from the
 The port number of the POP server.  This can be a number (eg,
 @samp{:port 1234}) or a string (eg, @samp{:port "pop3"}).  If it is a
 string, it should be a service name as listed in @file{/etc/services} on
-Unix systems.  The default is @samp{"pop3"}.
+Unix systems.  The default is @samp{"pop3"}.  On some systems you might
+need to specify it as @samp{"pop-3"} instead.
 
 @item :user
 The user name to give to the POP server.  The default is the login
@@ -11533,7 +11548,7 @@ useful when you use local mail and news.
 @end table
 @end table
 
-@subsubheading Function Interface
+@subsubsection Function Interface
 
 Some of the above keywords specify a Lisp function to be executed.
 For each keyword @code{:foo}, the Lisp variable @code{foo} is bound to
@@ -11871,9 +11886,11 @@ When it has found a parent, it returns the corresponding group name.  It
 is recommended that you set @code{nnmail-message-id-cache-length} to a
 somewhat higher number than the default so that the message ids are
 still in the cache.  (A value of 5000 appears to create a file some 300
-kBytes in size.)  When @code{nnmail-cache-accepted-message-ids} is
-non-nil, Gnus also records the message ids of moved articles, so that
-the followup messages goes into the new group.
+kBytes in size.)
+@vindex nnmail-cache-accepted-message-ids
+When @code{nnmail-cache-accepted-message-ids} is non-@code{nil}, Gnus
+also records the message ids of moved articles, so that the followup
+messages goes into the new group.
 
 
 @node Group Mail Splitting
@@ -11996,7 +12013,7 @@ you.  For example, add to your @file{.gnus}:
 If @var{auto-update} is non-@code{nil}, @code{gnus-group-split-update}
 will be added to @code{nnmail-pre-get-new-mail-hook}, so you won't ever
 have to worry about updating @code{nnmail-split-fancy} again.  If you
-don't omit @var{catch-all} (it's optional; same as nil),
+don't omit @var{catch-all} (it's optional, equivalent to @code{nil}),
 @code{gnus-group-split-default-catch-all-group} will be set to its
 value.
 
@@ -12904,7 +12921,7 @@ Format string URL to fetch an article by @code{Message-ID}.
 @cindex Slashdot
 @cindex nnslashdot
 
-Slashdot (@file{http://slashdot.org/}) is a popular news site, with
+Slashdot (@uref{http://slashdot.org/}) is a popular news site, with
 lively discussion following the news articles.  @code{nnslashdot} will
 let you read this forum in a convenient manner.
 
@@ -12994,7 +13011,7 @@ updated.  The default is 0.
 @cindex nnultimate
 @cindex Ultimate Bulletin Board
 
-The Ultimate Bulletin Board (@file{http://www.ultimatebb.com/}) is
+The Ultimate Bulletin Board (@uref{http://www.ultimatebb.com/}) is
 probably the most popular Web bulletin board system used.  It has a
 quite regular and nice interface, and it's possible to get the
 information Gnus needs to keep groups updated.
@@ -13023,8 +13040,8 @@ The directory where @code{nnultimate} stores its files.  The default is
 @cindex Web Archive
 
 Some mailing lists only have archives on Web servers, such as
-@file{http://www.egroups.com/} and
-@file{http://www.mail-archive.com/}.  It has a quite regular and nice
+@uref{http://www.egroups.com/} and
+@uref{http://www.mail-archive.com/}.  It has a quite regular and nice
 interface, and it's possible to get the information Gnus needs to keep
 groups updated.
 
@@ -13892,7 +13909,7 @@ program.
 
 @vindex imap-ssl-program
 For SSL connections, the OpenSSL program is available from
-@file{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
+@uref{http://www.openssl.org/}. OpenSSL was formerly known as SSLeay,
 and nnimap support it too - although the most recent versions of
 SSLeay, 0.9.x, are known to have serious bugs making it
 useless. Earlier versions, especially 0.8.x, of SSLeay are known to
@@ -13945,7 +13962,7 @@ doesn't exist actually does exist.  More specifically, @sc{imap} has
 this concept of marking articles @code{Deleted} which doesn't actually
 delete them, and this (marking them @code{Deleted}, that is) is what
 nnimap does when you delete a article in Gnus (with @kbd{G DEL} or
-similair).
+similar).
 
 Since the articles aren't really removed when we mark them with the
 @code{Deleted} flag we'll need a way to actually delete them.  Feel like
@@ -13960,7 +13977,7 @@ The possible options are:
 @table @code
 
 @item always
-The default behaviour, delete all articles marked as "Deleted" when
+The default behavior, delete all articles marked as "Deleted" when
 closing a mailbox.
 @item never
 Never actually delete articles.  Currently there is no way of showing
@@ -14086,7 +14103,7 @@ crossposting enabled.  In that case, all matching rules will "win".
 
 This variable can also have a function as its value, the function will
 be called with the headers narrowed and should return a group where it
-thinks the article should be splitted to.  See @code{nnimap-split-fancy}.
+thinks the article should be split to.  See @code{nnimap-split-fancy}.
 
 The splitting code tries to create mailboxes if it need too.
 
@@ -14117,7 +14134,7 @@ Nnmail equivalent: @code{nnmail-split-methods}.
 @vindex nnimap-split-predicate
 
 Mail matching this predicate in @code{nnimap-split-inbox} will be
-splitted, it is a string and the default is @samp{UNSEEN UNDELETED}.
+split, it is a string and the default is @samp{UNSEEN UNDELETED}.
 
 This might be useful if you use another @sc{imap} client to read mail in
 your inbox but would like Gnus to split all articles in the inbox
@@ -14627,7 +14644,7 @@ and simply specify your predicate as:
 If/when using something like the above, be aware that there are many
 misconfigured systems/mailers out there and so an article's date is not
 always a reliable indication of when it was posted.  Hell, some people
-just don't give a damm.
+just don't give a damn.
 
 The above predicates apply to *all* the groups which belong to the
 category.  However, if you wish to have a specific predicate for an
@@ -14738,7 +14755,7 @@ about parenthesis?
 @item
 Use @code{normal} score files
 
-If you dont want to maintain two sets of scoring rules for a group, and
+If you don't want to maintain two sets of scoring rules for a group, and
 your desired @code{downloading} criteria for a group are the same as your
 @code{reading} criteria then you can tell the agent to refer to your
 @code{normal} score files when deciding what to download.
@@ -15026,8 +15043,8 @@ disconnected, and synchronize these flags when you plug back in.
 
 Gnus keep track of flag changes when reading nnimap groups under the
 Agent by default.  When you plug back in, by default Gnus will check if
-you have any changed any flags and ask if you wish to synchronize theese
-with the server.  This behaviour is customizable with
+you have any changed any flags and ask if you wish to synchronize these
+with the server.  This behavior is customizable with
 @code{gnus-agent-synchronize-flags}.
 
 @vindex gnus-agent-synchronize-flags
@@ -16531,7 +16548,7 @@ by hand.
 
 The kill to score conversion package isn't included in Gnus by default.
 You can fetch it from
-@file{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+@uref{http://www.stud.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
 
 If your old kill files are very complex---if they contain more
 non-@code{gnus-kill} forms than not, you'll have to convert them by
@@ -16570,7 +16587,7 @@ article.
 
 To use GroupLens you must register a pseudonym with your local Better
 Bit Bureau (BBB).
-@samp{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
+@uref{http://www.cs.umn.edu/Research/GroupLens/bbb.html} is the only
 better bit in town at the moment.
 
 Once you have registered you'll need to set a couple of variables.
@@ -16974,7 +16991,7 @@ four days, Gnus will decay the scores four times, for instance.
 * 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 tendonitis in ten easy steps!
+* 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.
@@ -18172,7 +18189,7 @@ advantage of that.
 @end iflatex
 @end iftex
 
-So...  You want to slow down your news reader even more!  This is a
+So@dots{}  You want to slow down your news reader even more!  This is a
 good way to do so.  Its also a great way to impress people staring
 over your shoulder as you read news.
 
@@ -18210,12 +18227,12 @@ in either monochrome @code{XBM} format or color @code{XPM} and
 If you have a permanent connection to the Internet you can use Steve
 Kinzler's Picons Search engine by setting
 @code{gnus-picons-piconsearch-url} to the string @*
-@file{http://www.cs.indiana.edu/picons/search.html}.
+@uref{http://www.cs.indiana.edu/picons/search.html}.
 
 @vindex gnus-picons-database
 Otherwise you need a local copy of his database.  For instructions on
 obtaining and installing the picons databases, point your Web browser at @*
-@file{http://www.cs.indiana.edu/picons/ftp/index.html}.  Gnus expects
+@uref{http://www.cs.indiana.edu/picons/ftp/index.html}.  Gnus expects
 picons to be installed into a location pointed to by
 @code{gnus-picons-database}.
 
@@ -18289,7 +18306,7 @@ subdirectories.  This is only useful if
 @item gnus-picons-piconsearch-url
 @vindex gnus-picons-piconsearch-url
 The URL for the web picons search engine.  The only currently known
-engine is @file{http://www.cs.indiana.edu:800/piconsearch}.  To
+engine is @uref{http://www.cs.indiana.edu:800/piconsearch}.  To
 workaround network delays, icons will be fetched in the background.  If
 this is @code{nil} 'the default), then picons are fetched from local
 database indicated by @code{gnus-picons-database}.
@@ -18409,7 +18426,7 @@ Whether to move point to first empty line when displaying picons.  This
 has only an effect if `gnus-picons-display-where' has value `article'.
 
 If @code{nil}, display the picons in the @code{From} and
-@code{Newsgroups} lines.  This is the defailt.
+@code{Newsgroups} lines.  This is the default.
 
 @item gnus-picons-clear-cache-on-shutdown
 @vindex gnus-picons-clear-cache-on-shutdown
@@ -18621,7 +18638,7 @@ First, pick one (1) valid mail address that you can be reached at, and
 put it in your @code{From} header of all your news articles.  (I've
 chosen @samp{larsi@@trym.ifi.uio.no}, but for many addresses on the form
 @samp{larsi+usenet@@ifi.uio.no} will be a better choice.  Ask your
-sysadm whether your sendmail installation accepts keywords in the local
+sysadmin whether your sendmail installation accepts keywords in the local
 part of the mail address.)
 
 @lisp
@@ -18670,7 +18687,7 @@ each unsolicited commercial email---at your leisure.
 
 If you are also a lazy net citizen, you will probably prefer complaining
 automatically with the @file{gnus-junk.el} package, available FOR FREE
-at @* @file{<URL:http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html>}.
+at @* @uref{http://stud2.tuwien.ac.at/~e9426626/gnus-junk.html}.
 Since most e-mail spam is sent automatically, this may reconcile the
 cosmic balance somewhat.
 
@@ -18842,7 +18859,7 @@ but at the common table.@*
 
 If you want to investigate the person responsible for this outrage,
 you can point your (feh!) web browser to
-@file{http://quimby.gnus.org/~larsi/}.  This is also the primary
+@uref{http://quimby.gnus.org/}.  This is also the primary
 distribution point for the new and spiffy versions of Gnus, and is
 known as The Site That Destroys Newsrcs And Drives People Mad.
 
@@ -19130,7 +19147,7 @@ importantly, talking about new experimental features that have been
 introduced may confuse casual users.  New features are frequently
 introduced, fiddled with, and judged to be found wanting, and then
 either discarded or totally rewritten.  People reading the mailing list
-usually keep up with these rapid changes, whille people on the newsgroup
+usually keep up with these rapid changes, while people on the newsgroup
 can't be assumed to do so.
 
 
@@ -20138,7 +20155,7 @@ latest version of gnus or some explanation on where to find it.
  A way to continue editing the latest Message composition.
 
 @item
- http://www.sonicnet.com/feature/ari3/
+@uref{http://www.sonicnet.com/feature/ari3/}
 
 @item
  facep is not declared.
@@ -20404,9 +20421,9 @@ Message-ID, delete the "original".
  when replying to several messages at once, put the "other" message-ids
 into a See-Also header.
 @item
- support setext: URL:http://www.bsdi.com/setext/
+ support setext: @uref{http://www.bsdi.com/setext/}
 @item
- support ProleText: <URL:http://proletext.clari.net/prole/proletext.html>
+ support ProleText: @uref{http://proletext.clari.net/prole/proletext.html}
 @item
  when browsing a foreign server, the groups that are already subscribed
 should be listed as such and not as "K".
@@ -20722,7 +20739,7 @@ problem is that archives are spread all over the net, unlike FAQs.
 What would be best I suppose is to find the one closest to your site.
 
 In any case, there is a list of general news group archives at @*
-ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html
+@uref{ftp://ftp.neosoft.com/pub/users/claird/news.lists/newsgroup_archives.html}
 
 
 
@@ -21019,7 +21036,7 @@ in the summary buffer.
 version branches as threading, checkin date as the date, etc.
 
 @item
- http://www.dejanews.com/forms/dnsetfilter_exp.html ?
+@uref{http://www.dejanews.com/forms/dnsetfilter_exp.html}?
 This filter allows one to construct advance queries on the Dejanews
 database such as specifying start and end dates, subject, author,
 and/or newsgroup name.
@@ -21113,7 +21130,7 @@ Mac, MS (etc) characters into ISO 8859-1.
 @item
 @example
  (add-hook 'gnus-exit-query-functions
-'(lambda ()
+ (lambda ()
    (if (and (file-exists-p nnmail-spool-file)
             (> (nnheader-file-size nnmail-spool-file) 0))
        (yes-or-no-p "New mail has arrived.  Quit Gnus anyways? ")
@@ -23461,3 +23478,8 @@ former).  The manual is unambiguous, but it can be confusing.
 @end iftex
 
 @c End:
+% LocalWords:  Backend BNF mucho Backends backends detailmenu cindex kindex kbd
+% LocalWords:  findex Gnusae vindex dfn dfn samp nntp setq nnspool nntpserver
+% LocalWords:  nnmbox backend newusers Blllrph NEWGROUPS dingnusdingnusdingnus
+% LocalWords:  pre fab rec comp nnslashdot regex ga ga sci nnml nnbabyl nnmh
+% LocalWords:  nnfolder emph looong eld newsreaders defun init elc pxref
index 4a725cd..56c807d 100644 (file)
@@ -5,7 +5,7 @@
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
-@dircategory Editors
+@dircategory Emacs
 @direntry
 * Message-ja: (message-ja).   Mail and news composition mode that goes
                               with Gnus (Japanese).
@@ -22,7 +22,7 @@ This file documents Message, the Emacs message composition mode.
 \e$B$3$N%U%!%$%k$O\e(B Emacs \e$B$N%a%C%;!<%8:n@.%b!<%I$G$"$k\e(B Message \e$B$K4X$9$k@bL@J8\e(B
 \e$B=q$G$9!#\e(B
 
-Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -69,7 +69,8 @@ license to the document, as described in section 6 of the license.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000
+     Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -116,41 +117,39 @@ Gnus \e$B$NA4$F$N%a%C%;!<%8$N:n@.\e(B (\e$B%a!<%k$H%K%e!<%9$NN>J}\e(B) \e$B$O%a%C%;!<
 \e$B%I%P%C%U%!$G9T$o$l$^$9!#\e(B
 
 @menu
-* Interface::         \e$B%a%C%;!<%8%P%C%U%!$r@_Dj$9$k!#\e(B
-* Commands::          \e$B%a%C%;!<%8%b!<%I%P%C%U%!$G<B9T$G$-$kL?Na!#\e(B
-* Variables::         \e$B%a%C%;!<%8%P%C%U%!$r%+%9%?%^%$%:$9$k!#\e(B
-* Compatibility::     \e$B%a%C%;!<%8$r2<0L8_49$K$9$k!#\e(B
-* Appendices::        \e$B$b$C$H5;=QE*$J;v!#\e(B
-* Index::             \e$BJQ?t!"4X?t!"35G0$N:w0z!#\e(B
-* Key Index::         \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw!#\e(B
+* Interface::         \e$B%a%C%;!<%8%P%C%U%!$r@_Dj$9$k\e(B
+* Commands::          \e$B%a%C%;!<%8%b!<%I%P%C%U%!$G<B9T$G$-$kL?Na\e(B
+* Variables::         \e$B%a%C%;!<%8%P%C%U%!$r%+%9%?%^%$%:$9$k\e(B
+* Compatibility::     \e$B%a%C%;!<%8$r2<0L8_49$K$9$k\e(B
+* Appendices::        \e$B$b$C$H5;=QE*$J;v\e(B
+* Index::             \e$BJQ?t!"4X?t!"35G0$N:w0z\e(B
+* Key Index::         \e$B%a%C%;!<%8%b!<%I%-!<$N0lMw\e(B
 @end menu
 
 \e$B$3$N%^%K%e%"%k$O\e(B T-gnus 6.15 Message \e$B$KBP1~$7$^$9!#\e(BMessage \e$B$O$3$N%^%K%e\e(B
 \e$B%"%k$HF1$8HGHV9f$N\e(B Gnus \e$B$NG[I[$H6&$KG[I[$5$l$^$9!#\e(B
 
-
 @node Interface
 @chapter \e$B3&LL\e(B
 
 \e$B%W%m%0%i%`\e(B (\e$B$b$7$/$O?M\e(B) \e$B$,%a%C%;!<%8$KH?1~$7$?$$$H$-\e(B -- \e$BJVEz!"%U%)%m!<%"%C\e(B
 \e$B%W!"E>Aw!"<h$j>C$7\e(B -- \e$B$=$N%W%m%0%i%`\e(B (\e$B$b$7$/$O?M\e(B) \e$B$O%a%C%;!<%8$,$"$k%P%C\e(B
-\e$B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k$H\e(B 
-@code{Message} \e$B$O?7$7$$\e(B @code{message} \e$B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<$r\e(B
-\e$BF~$l$F:n$j=P$7!"MxMQ<T$O%a%C%;!<%8$rAw$kA0$K$=$l$rJT=8$G$-$^$9!#\e(B
+\e$B%U%!$K%]%$%s%H$rF~$l$FI,MW$JL?Na$r8F$S=P$9$@$1$GNI$$$Y$-$G$9!#$=$&$9$k\e(B
+\e$B$H\e(B @code{Message} \e$B$O?7$7$$\e(B @code{message} \e$B%b!<%I%P%C%U%!$rE,@Z$J%X%C%@!<\e(B
+\e$B$rF~$l$F:n$j=P$7!"MxMQ<T$O%a%C%;!<%8$rAw$kA0$K$=$l$rJT=8$G$-$^$9!#\e(B
 
 @menu
-* New News Message::     \e$BA4$/?7$7$$%K%e!<%9%a%C%;!<%8$rJT=8$9$k!#\e(B
-* Reply::                \e$B%a!<%k$GJVEz$9$k!#\e(B
-* Wide Reply::           \e$BA4$F$N?M$K%a!<%k$G1~Ez$9$k!#\e(B
-* Followup::             \e$B%K%e!<%9$G%U%)%m!<%"%C%W$9$k!#\e(B
-* Canceling News::       \e$B?7$7$$5-;v$r<h$j>C$9!#\e(B
-* Superseding::          \e$B%a%C%;!<%8$NBeBX!#\e(B
-* Forwarding::           \e$B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k!#\e(B
-* Resending::            \e$B%a!<%k%a%C%;!<%8$r:FAw$9$k!#\e(B
-* Bouncing::             \e$B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k!#\e(B
+* New News Message::     \e$BA4$/?7$7$$%K%e!<%9%a%C%;!<%8$rJT=8$9$k\e(B
+* Reply::                \e$B%a!<%k$GJVEz$9$k\e(B
+* Wide Reply::           \e$BA4$F$N?M$K%a!<%k$G1~Ez$9$k\e(B
+* Followup::             \e$B%K%e!<%9$G%U%)%m!<%"%C%W$9$k\e(B
+* Canceling News::       \e$B?7$7$$5-;v$r<h$j>C$9\e(B
+* Superseding::          \e$B%a%C%;!<%8$NBeBX\e(B
+* Forwarding::           \e$B%a%C%;!<%8$r%K%e!<%9$b$7$/$O%a!<%k$GE>Aw$9$k\e(B
+* Resending::            \e$B%a!<%k%a%C%;!<%8$r:FAw$9$k\e(B
+* Bouncing::             \e$B%a!<%k%a%C%;!<%8$N<:GT$r:FAw$9$k\e(B
 @end menu
 
-
 @node New Mail Message
 @section \e$B?7$7$$%a!<%k%a%C%;!<%8\e(B
 
@@ -158,9 +157,8 @@ Gnus \e$B$NA4$F$N%a%C%;!<%8$N:n@.\e(B (\e$B%a!<%k$H%K%e!<%9$NN>J}\e(B) \e$B$O%a%C%;!<
 @code{message-mail} \e$BL?Na$O?7$7$$%P%C%U%!$r:n$jI=<($7$^$9!#\e(B
 
 2\e$B$D$NA*Br<+M3$J0z?t$,<u$1IU$1$i$l$^$9\e(B: \e$B:G=i$N$b$N$O\e(B @code{To} \e$B%X%C%@!<$H\e(B
-\e$B$7$F!"\e(B2\e$BHVL\$O\e(B @code{Subject} \e$B%X%C%@!<$H$7$F;H$o$l$k!#$b$7$3$l$i$,\e(B 
-@code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C%@!<$O6u$K$J$j$^$9!#\e(B
-
+\e$B$7$F!"\e(B2\e$BHVL\$O\e(B @code{Subject} \e$B%X%C%@!<$H$7$F;H$o$l$k!#$b$7$3$l$i\e(B
+\e$B$,\e(B @code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C%@!<$O6u$K$J$j$^$9!#\e(B
 
 @node New News Message
 @section \e$B?7$7$$%K%e!<%9%a%C%;!<%8\e(B
@@ -168,12 +166,11 @@ Gnus \e$B$NA4$F$N%a%C%;!<%8$N:n@.\e(B (\e$B%a!<%k$H%K%e!<%9$NN>J}\e(B) \e$B$O%a%C%;!<
 @findex message-news
 \e$BL?Na\e(B @code{message-news} \e$B$O?7$7$$%a%C%;!<%8%P%C%U%!$r:n$j!"I=<($7$^$9!#\e(B
 
-\e$B$3$N4X?t$O\e(B2\e$B$D$NA*Br<+M3$J0z?t$r<u$1IU$1$^$9!#:G=i$N$b$N$O\e(B 
-@code{Newsgroups} \e$B%X%C%@!<$H$7$F!"\e(B2\e$B$D$a$N$b$N$O\e(B @code{Subject} \e$B%X%C%@!<\e(B
+\e$B$3$N4X?t$O\e(B2\e$B$D$NA*Br<+M3$J0z?t$r<u$1IU$1$^$9!#:G=i$N$b$N\e(B
+\e$B$O\e(B @code{Newsgroups} \e$B%X%C%@!<$H$7$F!"\e(B2\e$B$D$a$N$b$N$O\e(B @code{Subject} \e$B%X%C%@!<\e(B
 \e$B$H$7$F;H$o$l$^$9!#$b$7$3$l$i$,\e(B @code{nil} \e$B$G$"$k$J$i!"$=$l$i$N\e(B2\e$B$D$N%X%C\e(B
 \e$B%@!<$O6u$K$J$j$^$9!#\e(B
 
-
 @node Reply
 @section \e$BJVEz\e(B
 
@@ -202,16 +199,15 @@ Message \e$B$O2?=h$KJVEz$,9T$/$+$rIaDL$NJ}K!\e(B (@pxref{Responses}) \e$B$G7hDj$7$^
 \e$B$l$^$9!#\e(B
 
 \e$B$4Mw$NDL$j!"$3$N4X?t$O$=$l$,\e(B To \e$B%X%C%@!<$,$I$N$h$&$G$"$k$Y$-$+$K4V$9$k<g\e(B
-\e$BD%$,$"$l$P!"J8;zNs$rJV$9$Y$-$G$9!#$b$7$=$&$G$J$1$l$P!"$=$l$O\e(B @code{nil} 
+\e$BD%$,$"$l$P!"J8;zNs$rJV$9$Y$-$G$9!#$b$7$=$&$G$J$1$l$P!"$=$l$O\e(B @code{nil}
 \e$B$rJV$9$@$1$G!"$=$&$9$l$P\e(B To \e$B%X%C%@!<$r7hDj$9$kIaDL$NJ}K!$,;H$o$l$k$G$7$g\e(B
 \e$B$&!#\e(B
 
-\e$B$3$N4X?t$O%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"$=$l$>$l$NMWAG$O\e(B 
-cons \e$B%;%k$G$"$k$Y$-$G!"$=$l$N\e(B car \e$B$O%X%C%@!<$NL>A0\e(B (\e$BNc\e(B @code{Cc}) \e$B$G!"\e(B
+\e$B$3$N4X?t$O%j%9%H$rJV$9;v$b$G$-$^$9!#$=$N$h$&$J>l9g$O!"$=$l$>$l$NMWAG\e(B
+\e$B$O\e(B cons \e$B%;%k$G$"$k$Y$-$G!"$=$l$N\e(B car \e$B$O%X%C%@!<$NL>A0\e(B (\e$BNc\e(B @code{Cc}) \e$B$G!"\e(B
 cdr \e$B$,%X%C%@!<$NCM\e(B (\e$BNc\e(B @samp{larsi@@ifi.uio.no}) \e$B$G$"$k$Y$-$G$9!#A4$F$N\e(B
 \e$B$3$l$i$N%X%C%@!<$O=P$F9T$/%a!<%k$N%X%C%@!<$KA^F~$5$l$^$9!#\e(B
 
-
 @node Wide Reply
 @section \e$B9-$/JVEz\e(B
 
@@ -227,12 +223,10 @@ Message \e$B$OJVEz$,2?=h$K9T$/$+$r7hDj$9$k$?$a$KIaDL$NJ}K!$r;H$$$^$9$,!"\e(B
 \e$BJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function} \e$B$HF1$8$h$&\e(B
 \e$B$K;H$o$l$^$9\e(B (@pxref{Reply})\e$B!#\e(B
 
-
 @findex message-dont-reply-to-names
-\e$B@55,I=8=\e(B @code{rmail-dont-reply-to-names} \e$B$K9gCW$9$k%"%I%l%9$O\e(B @code{Cc} 
+\e$B@55,I=8=\e(B @code{rmail-dont-reply-to-names} \e$B$K9gCW$9$k%"%I%l%9$O\e(B @code{Cc}
 \e$B%X%C%@!<$+$i<h$j=|$+$l$^$9!#\e(B
 
-
 @node Followup
 @section \e$B%U%)%m!<%"%C%W\e(B
 
@@ -243,7 +237,7 @@ Message \e$B$OJVEz$,2?=h$K9T$/$+$r7hDj$9$k$?$a$KIaDL$NJ}K!$r;H$$$^$9$,!"\e(B
 @vindex message-followup-to-function
 Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 @code{message-followup-to-function} \e$B$rO.$k;v$G!"$"$J$?$NMW5a$K9g$&$h$&$K\e(B
-\e$B?6$kIq$$$rJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function} 
+\e$B?6$kIq$$$rJQ99$9$k;v$,$G$-$^$9!#$=$l$O\e(B @code{message-reply-to-function}
 \e$B$HF1$8$h$&$K;H$o$l$^$9\e(B (@pxref{Reply})\e$B!#\e(B
 
 @vindex message-use-followup-to
@@ -253,14 +247,12 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 \e$B?R$M$^$9!#$b$7\e(B @code{t} \e$B$G$"$k$H!"$=$l$,\e(B @samp{\e$BEj9F<T\e(B} \e$B$G$J$$8B$j!"CM$r\e(B
 \e$B;H$$$^$9!#\e(B@code{nil} \e$B$G$"$l$P!"CM$r;H$$$^$;$s!#\e(B
 
-
 @node Canceling News
 @section \e$B%K%e!<%9$r<h$j>C$9\e(B
 
 @findex message-cancel-news
 \e$BL?Na\e(B @code{message-cancel-news} \e$B$O8=:_$N%P%C%U%!$N5-;v$r<h$j>C$7$^$9!#\e(B
 
-
 @node Superseding
 @section \e$BBeBX\e(B
 
@@ -270,11 +262,10 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 
 @vindex message-ignored-supersede-headers
 @code{message-ignored-supersedes-headers} \e$B$K9gCW$9$k%X%C%@!<$O?7$7$$%a%C\e(B
-\e$B%;!<%8%P%C%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B 
-@*@samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
+\e$B%;!<%8%P%C%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM\e(B
+\e$B$O\e(B @*@samp{^Path:\\|^Date\\|^NNTP-Posting-Host:\\|^Xref:\\|^Lines:\\|@*
 ^Received:\\|^X-From-Line:\\|Return-Path:\\|^Supersedes:} \e$B$G$9!#\e(B
 
-
 @node Forwarding
 @section \e$BE>Aw\e(B
 
@@ -291,7 +282,6 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 
 @end table
 
-
 @node Resending
 @section \e$B:FAw\e(B
 
@@ -303,7 +293,6 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 \e$B@55,I=8=\e(B @code{message-ignored-resent-headers} \e$B$K9gCW$9$k%X%C%@!<$O%a%C\e(B
 \e$B%;!<%8$rAw$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B @code{^Return-receipt} \e$B$G$9!#\e(B
 
-
 @node Bouncing
 @section \e$B<:GT\e(B
 
@@ -315,24 +304,37 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 
 @vindex message-ignored-bounced-headers
 \e$B@55,I=8=\e(B @code{message-ignored-bounced-headers} \e$B$K9gCW$9$k%X%C%@!<$O%P%C\e(B
-\e$B%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM$O\e(B 
-@samp{^\\(Received\\|Return-Path\\):} \e$B$G$9!#\e(B
-
+\e$B%U%!$r:n$j>e$2$kA0$K<h$j=|$+$l$^$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{^\\(Received\\|Return-Path\\):} \e$B$G$9!#\e(B
 
 @node Commands
 @chapter \e$BL?Na\e(B
 
 @menu
-* Header Commands::     \e$B%X%C%@!<$K0\F0$9$k$?$a$NL?Na!#\e(B
-* Movement::            \e$B%a%C%;!<%8%P%C%U%!$rF0$-2s$k!#\e(B
-* Insertion::           \e$B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k!#\e(B
+* Buffer Entry::        \e$B%a%C%;!<%8%P%C%U%!$KF~$C$?8e$NL?Na\e(B
+* Header Commands::     \e$B%X%C%@!<$K0\F0$9$k$?$a$NL?Na\e(B
+* Movement::            \e$B%a%C%;!<%8%P%C%U%!$rF0$-2s$k\e(B
+* Insertion::           \e$B%a%C%;!<%8%P%C%U%!$KJ*;v$rA^F~$9$k\e(B
 @c * MIME::                @sc{mime} considerations.
 @c * Security::            Signing and encrypting messages.
-* Various Commands::    \e$B$$$m$$$m$J;v!#\e(B
-* Sending::             \e$B<B:]$K%a%C%;!<%8$rAw$k!#\e(B
-* Mail Aliases::        \e$B$I$N$h$&$K$7$F%a!<%k$NJLL>$r;H$&$+!#\e(B
+* Various Commands::    \e$B$$$m$$$m$J;v\e(B
+* Sending::             \e$B<B:]$K%a%C%;!<%8$rAw$k\e(B
+* Mail Aliases::        \e$B$I$N$h$&$K$7$F%a!<%k$NJLL>$r;H$&$+\e(B
+* Spelling::            Emacs \e$B$K%9%Z%k%A%'%C%/$5$;$k\e(B
 @end menu
 
+@node Buffer Entry
+@section \e$B%P%C%U%!$KF~$k\e(B
+@cindex undo
+@kindex C-_
+
+\e$B2?$+B>$N%a%C%;!<%8$KJVEz$9$k$H$-!"$"$J$?$O$?$$$F$$%a%C%;!<%8%P%C%U%!$G=q\e(B
+\e$B$->e$2$^$9$h$M!#\e(BMessage \e$B$OB?$/$N0zMQJ8$r07$$!"=pL>$N:o=|$dJ8>O$N@07A$r$7\e(B
+\e$B$?$j!"$"$k$$$O$"$?$J$,;H$C$F$$$k@_Dj$K0MB8$7$F$$$^$9!#\e(BMessage \e$B$OIaDL$O$&\e(B
+\e$B$^$/F0:n$7$^$9$,!"$H$-$I$-4V0c$($b$7$^$9!#$=$l$i$N4V0c$$$r%f!<%6$,@5$9$3\e(B
+\e$B$H$,$G$-$k$h$&$K!"\e(BMessage \e$B$O$=$l$>$l<gMW$JF0:n$r9T$J$&A0$K%"%s%I%%$N6-3&\e(B
+\e$B$r@_Dj$7$^$9!#$"$J$?$O2?2s$+%"%s%I%%$N%-!<\e(B (\e$BDL>o\e(B @kbd{C-_}) \e$B$r2!$;$P!"L$\e(B
+\e$BJT=8$N%a%C%;!<%8$KLa$9$3$H$,$G$-$^$9!#\e(B
 
 @node Header Commands
 @section \e$B%X%C%@!<L?Na\e(B
@@ -384,8 +386,8 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 @item C-c C-f C-d
 @kindex C-c C-f C-d
 @findex message-goto-distribution
-@code{Distribution} \e$B%X%C%@!<$K9T$-$^$9\e(B 
-(@code{message-goto-distribution})\e$B!#\e(B
+@code{Distribution} \e$B%X%C%@!<$K9T$-$^\e(B
+\e$B$9\e(B (@code{message-goto-distribution})\e$B!#\e(B
 
 @item C-c C-f C-o
 @kindex C-c C-f C-o
@@ -404,7 +406,6 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 
 @end table
 
-
 @node Movement
 @section \e$B0\F0\e(B
 
@@ -421,7 +422,6 @@ Message \e$B$O%U%)%m!<%"%C%W$,$I$3$K9T$/$+$rIaDL$NJ}K!$r;H$C$F7hDj$7$^$9$,!"\e(B
 
 @end table
 
-
 @node Insertion
 @section \e$BA^F~\e(B
 
@@ -443,12 +443,12 @@ message buffer (@code{message-yank-buffer}).
 @item C-c C-q
 @kindex C-c C-q
 @findex message-fill-yanked-message
-\e$BE=$jIU$1$i$l$?%a%C%;!<%8$r@^$jJV$7$^$9\e(B 
-(@code{message-fill-yanked-message})\e$B!#7Y9p\e(B: \e$B$b$7!"0zMQ$N=,47$,JQ$G$"$k$J\e(B
-\e$B$i!"E=$jIU$1$i$l$?J8>O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#$=\e(B
-\e$B$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"\e(B@kbd{C-x
-u} (@code{undo}) \e$B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#\e(B
-
+\e$BE=$jIU$1$i$l$?%a%C%;!<%8$r@^$jJV$7$^\e(B
+\e$B$9\e(B (@code{message-fill-yanked-message})\e$B!#7Y9p\e(B: \e$B$b$7!"0zMQ$N=,47$,JQ$G$"\e(B
+\e$B$k$J$i!"E=$jIU$1$i$l$?J8>O$r$R$I$/$0$A$c$0$A$c$K$7$F$7$^$&$+$b$7$l$^$;$s!#\e(B
+\e$B$=$l$,0BA4$G$"$k$HCN$k$H!"$9$0$K?M?4CO$D$/$G$7$g$&$,!#$H$K$+$/!"\e(B
+@kbd{C-x u} (@code{undo}) \e$B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$\e(B
+\e$B$F2<$5$$!#\e(B
 
 @item C-c C-w
 @kindex C-c C-w
@@ -474,8 +474,9 @@ u} (@code{undo}) \e$B$,;HMQ2DG=$G!"Bg>fIW$G$"$k$H8@$&;v$r3P$($F$*$$$F2<$5$$!#\e(B
 
 @item message-citation-line-function
 @vindex message-citation-line-function
-\e$B0zMQ9T$rA^F~$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM$O\e(B 
-@code{message-insert-citation-line} \e$B$G!"$3$l$O0zMQ9T$r<!$N$h$&$K$7$^$9\e(B:
+\e$B0zMQ9T$rA^F~$9$k$?$a$K8F$P$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{message-insert-citation-line} \e$B$G!"$3$l$O0zMQ9T$r<!$N$h$&$K$7$^\e(B
+\e$B$9\e(B:
 
 @example
 Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
@@ -488,26 +489,26 @@ Hallvard B Furuseth <h.b.furuseth@@usit.uio.no> writes:
 @cindex yanking
 @cindex quoting
 \e$B$"$J$?$,5-;v$KJVEz$+%U%)%m!<%"%C%W$r$7$F$$$k$H$-$O!"IaDL$O$"$J$?$,1~Ez$7\e(B
-\e$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O\e(B @dfn{\e$BE=$jIU$1\e(B} 
-\e$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0$K\e(B 
-@code{message-yank-prefix} \e$B$rIU$1$i$l$^$9!#=i4|CM$O\e(B @samp{> } \e$B$G$9!#\e(B
+\e$B$F$$$k?M$N$b$N$K0zMQId$rIU$1$?$$$G$7$g$&!#0zMQJ8$NA^F~$O\e(B @dfn{\e$BE=$jIU$1\e(B}
+\e$B$K$h$C$F$J$5$l!"$=$l$>$l$NE=$jIU$1$i$l$?0zMQ9T$O$=$NA0\e(B
+\e$B$K\e(B @code{message-yank-prefix} \e$B$rIU$1$i$l$^$9!#=i4|CM$O\e(B @samp{> } \e$B$G$9!#\e(B
 
 @item message-yank-add-new-references
 @vindex message-yank-add-new-references
 @cindex yanking
-\e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,\e(B
-@code{nil} \e$B$G$J$+$C$?$i!"\e(BReferences \e$B%U%#!<%k%I$K\e(B ID \e$B$,DI2C$5$l$^$9!#$b\e(B
-\e$B$7CM$,%7%s%\%k\e(B @code{message-id-only} \e$B$@$C$?$i\e(B Message-ID \e$B%U%#!<%k%I$N\e(B
-ID \e$B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P\e(B References\e$B!"\e(BIn-Reply-To \e$B$*$h$S\e(B
-Message-ID \e$B%U%#!<%k%I$+$iCj=P$5$l$?\e(B ID \e$B$,;H$o$l$^$9!#\e(B
+\e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM\e(B
+\e$B$,\e(B @code{nil} \e$B$G$J$+$C$?$i!"\e(BReferences \e$B%U%#!<%k%I$K\e(B ID \e$B$,DI2C$5$l$^$9!#\e(B
+\e$B$b$7CM$,%7%s%\%k\e(B @code{message-id-only} \e$B$@$C$?$i\e(B Message-ID \e$B%U%#!<%k%I\e(B
+\e$B$N\e(B ID \e$B$@$1$,;H$o$l$^$9$,!"$=$&$G$J$1$l$P\e(B References\e$B!"\e(BIn-Reply-To \e$B$*$h\e(B
+\e$B$S\e(B Message-ID \e$B%U%#!<%k%I$+$iCj=P$5$l$?\e(B ID \e$B$,;H$o$l$^$9!#\e(B
 
 @item message-list-references-add-position
 @vindex message-list-references-add-position
 @cindex yanking
 \e$B%3%^%s%I\e(B @code{message-yank-original} \e$B$rBPOCE*$K;H$C$?$H$-$K!"$3$NCM$,\e(B
-\e$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k\e(B References \e$B%U%#!<%k%I$N:G8e$+$i$=$N8D?t$N\e(B
-ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~\e(B
-\e$B$5$l$^$9!#\e(B
+\e$B@5$N@0?t$@$C$?$i!"$9$G$K$"$k\e(B References \e$B%U%#!<%k%I$N:G8e$+$i$=$N8D?t\e(B
+\e$B$N\e(B ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^\e(B
+\e$BF~$5$l$^$9!#\e(B
 
 @item message-indentation-spaces
 @vindex message-indentation-spaces
@@ -522,16 +523,16 @@ ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~
 \e$BK\5-;v$r0zMQ$9$k$?$a$N4X?t$G$9!#=i4|CM$O\e(B @code{message-cite-original} \e$B$G!"\e(B
 \e$B$3$l$OC1=c$K$b$H$N%a%C%;!<%8$rA^F~$7!"$=$l$>$l$N9T$NF,$K\e(B @samp{> } \e$B$r$/$C\e(B
 \e$B$D$1$^$9!#\e(B@code{message-cite-original-without-signature} \e$B$OF1MM$N;v$r$7\e(B
-\e$B$^$9$,!"=pL>$O>J$-$^$9!#\e(BSupercite \e$B$r;H$&$?$a$K!"$=$l$r\e(B 
-@code{sc-cite-original} \e$B$K@_Dj$9$k;v$b$G$-$^$9!#\e(B
+\e$B$^$9$,!"=pL>$O>J$-$^$9!#\e(BSupercite \e$B$r;H$&$?$a$K!"$=$l\e(B
+\e$B$r\e(B @code{sc-cite-original} \e$B$K@_Dj$9$k;v$b$G$-$^$9!#\e(B
 
 @item message-indent-citation-function
 @vindex message-indent-citation-function
 \e$B$A$g$&$I%a!<%k%P%C%U%!$KA^F~$5$l$?0zMQJ8$r=$@5$9$k$?$a$N4X?t$G$9!#$3$l$O\e(B
-\e$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t$O\e(B @code{(point)} \e$B$H\e(B 
-@code{(mark t)} \e$B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#$=$7$F!"$=$l$>$l$N4X?t\e(B
-\e$B$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/$r;D$5$J$1$l$P$J$j$^$;\e(B
-\e$B$s!#\e(B
+\e$B4X?t$N%j%9%H$G$"$k;v$b$G$-$^$9!#$=$l$>$l$N4X?t\e(B
+\e$B$O\e(B @code{(point)} \e$B$H\e(B @code{(mark t)} \e$B$N4V$G0zMQ$rH/8+$9$k;v$,$G$-$^$9!#\e(B
+\e$B$=$7$F!"$=$l$>$l$N4X?t$O0zMQJ8$,=$@5$5$l$k$H!"$=$N<~$j$K%]%$%s%H$H%^!<%/\e(B
+\e$B$r;D$5$J$1$l$P$J$j$^$;$s!#\e(B
 
 @item message-signature
 @vindex message-signature
@@ -543,8 +544,8 @@ ID \e$B$@$1N%$l$?>l=j$K?7$7$$\e(B ID \e$B$,A^F~$5$l$^$9!#$=$l0J30$N>l9g$O:G8e$KA^F~
 
 @item messsage-signature-file
 @vindex message-signature-file
-\e$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM$O\e(B 
-@samp{~/.signature} \e$B$G$9!#\e(B
+\e$B%P%C%U%!$N:G8e$KA^F~$5$l$k=pL>$NF~$C$F$$$k%U%!%$%k$G$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{~/.signature} \e$B$G$9!#\e(B
 
 @end table
 
@@ -717,10 +718,10 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 @item C-c C-r
 @kindex C-c C-r
 @findex message-caesar-buffer-body
-\e$B8=:_$N%a%C%;!<%8$r%7!<%6!<JQ49\e(B (\e$BJLL>\e(B rot13) \e$B$7$^$9\e(B 
-(@code{message-caesar-buffer-body})\e$B!#$b$7HO0O8BDj$,<B9T$5$l$F$$$?$i!"%P%C\e(B
-\e$B%U%!$N8+$($kItJ,$@$1$rJQ49$7$^$9!#?tCM@\F,0z?t$OJ8$r$I$N$/$i$$2sE>$5$;$k\e(B
-\e$B$+$r;XDj$7$^$9!#=i4|CM$O\e(B 13 \e$B$G$9!#\e(B
+\e$B8=:_$N%a%C%;!<%8$r%7!<%6!<JQ49\e(B (\e$BJLL>\e(B rot13) \e$B$7$^\e(B
+\e$B$9\e(B (@code{message-caesar-buffer-body})\e$B!#$b$7HO0O8BDj$,<B9T$5$l$F$$$?$i!"\e(B
+\e$B%P%C%U%!$N8+$($kItJ,$@$1$rJQ49$7$^$9!#?tCM@\F,0z?t$OJ8$r$I$N$/$i$$2sE>$5\e(B
+\e$B$;$k$+$r;XDj$7$^$9!#=i4|CM$O\e(B 13 \e$B$G$9!#\e(B
 
 @item C-c C-e
 @kindex C-c C-e
@@ -732,14 +733,14 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 @item C-c C-z
 @kindex C-c C-x
 @findex message-kill-to-signature
-\e$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^$9\e(B 
-(@code{message-kill-to-signature})\e$B!#\e(B
+\e$B=pL>$^$G$+!"$=$l$,L5$1$l$P5-;v$N:G8e$^$G$NA4$F$NJ8$r@Z$j$^\e(B
+\e$B$9\e(B (@code{message-kill-to-signature})\e$B!#\e(B
 
 @item C-c C-v
 @kindex C-c C-v
 @findex message-delete-not-region
-\e$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^$9\e(B 
-(@code{message-delete-not-region})\e$B!#\e(B
+\e$B%a%C%;!<%8$NK\BN$N%j!<%8%g%s$N30$NA4$F$NJ8$r>C5n$7$^\e(B
+\e$B$9\e(B (@code{message-delete-not-region})\e$B!#\e(B
 
 @item M-RET
 @kindex M-RET
@@ -769,16 +770,16 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 @item C-c C-t
 @kindex C-c C-t
 @findex message-insert-to
-\e$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N\e(B @code{Reply-To} \e$B$b$7$/$O\e(B 
-@code{From} \e$B%X%C%@!<$r4^$`\e(B @code{To} \e$B%X%C%@!<$rA^F~$7$^$9\e(B 
-(@code{message-insert-to})\e$B!#\e(B
+\e$B%U%)%m!<%"%C%W$7$h$&$H$9$k%a%C%;!<%8$N\e(B @code{Reply-To} \e$B$b$7$/\e(B
+\e$B$O\e(B @code{From} \e$B%X%C%@!<$r4^$`\e(B @code{To} \e$B%X%C%@!<$rA^F~$7$^\e(B
+\e$B$9\e(B (@code{message-insert-to})\e$B!#\e(B
 
 @item C-c C-n
 @kindex C-c C-n
 @findex message-insert-newsgroups
 \e$BJVEz$7$F$$$k5-;v$N\e(B @code{Followup-To} \e$B$b$7$/$O!"\e(B@code{Nesgroups} \e$B%X%C%@!<\e(B
-\e$B$rH?1G$7$?\e(B @code{Newsgroups} \e$B%X%C%@!<$rA^F~$7$^$9\e(B 
-(@code{message-insert-newsgroups})\e$B!#\e(B
+\e$B$rH?1G$7$?\e(B @code{Newsgroups} \e$B%X%C%@!<$rA^F~$7$^\e(B
+\e$B$9\e(B (@code{message-insert-newsgroups})\e$B!#\e(B
 
 @item C-c M-r
 @kindex C-c M-r
@@ -788,7 +789,6 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 
 @end table
 
-
 @node Sending
 @section \e$BAw?.\e(B
 
@@ -796,8 +796,8 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 @item C-c C-c
 @kindex C-c C-c
 @findex message-send-and-exit
-\e$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^$9\e(B 
-(@code{message-send-and-exit})\e$B!#\e(B
+\e$B%a%C%;!<%8$rAw?.$7!"8=:_$N%P%C%U%!$rKd$a$^\e(B
+\e$B$9\e(B (@code{message-send-and-exit})\e$B!#\e(B
 
 @item C-c C-s
 @kindex C-c C-s
@@ -816,8 +816,6 @@ RFC1036bis \e$B$O!"=pL>$O$=$NA0$K\e(B @samp{-- } \e$B$N\e(B3\e$BJ8;z$@$1$N9T$,$"$k$Y$
 
 @end table
 
-
-
 @node Mail Aliases
 @section \e$B%a!<%kJLL>\e(B
 @cindex mail aliases
@@ -844,24 +842,66 @@ alias ding "ding@@ifi.uio.no (ding mailing list)"
 \e$B%a%C%;!<%8$rAw$k$H$-$K$O?-D%$O9T$o$l$^$;$s\e(B---\e$BA4$F$N?-D%$OL@<(E*$K9T$o$l\e(B
 \e$B$J$/$F$O$J$j$^$;$s!#\e(B
 
+@node Spelling
+@section Emacs \e$B$K%9%Z%k%A%'%C%/$5$;$k\e(B
+@cindex spelling
+@findex ispell-message
 
+Emacs \e$B$G%9%Z%k%A%'%C%/$9$k$?$a$KIa5Z$7$F$$$kFs$D$NJ}K!!"\e(B
+@code{ispell} \e$B$H\e(B @code{flyspell} \e$B$,$"$j$^$9!#\e(B@code{ispell} \e$B$NJ}$O@N$+$i\e(B
+\e$B$"$C$F!"$?$V$s$h$j0lHLE*$J%Q%C%1!<%8$G$9!#$"$J$?$ONc$K$h$C$F:G=i$K%a%C%;!<\e(B
+\e$B%8$r=q$$$F$+$iA4BN$r\e(B @code{ispell} \e$B$KDL$7!"$9$Y$F$N=q$-B;$8$r=$@5$7$^$9!#\e(B
+\e$B%a%C%;!<%8$rAw?.$9$k$H$-$K$=$l$r<+F0E*$K9T$J$&$?$a$K$O!"\e(B.emacs \e$B%U%!%$%k\e(B
+\e$B$K0J2<$N$h$&$J$b$N$rF~$l$F2<$5$$!#\e(B
+
+@lisp
+(add-hook 'message-send-hook 'ispell-message)
+@end lisp
+
+@vindex ispell-message-dictionary-alist
+\e$B$b$7$"$J$?$,0c$&8@8l$G=q$/=,47$J$i$P!"$=$l$OJQ\e(B
+\e$B?t\e(B @code{ispell-message-dictionary-alist} \e$B$G@)8f$G$-$^$9!#\e(B
+
+@lisp
+(setq ispell-message-dictionary-alist
+      '(("^Newsgroups:.*\\bde\\." . "deutsch8")
+       (".*" . "default")))
+@end lisp
+
+@code{ispell} \e$B$O%$%s%9%H!<%k$5$l$?\e(B @samp{ispell} \e$B%3%^%s%I$K0MB8$7$F$$$^\e(B
+\e$B$9!#\e(B
+
+\e$B$b$&0lJ}$NIa5Z$7$F$$$kJ}K!$O\e(B @code{flyspell} \e$B$r;H$&$3$H$G$9!#$3$N%Q%C%1!<\e(B
+\e$B%8$O$"$J$?$,=q$$$F$$$k:GCf$K%9%Z%k%A%'%C%/$r9T$J$$!"$$$m$s$JJ}K!$G4V0c$C\e(B
+\e$B$?%9%Z%k$N8l$r;XE&$7$F$/$l$^$9!#\e(B
+
+@code{flyspell} \e$B$r;H$&$K$O!"0J2<$N$h$&$J$b$N$r\e(B .emacs \e$B%U%!%$%k$KF~$l$F2<\e(B
+\e$B$5$$!#\e(B
+
+@lisp
+(defun my-message-setup-routine ()
+  (flyspell-mode 1))
+(add-hook 'message-setup-hook 'my-message-setup-routine)
+@end lisp
+
+@code{flyspell} \e$B$O%$%s%9%H!<%k$5$l$?\e(B @samp{ispell} \e$B%3%^%s%I$K0MB8$7$F$$$^\e(B
+\e$B$9!#\e(B
 
 @node Variables
 @chapter \e$BJQ?t\e(B
 
 @menu
-* Message Headers::             \e$B0lHLE*$J%a%C%;!<%8%X%C%@!<$N$h$&$J$b$N!#\e(B
-* Mail Headers::                \e$B%a!<%k%X%C%@!<$r%+%9%?%^%$%:$9$k!#\e(B
-* Mail Variables::              \e$BB>$N%a!<%kJQ?t!#\e(B
-* News Headers::                \e$B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k!#\e(B
-* News Variables::              \e$BB>$N%K%e!<%9JQ?t!#\e(B
-* Various Message Variables::   \e$BB>$N%a%C%;!<%8JQ?t!#\e(B
-* Sending Variables::           \e$BAw?.$9$k$?$a$NJQ?t!#\e(B
-* Message Buffers::             Message \e$B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!!#\e(B
-* Message Actions::             \e$B=*N;$9$k$H$-$K<B9T$5$l$kF0:n!#\e(B
+* Message Headers::             \e$B0lHLE*$J%a%C%;!<%8%X%C%@!<$N$h$&$J$b$N\e(B
+* Mail Headers::                \e$B%a!<%k%X%C%@!<$r%+%9%?%^%$%:$9$k\e(B
+* Mail Variables::              \e$BB>$N%a!<%kJQ?t\e(B
+* News Headers::                \e$B%K%e!<%9%X%C%@!<$r%+%9%?%^%$%:$9$k\e(B
+* News Variables::              \e$BB>$N%K%e!<%9JQ?t\e(B
+* Various Message Variables::   \e$BB>$N%a%C%;!<%8JQ?t\e(B
+* Sending Variables::           \e$BAw?.$9$k$?$a$NJQ?t\e(B
+* Message Buffers::             Message \e$B$,$=$N%P%C%U%!$NL>A0$rIU$1$kJ}K!\e(B
+* Message Actions::             \e$B=*N;$9$k$H$-$K<B9T$5$l$kF0:n\e(B
 @end menu
 
-
 @node Message Headers
 @section \e$B%a%C%;!<%8%X%C%@!<\e(B
 
@@ -905,10 +945,10 @@ Message \e$B$O%a%C%;!<%8:n@.ItJ,$K4X$7$F$OHs>o$K@Q6KE*$G$9!#$=$l$O<!$N$h$&$G\e(B
 \e$B:o=|$5$l$^$9!#5-;v$rEj9F$9$k$H$7$^$7$g$&!#$=$l$+$i!"$o$s$Q$/K7<g$J$"$J$?\e(B
 \e$B$O$=$l$r2?$+B>$N%0%k!<%W$K:F$SEj9F$9$k;v$K7hDj$7$?$N$G!"\e(B
 @code{*post-buf*} \e$B%P%C%U%!$KLa$j!"\e(B@code{Newsgroups} \e$B9T$rJT=8$7!":F$SAw$j\e(B
-\e$B=P$7$?$H$7$^$9!#=i4|@_Dj$G$O!"$3$NJQ?t$OA0$K:n@.$5$l$?8E$$\e(B 
-@code{Message-ID} \e$B$,<h$j=|$+$l!"?7$7$$$b$N$,:n@.$5$l$k;v$r3N<B$K$7$F$$$^\e(B
-\e$B$9!#$b$7$3$l$,$J$5$l$J$$$H!"Dk9qA4BN$O$*$=$i$/Jx2u$7!"L5@/I\<g5A$,?;F)$7!"\e(B
-\e$BG-$,\e(B2\e$BK\$NB-$GJb$-;O$a!"@$3&$r;YG[$9$k$G$7$g$&!#J9$/$H$3$m$K0M$l$P!#\e(B
+\e$B=P$7$?$H$7$^$9!#=i4|@_Dj$G$O!"$3$NJQ?t$OA0$K:n@.$5$l$?8E\e(B
+\e$B$$\e(B @code{Message-ID} \e$B$,<h$j=|$+$l!"?7$7$$$b$N$,:n@.$5$l$k;v$r3N<B$K$7$F\e(B
+\e$B$$$^$9!#$b$7$3$l$,$J$5$l$J$$$H!"Dk9qA4BN$O$*$=$i$/Jx2u$7!"L5@/I\<g5A$,?;\e(B
+\e$BF)$7!"G-$,\e(B2\e$BK\$NB-$GJb$-;O$a!"@$3&$r;YG[$9$k$G$7$g$&!#J9$/$H$3$m$K0M$l$P!#\e(B
 
 @item message-default-headers
 @vindex message-default-headers
@@ -916,20 +956,18 @@ Message \e$B$O%a%C%;!<%8:n@.ItJ,$K4X$7$F$OHs>o$K@Q6KE*$G$9!#$=$l$O<!$N$h$&$G\e(B
 
 @item message-subject-re-regexp
 @vindex message-subject-re-regexp
-\e$B%a%C%;!<%8$X$N1~Ez$O\e(B @samp{Re: } \e$B$G;O$^$j$^$9!#$3$l$O1Q8l$N\e(B ``response'' 
-\e$B$NN,$G$O\e(B @emph{\e$B$"$j$^$;$s\e(B} \e$B$,!"%i%F%s8l$G!"\e(B``\e$B$=$l$K1~Ez$7$F\e(B'' (in
-response to) \e$B$H8@$&0UL#$G$9!#$$$/$D$+$NL53X$NGO</$O$3$N;v<B$rF@$k;v$K<:\e(B
-\e$BGT$7!"H`$i$N%=%U%H%&%'%"$r4w$^$o$7$$\e(B @samp{Aw: } (``antwort'') \e$B$d\e(B 
-@samp{Sv: } (``svar'') \e$B$rBe$o$j$K;H$&$h$&$K\e(B ``\e$B9q:]2=\e(B'' \e$B$7$^$7$?!#$=$l$O\e(B
-\e$B0UL#$,L5$/!"<Y0-$G$9!#$7$+$7!"$3$l$i$N<Y0-$JF;6q$r;H$C$?MxMQ<T$r07$o$J$1\e(B
-\e$B$l$P$J$i$J$$$+$b$7$l$^$;$s$N$G!"$=$N$h$&$J>l9g$O$3$NJQ?t$r$3$l$i$N@\F,8l\e(B
-\e$B$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J\e(B
-\e$B$$%a!<%k$O$?$@<N$F5n$C$F$$$k$@$1$G$9!#\e(B
+\e$B%a%C%;!<%8$X$N1~Ez$O\e(B @samp{Re: } \e$B$G;O$^$j$^$9!#$3$l$O1Q8l\e(B
+\e$B$N\e(B ``response'' \e$B$NN,$G$O\e(B @emph{\e$B$"$j$^$;$s\e(B} \e$B$,!"%i%F%s8l$G!"\e(B``\e$B$=$l$K1~Ez\e(B
+\e$B$7$F\e(B'' (in response to) \e$B$H8@$&0UL#$G$9!#$$$/$D$+$NL53X$NGO</$O$3$N;v<B$r\e(B
+\e$BF@$k;v$K<:GT$7!"H`$i$N%=%U%H%&%'%"$r4w$^$o$7\e(B
+\e$B$$\e(B @samp{Aw: } (``antwort'') \e$B$d\e(B @samp{Sv: } (``svar'') \e$B$rBe$o$j$K;H$&$h\e(B
+\e$B$&$K\e(B ``\e$B9q:]2=\e(B'' \e$B$7$^$7$?!#$=$l$O0UL#$,L5$/!"<Y0-$G$9!#$7$+$7!"$3$l$i$N<Y\e(B
+\e$B0-$JF;6q$r;H$C$?MxMQ<T$r07$o$J$1$l$P$J$i$J$$$+$b$7$l$^$;$s$N$G!"$=$N$h$&\e(B
+\e$B$J>l9g$O$3$NJQ?t$r$3$l$i$N@\F,8l$K9g$&$h$&$J@55,I=8=$K@_Dj$9$k$G$7$g$&!#\e(B
+\e$B;d<+?H$O!"$=$N$h$&$J5,3J$K=>$o$J$$%a!<%k$O$?$@<N$F5n$C$F$$$k$@$1$G$9!#\e(B
 
 @item message-alternative-emails
 @vindex message-alternative-emails
-A regexp to match the alternative email addresses.  The first matched
-address (not primary one) is used in the @code{From} field.
 \e$BBe$o$j$N%a!<%k%"%I%l%9$K9gCW$9$k@55,I=8=$G$9!#:G=i$K%^%C%A$7$?\e(B (\e$BBh0l5A$G\e(B
 \e$B$O$J$$\e(B) \e$B%"%I%l%9$,\e(B @code{From} \e$B%U%#!<%k%I$G;H$o$l$^$9!#\e(B
 (\e$BLuCm\e(B: To \e$B$+\e(B Cc \e$B$K$"$k%"%I%l%9$G!":G=i$K$3$N@55,I=8=$K9gCW$7!"\e(B
@@ -938,7 +976,6 @@ address (not primary one) is used in the @code{From} field.
 
 @end table
 
-
 @node Mail Headers
 @section \e$B%a!<%k%X%C%@!<\e(B
 
@@ -951,8 +988,8 @@ Lines (optional . X-Mailer))} \e$B$G$9!#\e(B
 
 @item message-ignored-mail-headers
 @vindex message-ignored-mail-headers
-\e$B%a!<%k$r=P$9A0$K<h$j=|$+$l$k%X%C%@!<$N@55,I=8=$G$9!#=i4|CM$O\e(B 
-@samp{^[GF]cc:\\|^Resent-Fcc:} \e$B$G$9!#\e(B
+\e$B%a!<%k$r=P$9A0$K<h$j=|$+$l$k%X%C%@!<$N@55,I=8=$G$9!#=i4|CM\e(B
+\e$B$O\e(B @samp{^[GF]cc:\\|^Resent-Fcc:} \e$B$G$9!#\e(B
 
 @item message-default-mail-headers
 @vindex message-default-mail-headers
@@ -961,17 +998,16 @@ Lines (optional . X-Mailer))} \e$B$G$9!#\e(B
 
 @end table
 
-
 @node Mail Variables
 @section \e$B%a!<%kJQ?t\e(B
 
 @table @code
 @item message-send-mail-function
 @vindex message-send-mail-function
-\e$B8=:_$N%P%C%U%!$r%a!<%k$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM$O\e(B 
-@code{message-send-mail-with-sendmail} \e$B$G$9!#$b$7Be$o$j$K\e(B MH \e$B$GAw$k$N$r\e(B
-\e$B9%$`$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{message-send-mail-with-mh} \e$B$K@_Dj$7$F2<\e(B
-\e$B$5$$!#\e(B
+\e$B8=:_$N%P%C%U%!$r%a!<%k$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{message-send-mail-with-sendmail} \e$B$G$9!#$b$7Be$o$j$K\e(B MH \e$B$GAw$k$N\e(B
+\e$B$r9%$`$N$G$"$l$P!"$3$NJQ?t$r\e(B @code{message-send-mail-with-mh} \e$B$K@_Dj$7$F\e(B
+\e$B2<$5$$!#\e(B
 
 @item message-mh-deletable-headers
 @vindex message-mh-deletable-headers
@@ -983,7 +1019,6 @@ Lines (optional . X-Mailer))} \e$B$G$9!#\e(B
 
 @end table
 
-
 @node News Headers
 @section \e$B%K%e!<%9%X%C%@!<\e(B
 
@@ -1016,8 +1051,8 @@ Lines (optional . X-Mailer))} \e$B$G$9!#\e(B
 \e$B$3$NA*BrG$0U$J%X%C%@!<$OJQ?t\e(B @code{message-user-organization} \e$B$K0MB8$7$F\e(B
 \e$B:n@.$5$l$^$9!#$b$7$3$NJQ?t$,\e(B @code{t} \e$B$G$"$l$P!"\e(B
 @code{message-user-organization-file} \e$B$,;H$o$l$^$9!#$3$NJQ?t$OJ8;zNs$G$"\e(B
-\e$B$k;v$b$G$-\e(B (\e$B$=$N>l9g$O$=$NJ8;zNs$,;H$o$l$^$9\e(B)\e$B!"4X?t$G$"$k;v$b$G$-$^$9\e(B 
-(\e$B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9\e(B)\e$B!#\e(B
+\e$B$k;v$b$G$-\e(B (\e$B$=$N>l9g$O$=$NJ8;zNs$,;H$o$l$^$9\e(B)\e$B!"4X?t$G$"$k;v$b$G$-$^\e(B
+\e$B$9\e(B (\e$B$=$N4X?t$O0z?tL5$7$G8F$P$l!";H$o$l$kJ8;zNs$rJV$9I,MW$,$"$j$^$9\e(B)\e$B!#\e(B
 
 @item Lines
 @cindex Lines
@@ -1029,10 +1064,11 @@ Lines (optional . X-Mailer))} \e$B$G$9!#\e(B
 @findex system-name
 @cindex Sun
 \e$B$3$NI,MW$J%X%C%@!<$O\e(B Message \e$B$K$h$j:n@.$5$l$^$9!#F|IU!";~4V!"MxMQ<TL>!"\e(B
-\e$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$\e(B ID \e$B$,:n@.$5$l$^$9!#\e(BMessage \e$B$O\e(B 
-@code{system-name} \e$B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3$l$,\e(B fully
-qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>\e(B) \e$B$G$J$$$J$i\e(B
-\e$B$P!"\e(BMessage \e$B$O\e(B @code{mail-host-address} \e$B$r\e(B FQDN \e$B$H$7$F;H$$$^$9!#\e(B
+\e$B%7%9%F%`L>$K4p$E$$$?B>$KL5$$\e(B ID \e$B$,:n@.$5$l$^$9!#\e(B
+Message \e$B$O\e(B @code{system-name} \e$B$r%7%9%F%`L>$r7h$a$k$?$a$K;H$$$^$9!#$b$7$3\e(B
+\e$B$l$,\e(B fully qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%s\e(B
+\e$BL>\e(B) \e$B$G$J$$$J$i\e(B \e$B$P!"\e(BMessage \e$B$O\e(B @code{mail-host-address} \e$B$r\e(B FQDN \e$B$H$7$F;H\e(B
+\e$B$$$^$9!#\e(B
 
 @item X-Newsreader
 @cindex X-Nesreader
@@ -1157,15 +1193,14 @@ qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>\e(B) \e$B$G$J$$$J$
 
 @end table
 
-
 @node News Variables
 @section \e$B?7$7$$JQ?t\e(B
 
 @table @code
 @item message-send-news-function
 @vindex message-send-news-function
-\e$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM$O\e(B 
-@code{mesage-send-news} \e$B$G$9!#\e(B
+\e$B8=:_$N%P%C%U%!$r%K%e!<%9$H$7$FAw$k$?$a$K;H$o$l$k4X?t$G$9!#=i4|CM\e(B
+\e$B$O\e(B @code{mesage-send-news} \e$B$G$9!#\e(B
 
 @item message-post-method
 @vindex message-post-method
@@ -1174,7 +1209,6 @@ qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>\e(B) \e$B$G$J$$$J$
 
 @end table
 
-
 @node Various Message Variables
 @section \e$B$$$m$$$m$J%a%C%;!<%8JQ?t\e(B
 
@@ -1185,8 +1219,8 @@ qualified domain name (FQDN) (\e$B40A4$K>r7o$rK~$?$7$?%I%a%$%sL>\e(B) \e$B$G$J$$$J$
 @c Symbol naming a @sc{mime} charset.  Non-ASCII characters in messages are
 @c assumed to be encoded using this charset.  The default is @code{nil},
 @c which means ask the user.  (This variable is used only on non-@sc{mule}
-@c Emacsen.  
-@c @xref{Charset Translation, , Charset Translation, emacs-mime, 
+@c Emacsen.
+@c @xref{Charset Translation, , Charset Translation, emacs-mime,
 @c       Emacs MIME Manual}, for details on the @sc{mule}-to-@sc{mime}
 @c translation process.
 @c
@@ -1201,8 +1235,8 @@ follows this line--} \e$B$G$9!#\e(B
 
 @item message-directory
 @vindex message-directory
-\e$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM$O\e(B 
-@file{~/Mail/} \e$B$G$9!#\e(B
+\e$BB?$/$N%a!<%k$N$b$N$+$i;H$o$l$k%G%#%l%/%H%j!<$G$9!#=i4|CM\e(B
+\e$B$O\e(B @file{~/Mail/} \e$B$G$9!#\e(B
 
 @item message-signature-setup-hook
 @vindex message-signature-setup-hook
@@ -1238,8 +1272,8 @@ follows this line--} \e$B$G$9!#\e(B
 @vindex message-send-hook
 \e$B%a%C%;!<%8$rAw$kA0$K<B9T$5$l$k%U%C%/$G$9!#\e(B
 
-\e$B$b$7Aw$kA0$KFCDj$N%X%C%@!<$r2C$($?$$$N$G$"$l$P!"4X?t\e(B 
-@code{message-add-header} \e$B$r$3$N%U%C%/$K;H$&;v$,$G$-$^$9!#Nc$($P\e(B:
+\e$B$b$7Aw$kA0$KFCDj$N%X%C%@!<$r2C$($?$$$N$G$"$l$P!"4X\e(B
+\e$B?t\e(B @code{message-add-header} \e$B$r$3$N%U%C%/$K;H$&;v$,$G$-$^$9!#Nc$($P\e(B:
 @findex message-add-header
 
 @lisp
@@ -1296,12 +1330,8 @@ follows this line--} \e$B$G$9!#\e(B
  (mail message-mail-p message-send-via-mail))
 @end lisp
 
-
-
 @end table
 
-
-
 @node Sending Variables
 @section \e$BAw$k$?$a$NJQ?t\e(B
 
@@ -1310,21 +1340,20 @@ follows this line--} \e$B$G$9!#\e(B
 @item message-fcc-handler-function
 @vindex message-fcc-handler-function
 \e$B=P$F$$$/5-;v$rJ]B8$9$k$?$a$K8F$P$l$k4X?t$G$9!#$3$N4X?t$O5-;v$rC_@Q$9$k$?\e(B
-\e$B$a$N%U%!%$%kL>$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O\e(B @code{message-output} 
+\e$B$a$N%U%!%$%kL>$H6&$K8F$P$l$^$9!#=i4|@_Dj$N4X?t$O\e(B @code{message-output}
 \e$B$G!"$=$l$O\e(B Unix mailbox \e$BMM<0$GJ]B8$7$^$9!#\e(B
 
 @item message-courtesy-message
 @vindex messsage-courtesy-messsage
 \e$BJ#9g%a%C%;!<%8$rAw$k$H$-$O!"$3$NJ8;zNs$O%a!<%k$GAw$i$l$?J#@=$NJ}$N:G=i$K\e(B
 \e$BA^F~$5$l$^$9!#$b$7$=$NJ8;zNs$,=qK!;EMM;XDj\e(B @samp{%s} \e$B$r4^$s$G$$$l$P!"5-\e(B
-\e$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t$,\e(B 
-@code{nil} \e$B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM$O\e(B 
-@samp{"The following message is a courtesy copy of an article\nthat has
+\e$B;v$,Ej9F$5$l$?%K%e!<%9%0%k!<%W$,$=$3$KA^F~$5$l$^$9!#$b$7$3$NJQ?t\e(B
+\e$B$,\e(B @code{nil} \e$B$G$"$l$P!"$=$N$h$&$J?F@Z%a%C%;!<%8$O2C$($i$l$^$;$s!#=i4|CM\e(B
+\e$B$O\e(B @samp{"The following message is a courtesy copy of an article\nthat has
 been posted to %s as well.\n\n"} \e$B$G$9!#\e(B
 
 @end table
 
-
 @node Message Buffers
 @section \e$B%a%C%;!<%8%P%C%U%!\e(B
 
@@ -1343,7 +1372,7 @@ Message \e$B$O$"$J$?$,%a%C%;!<%8%P%C%U%!$rMW5a$7$?$H$-$K!"B>$KL5$$M#0l$N%P%C\e(B
 
 @item message-use-multi-frames
 @vindex message-use-multi-frames
-@code{nil} \e$B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O\e(B @code{nil} 
+@code{nil} \e$B$G$J$1$l$P!"?7$7$$%U%l!<%`$r:n@.$7$^$9!#=i4|CM$O\e(B @code{nil}
 \e$B$G$9!#\e(B
 
 @item message-delete-frame-on-exit
@@ -1355,14 +1384,14 @@ Message \e$B$O$"$J$?$,%a%C%;!<%8%P%C%U%!$rMW5a$7$?$H$-$K!"B>$KL5$$M#0l$N%P%C\e(B
 
 @item message-max-buffers
 @vindex message-max-buffers
-\e$B#k$NJQ?t$O$I$N$/$i$$8E$$%a%C%;!<%8%P%C%U%!$rJ]$C$F$*$/$+$r;XDj$7$^$9!#$3\e(B
+\e$B$3$NJQ?t$O$I$N$/$i$$8E$$%a%C%;!<%8%P%C%U%!$rJ]$C$F$*$/$+$r;XDj$7$^$9!#$3\e(B
 \e$B$l$h$jB?$$%a%C%;!<%8%P%C%U%!$,$"$l$P!"0lHV8E$$%P%C%U%!$,:o=|$5$l$^$9!#=i\e(B
 \e$B4|CM$O\e(B10\e$B$G$9!#$3$NJQ?t$,\e(B @code{nil} \e$B$G$"$k$H!"8E$$%a%C%;!<%8%P%C%U%!$O:o\e(B
 \e$B=|$5$l$^$;$s!#\e(B
 
 @item message-send-rename-function
 @vindex message-send-rename-function
-\e$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"\e(B@samp{*reply to Lars*} 
+\e$B%a%C%;!<%8$rAw$C$?8e$G!"%P%C%U%!$NL>A0$O!"Nc$($P!"\e(B@samp{*reply to Lars*}
 \e$B$+$i\e(B @samp{*sent reply to Lars*} \e$B$KJQ99$5$l$^$9!#$b$7$3$l$r9%$^$J$$$J$i!"\e(B
 \e$B$3$NJQ?t$r$"$J$?$N9%$-$JJ}K!$G%P%C%U%!$NL>A0$rJQ99$9$k4X?t$K@_Dj$7$F2<$5\e(B
 \e$B$$!#$=$b$=$b%P%C%U%!L>$rJQ99$9$k;v$r9%$^$J$$$N$G$"$l$P!"<!$N$h$&$K$G$-$^\e(B
@@ -1378,7 +1407,6 @@ Message \e$B$O$"$J$?$,%a%C%;!<%8%P%C%U%!$rMW5a$7$?$H$-$K!"B>$KL5$$M#0l$N%P%C\e(B
 
 @end table
 
-
 @node Message Actions
 @section \e$B%a%C%;!<%8$NF0:n\e(B
 
@@ -1416,7 +1444,6 @@ Message \e$B$O$3$l$i$N%j%9%H$H:nMQ$9$k4X?t$rDs6!$7$F$$$^$9\e(B:
 @dfn{\e$BF0:n\e(B} \e$B$O<!$N$I$l$+$G$9\e(B: \e$BIaDL$N4X?t!"$b$7$/$O\e(B @code{car} \e$B$,4X?t$G!"\e(B
 @code{cdr} \e$B$,0z?t$N%j%9%H$G$"$k%j%9%H$+!"\e(B@code{\e$BI>2A\e(B} \e$B$5$l$k<0$G$9!#\e(B
 
-
 @node Compatibility
 @chapter \e$B8_49@-\e(B
 @cindex compatibility
@@ -1431,13 +1458,12 @@ Message \e$B$O;v<B>e!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s\e(B---\e$B8E$$\e(B @code{mail-} \e
 
 \e$B$3$l$OB?$/$N\e(B Message \e$BJQ?t$rBP1~$9$k%a!<%kJQ?t$+$i=i4|2=$7$^$9!#\e(B
 
-
 @node Appendices
 @chapter \e$BIU5-\e(B
 
 @menu
 * Responses:: \e$B1~Ez$,2?=h$K9T$/$+$r7hDj$9$kI8=`$NK!B'!#\e(B
-@end menu 
+@end menu
 
 @node Responses
 @section \e$B1~Ez\e(B
@@ -1457,7 +1483,6 @@ Message \e$B$O;v<B>e!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s\e(B---\e$B8E$$\e(B @code{mail-} \e
 @item From
 @end table
 
-
 @item wide reply
 @dfn{\e$B9-$$JVEz\e(B} (wide reply) \e$B$O$"$J$?$,1~Ez$7$h$&$H$7$F$$$k%a%C%;!<%8$K=q\e(B
 \e$B$+$l$F$$$?\e(B @emph{\e$BA4$F$N\e(B} \e$B<BBN$r4^$`%a!<%k$K$h$k1~Ez$G$9!#0J2<$N%X%C%@!<\e(B
@@ -1475,15 +1500,14 @@ Message \e$B$O;v<B>e!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s\e(B---\e$B8E$$\e(B @code{mail-} \e
 @end table
 
 @code{Mail-Copies-To} \e$B%X%C%@!<$,B8:_$7$F$$$k$H!"$=$l$b%a!<%k%\%C%/%9$N%j\e(B
-\e$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,\e(B @samp{never} \e$B$G$"$l$P!"$=$l$O\e(B 
-@code{From} (\e$B$b$7$/$O\e(B @code{Reply-To}) \e$B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@$&\e(B
-\e$B;v$G$9!#\e(B
-
+\e$B%9%H$K2C$($i$l$k$G$7$g$&!#$3$N%X%C%@!<$,\e(B @samp{never} \e$B$G$"$l$P!"$=$l\e(B
+\e$B$O\e(B @code{From} (\e$B$b$7$/$O\e(B @code{Reply-To}) \e$B%a!<%k%\%C%/%9$,M^@)$5$l$k$H8@\e(B
+\e$B$&;v$G$9!#\e(B
 
 @item followup
-@dfn{\e$B%U%)%m!<%"%C%W\e(B} (followup) \e$B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C%@!<\e(B 
-(\e$BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9\e(B) \e$B$,2?=h$K1~Ez$,Aw$i$l$k$+$r7hDj\e(B
-\e$B$7$^$9\e(B:
+@dfn{\e$B%U%)%m!<%"%C%W\e(B} (followup) \e$B$O%K%e!<%9$K$h$k1~Ez$G$9!#0J2<$N%X%C\e(B
+\e$B%@!<\e(B (\e$BM%@h=g0L$N9b$$$b$N$+$i5s$2$i$l$F$$$^$9\e(B) \e$B$,2?=h$K1~Ez$,Aw$i$l$k$+$r\e(B
+\e$B7hDj$7$^$9\e(B:
 
 @table @code
 
@@ -1498,8 +1522,6 @@ Message \e$B$O;v<B>e!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s\e(B---\e$B8E$$\e(B @code{mail-} \e
 
 @end table
 
-
-
 @node Index
 @chapter Index
 @printindex cp
@@ -1513,4 +1535,3 @@ Message \e$B$O;v<B>e!"$=$l<+?H$NJQ?t$7$+;H$$$^$;$s\e(B---\e$B8E$$\e(B @code{mail-} \e
 @bye
 
 @c End:
-
index 67f6c12..75899f6 100644 (file)
@@ -5,7 +5,7 @@
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
-@dircategory Editors
+@dircategory Emacs
 @direntry
 * Message: (message).   Mail and news composition mode that goes with Gnus.
 @end direntry
@@ -18,7 +18,7 @@
 
 This file documents Message, the Emacs message composition mode.
 
-Copyright (C) 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -47,7 +47,8 @@ license to the document, as described in section 6 of the license.
 @page
 
 @vskip 0pt plus 1filll
-Copyright @copyright{} 1996,97,98,99,2000 Free Software Foundation, Inc.
+Copyright @copyright{} 1996, 1997, 1998, 1999, 2000 
+     Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1 or
@@ -86,9 +87,9 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to T-gnus 6.15 Message.  Message is
-distributed with the Gnus distribution bearing the same version number
-as this manual.
+This manual corresponds to T-gnus 6.15 Message.  Message is distributed
+with the Gnus distribution bearing the same version number as this
+manual.
 
 
 @node Interface
@@ -320,6 +321,7 @@ will be removed before popping up the buffer.  The default is
 @chapter Commands
 
 @menu
+* Buffer Entry::        Commands after entering a Message buffer.
 * Header Commands::     Commands for moving to headers.
 * Movement::            Moving around in message buffers.
 * Insertion::           Inserting things into message buffers.
@@ -328,9 +330,25 @@ will be removed before popping up the buffer.  The default is
 * Various Commands::    Various things.
 * Sending::             Actually sending the message.
 * Mail Aliases::        How to use mail aliases.
+* Spelling::            Having Emacs check your spelling.
 @end menu
 
 
+@node Buffer Entry
+@section Buffer Entry
+@cindex undo
+@kindex C-_
+
+You most often end up in a Message buffer when responding to some other
+message of some sort.  Message does lots of handling of quoted text, and
+may remove signatures, reformat the text, or the like---depending on
+which used settings you're using.  Message usually gets things right,
+but sometimes it stumbles.  To help the user unwind these stumblings,
+Message sets the undo boundary before each major automatic action it
+takes.  If you press the undo key (usually located at @kbd{C-_}) a few
+times, you will get back the un-edited message you're responding to.
+
+
 @node Header Commands
 @section Header Commands
 
@@ -845,6 +863,51 @@ No expansion will be performed upon sending of the message---all
 expansions have to be done explicitly.
 
 
+@node Spelling
+@section Spelling
+@cindex spelling
+@findex ispell-message
+
+There are two popular ways to have Emacs spell-check your messages:
+@code{ispell} and @code{flyspell}.  @code{ispell} is the older and
+probably more popular package.  You typically first write the message,
+and then run the entire thing through @code{ispell} and fix all the
+typos.  To have this happen automatically when you send a message, put
+something like the following in your @file{.emacs} file:
+
+@lisp
+(add-hook 'message-send-hook 'ispell-message)
+@end lisp
+
+@vindex ispell-message-dictionary-alist
+If you're in the habit of writing in different languages, this can be
+controlled by the @code{ispell-message-dictionary-alist} variable:
+
+@lisp
+(setq ispell-message-dictionary-alist
+      '(("^Newsgroups:.*\\bde\\." . "deutsch8")
+       (".*" . "default")))
+@end lisp
+
+@code{ispell} depends on having the external @samp{ispell} command
+installed.
+
+The other popular method is using @code{flyspell}.  This package checks
+your spelling while you're writing, and marks any mis-spelled words in
+various ways.
+
+To use @code{flyspell}, put something like the following in your
+@file{.emacs} file:
+
+@lisp
+(defun my-message-setup-routine ()
+  (flyspell-mode 1))
+(add-hook 'message-setup-hook 'my-message-setup-routine)
+@end lisp
+
+@code{flyspell} depends on having the external @samp{ispell} command
+installed.
+
 
 @node Variables
 @chapter Variables
@@ -920,7 +983,7 @@ buffers.
 @item message-subject-re-regexp
 @vindex message-subject-re-regexp
 Responses to messages have subjects that start with @samp{Re: }.  This
-is @emph{not} an abbreviation of the English word ``response'', but in
+is @emph{not} an abbreviation of the English word ``response'', but is
 Latin, and means ``in response to''.  Some illiterate nincompoops have
 failed to grasp this fact, and have ``internationalized'' their software
 to use abonimations like @samp{Aw: } (``antwort'') or @samp{Sv: }
diff --git a/texi/texi2latex.el b/texi/texi2latex.el
new file mode 100644 (file)
index 0000000..f5cb162
--- /dev/null
@@ -0,0 +1,324 @@
+;;; texi2latex.el --- convert a texi file into a LaTeX file.
+;; Copyright (C) 1996 Lars Magne Ingebrigtsen
+
+(require 'cl)
+
+(defun latexi-discard-until (string)
+  (let ((beg (match-beginning 0)))
+    (unless (re-search-forward (concat "^@end +" string "[ \t]*\n") nil t)
+      (error "No end: %s" string))
+    (delete-region beg (match-end 0))))
+
+(defun latexi-strip-line ()
+  (delete-region (progn (beginning-of-line) (point))
+                (progn (forward-line 1) (point))))
+
+(defun latexi-switch-line (command arg)
+  (latexi-strip-line)
+  (insert (format "\\%s{%s}\n" command arg)))
+
+(defun latexi-index-command (command arg)
+  (latexi-strip-line)
+  (insert (format "\\gnus%sindex{%s}\n" 
+                 (if (equal command "kindex") "k" "")
+                 arg)))
+
+(defun latexi-begin-command (command)
+  (latexi-strip-line)
+  (insert (format "\\begin{%s}\n" command)))
+
+(defun latexi-exchange-command (command arg)
+  (delete-region (match-beginning 0) (match-end 0))
+  (insert (format "\\%s{%s}" command arg)))
+
+(defun latexi-translate ()
+  "Translate."
+  (interactive)
+  (latexi-translate-file "gnus")
+  (latexi-translate-file "gnus-faq"))
+
+(defun latexi-translate-file (file)
+  "Translate file a LaTeX file."
+  (let ((item-string "")
+       (item-stack nil)
+       (list-stack nil)
+       (latexi-buffer (get-buffer-create "*LaTeXi*"))
+       verbatim
+       (regexp 
+        (concat 
+           "@\\([^{} \t\n]+\\)"
+           "\\(\\( +\\(.*$\\)\\|[ \t]*$\\)\\|{\\([^}]*\\)}\\)"))
+       (cur (find-file-noselect (concat (or (getenv "srcdir") ".") 
+                                        "/" file ".texi")))
+       (times 3)
+       (chapter 0)
+       command arg)
+    (pop-to-buffer latexi-buffer)
+    (buffer-disable-undo)
+    (erase-buffer)
+    (insert-buffer-substring cur)
+    (goto-char (point-min))
+    (latexi-strip-line)
+    (latexi-translate-string "%@{" "\\gnuspercent{}\\gnusbraceleft{}")
+    (latexi-translate-string "%@}" "\\gnuspercent{}\\gnusbraceright{}")
+    (latexi-translate-string "%1@{" "\\gnuspercent{}1\\gnusbraceright{}")
+;    (while (re-search-forward "{\"[^\"]*\\(\\\\\\)[^\"]*\"}\\\\" nil t)
+;      (replace-match "\\verb+\\\\+ " t t))
+    (while (not (zerop (decf times)))
+      (goto-char (point-min))
+      (while (re-search-forward regexp nil t)
+       (setq command (match-string 1))
+       (if (match-beginning 3)
+           (progn
+             (setq arg (or (match-string 4) ""))
+             (save-match-data
+               (when (string-match "[ \t]+$" arg)
+                 (setq arg (substring arg 0 (match-beginning 0)))))
+             (cond 
+              ((member command '("c" "comment"))
+               (if (string-match "@icon" (or arg ""))
+                   (progn
+                     (beginning-of-line)
+                     (delete-region (point) (+ (point) 4))
+                     (insert "\\gnus"))
+                 (delete-region (match-beginning 0) 
+                                (progn (end-of-line) (point))))
+               (if (equal arg "@head")
+                   (insert "\\gnusinteresting")))
+              ((member command '("setfilename" 
+                                 "synindex" "setchapternewpage"
+                                 "summarycontents" "bye"
+                                 "top" "iftex" "cartouche" 
+                                 "iflatex" "finalout" "vskip"
+                                 "dircategory"))
+               (latexi-strip-line))
+              ((member command '("menu" "tex" "ifinfo" "ignore" 
+                                 "ifnottex" "direntry"))
+               (latexi-discard-until command))
+              ((member command '("subsection" "subsubsection"))
+               (latexi-switch-line command arg))
+              ((member command '("chapter"))
+               (latexi-switch-line 
+                (format 
+                 "gnus%s{\\epsfig{figure=tmp/new-herd-%d.ps,scale=.5}}"
+                  command (incf chapter))
+                arg))
+              ((member command '("section"))
+               (latexi-switch-line (format "gnus%s" command) arg))
+              ((member command '("cindex" "findex" "kindex" "vindex"))
+               (latexi-index-command command arg))
+              ((member command '("*"))
+               (delete-char -2)
+               (insert "\\\\"))
+              ((equal command "sp")
+               (replace-match "" t t))
+              ((equal command "node")
+               (latexi-strip-line)
+               (insert (format "\\label{%s}\n" arg)))
+              ((equal command "contents")
+               (latexi-strip-line)
+               ;;(insert (format "\\tableofcontents\n" arg))
+               )
+              ((member command '("titlepage"))
+               (latexi-begin-command command))
+              ((member command '("lisp" "example"))
+               (latexi-strip-line)
+               (insert (format "\\begin{verbatim}\n"))
+               (setq verbatim (point)))
+              ((member command '("center"))
+               (latexi-strip-line)
+               (insert (format "\\begin{%s}%s\\end{%s}\n"
+                               command arg command)))
+              ((member command '("end"))
+               (cond
+                ((member arg '("titlepage"))
+                 (latexi-strip-line)
+                 (insert (format "\\end{%s}\n" arg)))
+                ((equal arg "quotation")
+                 (latexi-strip-line)
+                 (insert (format "\\end{verse}\n")))
+                ((member arg '("lisp" "example"))
+                 (latexi-strip-line)
+                 (save-excursion
+                   (save-restriction
+                     (narrow-to-region verbatim (point))
+                     (goto-char (point-min))
+                     (while (search-forward "@{" nil t)
+                       (replace-match "{" t t))
+                     (goto-char (point-min))
+                     (while (search-forward "@}" nil t)
+                       (replace-match "}" t t))))
+                 (setq verbatim nil)
+                 (insert "\\end{verbatim}\n"))
+                ((member arg '("table"))
+                 (setq item-string (pop item-stack))
+                 (latexi-strip-line)
+                 (insert (format "\\end{%slist}\n" (pop list-stack))))
+                ((member arg '("itemize" "enumerate"))
+                 (setq item-string (pop item-stack))
+                 (latexi-strip-line)
+                 (insert (format "\\end{%s}\n" arg)))
+                ((member arg '("iflatex" "iftex" "cartouche"))
+                 (latexi-strip-line))
+                (t
+                 (error "Unknown end arg: %s" arg))))
+              ((member command '("table"))
+               (push item-string item-stack)
+               (push (substring arg 1) list-stack)
+               (setq item-string 
+                     (format "[@%s{%%s}]" (car list-stack)))
+               (latexi-strip-line)
+               (insert (format "\\begin{%slist}\n" (car list-stack))))
+              ((member command '("itemize" "enumerate"))
+               (push item-string item-stack)
+               (cond 
+                ((member arg '("@bullet"))
+                 (setq item-string "[\\gnusbullet]"))
+                (t
+                 (setq item-string "")))
+               (latexi-strip-line)
+               (insert (format "\\begin{%s}\n" command)))
+              ((member command '("item"))
+               (latexi-strip-line)
+               (insert (format "\\%s%s\n" command (format item-string arg))))
+              ((equal command "itemx")
+               (latexi-strip-line)
+               (insert (format "\\gnusitemx{%s}\n" (format item-string arg))))
+              ((eq (aref command 0) ?@)
+               (goto-char (match-beginning 0))
+               (delete-char 2)
+               (insert "duppat{}"))
+              ((equal command "settitle")
+               (latexi-strip-line)
+               (insert (format "\\newcommand{\\gnustitlename}{%s}\n" arg)))
+              ((equal command "title")
+               (latexi-strip-line)
+               (insert (format "\\gnustitlename{%s}\n" arg)))
+              ((equal command "author")
+               (latexi-strip-line)
+               (insert (format "\\gnusauthor{%s}\n" arg)))
+              ((equal command "quotation")
+               (latexi-begin-command "verse"))
+              ((equal command "page")
+               (latexi-strip-line)
+               (insert (format "\\newpage\n" arg)))
+              ((equal command "'s")
+               (goto-char (match-beginning 0))
+               (delete-char 1))
+              ((equal command "include")
+               (latexi-strip-line)
+               (insert "\\input{gnus-faq.latexi}\n"))
+              ((equal command "printindex")
+               (latexi-strip-line)
+               ;;(insert 
+               ;; (format 
+               ;;  "\\begin{theindex}\\input{gnus.%s}\\end{theindex}\n" arg))
+               )
+              (t
+               (error "Unknown command: %s" command))))
+         ;; These are commands with {}.
+         (setq arg (match-string 5))
+         (cond 
+          ((member command '("anchor"))
+           (latexi-strip-line))
+          ((member command '("xref" "pxref"))
+           (latexi-exchange-command (concat "gnus" command) arg))
+          ((member command '("sc" "file" "dfn" "emph" "kbd" "uref"
+                             "code" "samp" "var" "strong" "i"
+                             "result"))
+           (goto-char (match-beginning 0))
+           (delete-char 1)
+           (insert "\\gnus"))
+          ((member command '("copyright" "footnote"))
+           (goto-char (match-beginning 0))
+           (delete-char 1)
+           (insert "\\"))
+          ((member command '("dots"))
+           (goto-char (match-beginning 0))
+           (delete-region (match-beginning 0) (match-end 0))
+           (insert "..."))
+          ((eq (aref command 0) ?@)
+           (goto-char (match-beginning 0))
+           (delete-char 2)
+           (insert "duppat{}"))
+          (t
+           (error "Unknown command: %s" command))))))
+    (latexi-translate-string "$" "\\gnusdollar{}")
+    (latexi-translate-string "&" "\\gnusampersand{}")
+    (latexi-translate-string "%" "\\gnuspercent{}")
+    (latexi-translate-string "#" "\\gnushash{}")
+    (latexi-translate-string "^" "\\gnushat{}")
+    (latexi-translate-string "~" "\\gnustilde{}")
+    (latexi-translate-string "_" "\\gnusunderline{}")
+    (latexi-translate-string "¬" "\\gnusnot{}")
+    (goto-char (point-min))
+    (while (search-forward "duppat{}" nil t)
+      (replace-match "@" t t))
+    (latexi-translate-string "@@" "@")
+    (latexi-translate-string "<" "\\gnusless{}")
+    (latexi-translate-string ">" "\\gnusgreater{}")
+    (goto-char (point-min))
+    (search-forward "label{Top}" nil t)
+    (while (re-search-forward "\\\\[ntr]\\b" nil t)
+      (when (save-match-data
+             (or (not (save-excursion
+                        (search-backward "begin{verbatim}" nil t)))
+                 (> (save-excursion
+                      (search-backward "end{verbatim"))
+                    (save-excursion
+                      (search-backward "begin{verbatim}")))))
+       (goto-char (match-beginning 0))
+       (delete-char 1)
+       (insert "\\gnusbackslash{}")))
+    (latexi-translate-string "\\\\" "\\gnusbackslash{}")
+    (goto-char (point-min))
+    (while (re-search-forward "\\\\[][{}]" nil t)
+      (goto-char (match-beginning 0))
+      (delete-char 1))
+    (latexi-contributors)
+    (let ((coding-system-for-write 'iso-8859-1))
+      (write-region (point-min) (point-max) (concat file ".latexi")))))
+
+(defun latexi-translate-string (in out)
+  (let (yes)
+    (goto-char (point-min))
+    (search-forward "label{Top}" nil t)
+    (while (search-forward in nil t)
+      (when (save-match-data
+             (or (not (save-excursion
+                        (search-backward "begin{verbatim}" nil t)))
+                 (> (save-excursion
+                      (re-search-backward "end{verbatim}\\|end{verse}"))
+                    (save-excursion
+                      (re-search-backward
+                       "begin{verbatim}\\|begin{verse}")))))
+       (replace-match out t t)))))
+
+(defun latexi-contributors ()
+  (goto-char (point-min))
+  (when (re-search-forward "^Also thanks to the following" nil t)
+    (forward-line 2)
+    (narrow-to-region
+     (point)
+     (1- (search-forward "\n\n")))
+    (when (re-search-backward "^and" nil t)
+      (latexi-strip-line))
+    (goto-char (point-min))
+    (while (re-search-forward "[.,] *$" nil t)
+      (replace-match "" t t))
+    (goto-char (point-min))
+    (let (names)
+      (while (not (eobp))
+       (push (buffer-substring (point) (progn (end-of-line) (point)))
+             names)
+       (forward-line 1))
+      (delete-region (point-min) (point-max))
+      (insert "\\begin{tabular}{lll}\n")
+      (setq names (nreverse (delete "" names)))
+      (while names
+       (insert (pop names) " & " (or (pop names) "\\mbox{}") 
+               " & " (or (pop names) "\\mbox{}") 
+               "\\\\\n"))
+      (insert "\\end{tabular}\n")
+      (widen))))
+