Synch with Oort Gnus.
authoryamaoka <yamaoka>
Mon, 13 Jan 2003 22:58:45 +0000 (22:58 +0000)
committeryamaoka <yamaoka>
Mon, 13 Jan 2003 22:58:45 +0000 (22:58 +0000)
15 files changed:
ChangeLog
GNUS-NEWS
lisp/ChangeLog
lisp/deuglify.el
lisp/gnus-fun.el
lisp/gnus-score.el
lisp/gnus-sum.el
lisp/gnus.el
make-x.bat
make.bat
texi/ChangeLog
texi/gnus-ja.texi
texi/gnus.texi
texi/message-ja.texi
texi/message.texi

index 3475c34..4d18db9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2003-01-10  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * make.bat: Removed "-no-init-file" (it's the same as "-q").  Use
+       new variables EMACSBATCH and GNUS_INFO_DIR.  Install gnus-?,
+       message-?, sieve and pgg (in texi).  Added hint for dir entries.
+
+       * make-x.bat: Ditto.
+
+2003-01-13  Simon Josefsson  <jas@extundo.com>
+
+       * GNUS-NEWS: Add smileys, Sender:, message-utils.
+       Expand anti-spam.  Fixes.
+
 2003-01-12  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * lisp/gnus-vers.el: T-gnus 6.15.13 (quimby) revision 00.
index 3bf0e30..813479b 100644 (file)
--- a/GNUS-NEWS
+++ b/GNUS-NEWS
@@ -8,10 +8,39 @@ For older news, see Gnus info node "New Features".
 \f
 * Changes in Oort Gnus
 
+** Smileys (":-)", ";-)" etc) are now iconized for Emacs too.
+
+Put (setq gnus-treat-display-smileys nil) in ~/.emacs to disable it.
+
+** Gnus no longer generate the Sender: header automatically.
+
+Earlier it was generated iff the user configurable email address was
+different from the Gnus guessed default user address.  As the guessing
+algorithm is rarely correct these days, and (more controversally) the
+only use of the Sender: header was to check if you are entitled to
+cancel/supersede news (which is now solved by Cancel Locks instead,
+see another entry), generation of the header has been disabled by
+default.  See the variables `message-required-headers',
+`message-required-news-headers', and `message-required-mail-headers'.
+
+** Features from third party message-utils.el added to message.el.
+
+Message now asks if you wish to remove "(was: <old subject>)" from
+subject lines (see `message-subject-trailing-was-query').  C-c M-m and
+C-c M-f inserts markers indicating included text.  C-c C-f a adds a
+X-No-Archive: header.  Improved crosspost follow behaviour with
+`message-cross-post-*'.
+
 ** References and X-Draft-Headers are no longer generated when you
    start composing messages.
 
-** Improved anti-speam features.
+** Improved anti-spam features.
+
+Gnus is now able to take out spam from your mail and news streams
+using a wide variety of programs and filter rules. Among the supported
+methods are RBL blocklists, bogofilter and white/blacklists.  Hooks
+for easy use of external packages such as SpamAssassin and Hashcash
+are also new.
 
 ** Easy inclusion of X-Faces headers.
 
@@ -127,7 +156,7 @@ Add a new format of match like
         ((header "to" "larsi.*org")
          (Organization "Somewhere, Inc."))
 
-The old format like the lines below is obsolete.
+The old format like the lines below is obsolete, but still accepted.
 
         (header "to" "larsi.*org"
          (Organization "Somewhere, Inc."))
@@ -216,10 +245,10 @@ the .marks or .mrk file instead of the information in .newsrc.eld.
 The new server variables `nnml-marks-is-evil' and
 `nnfolder-marks-is-evil' can be used to disable this feature.
 
-** The menu bar (in Group and Summary buffer) named "Misc" has been
-renamed to "Gnus".
+** The menu bar item (in Group and Summary buffer) named "Misc" has
+been renamed to "Gnus".
 
-** The menu bar (in Message mode) named "MML" has been renamed to
+** The menu bar item (in Message mode) named "MML" has been renamed to
 "Attachments".
 
 ** gnus-group-charset-alist and gnus-group-ignored-charsets-alist.
index 373a653..2e383e9 100644 (file)
@@ -1,3 +1,39 @@
+2003-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-sum.el: Removed `(when t ...)' around `gnus-define-keys'.
+
+2003-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-score.el (gnus-score-edit-file-at-point): New function.
+       (gnus-score-find-trace): Bind it to `e' key.  Added `q' for quit.
+
+2003-01-13  Romain FRANCOISE  <romain@orebokech.com>
+
+       * gnus-fun.el (gnus-x-face-from-file): Quote file name. 
+       (gnus-face-from-file): Ditto.
+
+2003-01-13  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-articles-to-read): Don't just apply
+       gnus-alter-articles-to-read-function to the unread articles. 
+
+2003-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * deuglify.el (gnus-article-outlook-unwrap-lines)
+       (gnus-article-outlook-repair-attribution)
+       (gnus-article-outlook-rearrange-citation): New function names,
+       renamed from "gnus-outlook-" to "gnus-article-outlook-".  Changed
+       doc-string.
+
+       * gnus-sum.el (gnus-summary-mode-map): Use new function names,
+       removed `W k' key binding (use `W Y f' instead).
+       (gnus-summary-make-menu-bar): Use new function names.
+
+2003-01-13  Simon Josefsson  <jas@extundo.com>
+
+       * gnus-fun.el (gnus-random-x-face): Doc fix.
+       (gnus-insert-random-x-face-header): New function.
+
 2003-01-13  Jesper Harder  <harder@ifa.au.dk>
 
        * gnus-sum.el (gnus-summary-make-menu-bar): Deactivate items if
@@ -14,6 +50,7 @@
 2003-01-12  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
        * gnus.el (gnus-version-number): Bumped version.
+       (gnus-summary-line-format): Doc fix.
 
 2003-01-12 22:02:49 Lars Magne Ingebrigtsen <lars@ingebrigtsen.no>
 
index 1f15364..2628011 100644 (file)
@@ -47,7 +47,7 @@
 ;; > verb.  This sentence no verb.  This sentence no verb.  This
 ;; > sentence no verb.
 ;;
-;; The function `gnus-outlook-unwrap-lines' tries to recognize those
+;; The function `gnus-article-outlook-unwrap-lines' tries to recognize those
 ;; erroneously wrapped lines and will unwrap them.  I.e. putting the
 ;; wrapped parts ("no" in this example) back where they belong (at the
 ;; end of the cited line above).
@@ -70,7 +70,7 @@
 ;;
 ;; Unwrapping "You forgot in all your sentences." would be illegal as
 ;; this part wasn't intended to be cited text.
-;; `gnus-outlook-unwrap-lines' will only unwrap lines if the resulting
+;; `gnus-article-outlook-unwrap-lines' will only unwrap lines if the resulting
 ;; citation line will be of a certain maximum length.  You can control
 ;; this by adjusting `gnus-outlook-deuglify-unwrap-max'.  Also
 ;; unwrapping will only be done if the line above the (possibly)
 ;; > Bye, John
 ;;
 ;; Repairing the attribution line will be done by function
-;; `gnus-outlook-repair-attribution' which calls other function that
+;; `gnus-article-outlook-repair-attribution which calls other function that
 ;; try to recognize and repair broken attribution lines.  See variable
 ;; `gnus-outlook-deuglify-attrib-cut-regexp' for stuff that should be
 ;; cut off from the beginning of an attribution line and variable
 ;;
 ;; Rearranging the article so that the cited text appears above the
 ;; new text will be done by function
-;; `gnus-outlook-rearrange-citation'.  This function calls
-;; `gnus-outlook-repair-attribution' to find and repair an attribution
+;; `gnus-article-outlook-rearrange-citation'.  This function calls
+;; `gnus-article-outlook-repair-attribution to find and repair an attribution
 ;; line.
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; To automatically invoke deuglification on every article you read,
 ;; put something like that in your .gnus:
 ;;
-;; (add-hook 'gnus-article-decode-hook 'gnus-outlook-unwrap-lines)
+;; (add-hook 'gnus-article-decode-hook 'gnus-article-outlook-unwrap-lines)
 ;;
 ;; or _one_ of the following lines:
 ;;
 ;; ;; repair broken attribution lines
-;; (add-hook 'gnus-article-decode-hook 'gnus-outlook-repair-attribution)
+;; (add-hook 'gnus-article-decode-hook 'gnus-article-outlook-repair-attribution)
 ;;
 ;; ;; repair broken attribution lines and citations
-;; (add-hook 'gnus-article-decode-hook 'gnus-outlook-rearrange-citation)
+;; (add-hook 'gnus-article-decode-hook 'gnus-article-outlook-rearrange-citation)
 ;;
 ;; Note that there always may be some false positives, so I suggest
 ;; using the manual invocation.  After deuglification you may want to
 ;; -----------
 ;;
 ;; As I said before there may (or will) be a few false positives on
-;; unwrapping cited lines with `gnus-outlook-unwrap-lines'.
+;; unwrapping cited lines with `gnus-article-outlook-unwrap-lines'.
 ;;
-;; `gnus-outlook-repair-attribution' will only fix the first
+;; `gnus-article-outlook-repair-attribution will only fix the first
 ;; attribution line found in the article.  Furthermore it fixed to
 ;; certain kinds of attributions.  And there may be horribly many
 ;; false positives, vanishing lines and so on -- so don't trust your
 ;; eyes.  Again I recommend manual invocation.
 ;;
-;; `gnus-outlook-rearrange-citation' carries all the limitations of
-;; `gnus-outlook-repair-attribution'.
+;; `gnus-article-outlook-rearrange-citation' carries all the limitations of
+;; `gnus-article-outlook-repair-attribution.
 ;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -299,7 +299,7 @@ It is run after `gnus-article-prepare-hook'."
                    'gnus-outlook-display-hook)))
 
 ;;;###autoload
-(defun gnus-outlook-unwrap-lines (&optional nodisplay)
+(defun gnus-article-outlook-unwrap-lines (&optional nodisplay)
   "Unwrap lines that appear to be wrapped citation lines.  
 You can control what lines will be unwrapped by frobbing
 `gnus-outlook-deuglify-unwrap-min' and `gnus-outlook-deuglify-unwrap-max',
@@ -419,7 +419,7 @@ NODISPLAY is non-nil, don't redisplay the article buffer."
              (match-beginning 0)))))))
 
 ;;;###autoload
-(defun gnus-outlook-repair-attribution (&optional nodisplay)
+(defun gnus-article-outlook-repair-attribution (&optional nodisplay)
   "Repair a broken attribution line.
 If NODISPLAY is non-nil, don't redisplay the article buffer."
   (interactive "P")
@@ -431,11 +431,11 @@ If NODISPLAY is non-nil, don't redisplay the article buffer."
     (unless nodisplay (gnus-outlook-display-article-buffer))
     attrib-start))
 
-(defun gnus-outlook-rearrange-citation (&optional nodisplay)
+(defun gnus-article-outlook-rearrange-citation (&optional nodisplay)
   "Repair broken citations.
 If NODISPLAY is non-nil, don't redisplay the article buffer."
   (interactive "P")
-  (let ((attrib-start (gnus-outlook-repair-attribution 'nodisplay)))
+  (let ((attrib-start (gnus-article-outlook-repair-attribution 'nodisplay)))
     ;; rearrange citations if an attribution line has been recognized
     (if attrib-start
        (gnus-outlook-rearrange-article attrib-start)))
@@ -443,15 +443,16 @@ If NODISPLAY is non-nil, don't redisplay the article buffer."
 
 ;;;###autoload
 (defun gnus-outlook-deuglify-article (&optional nodisplay)
-  "Deuglify broken Outlook (Express) articles.
-If NODISPLAY is non-nil, don't redisplay the article buffer."
+  "Full deuglify of broken Outlook (Express) articles.
+Treat dumbquotes, unwrap lines, repair attribution and rearrange citation.  If
+NODISPLAY is non-nil, don't redisplay the article buffer."
   (interactive "P")
   ;; apply treatment of dumb quotes
   (gnus-article-treat-dumbquotes)
   ;; repair wrapped cited lines
-  (gnus-outlook-unwrap-lines 'nodisplay)
-  ;; repair attribution line
-  (gnus-outlook-rearrange-citation 'nodisplay)
+  (gnus-article-outlook-unwrap-lines 'nodisplay)
+  ;; repair attribution line and rearrange citation.
+  (gnus-article-outlook-rearrange-citation 'nodisplay)
   (unless nodisplay (gnus-outlook-display-article-buffer)))
 
 ;;;###autoload
index cdc0506..2fc39f5 100644 (file)
@@ -60,7 +60,7 @@ Output to the current buffer, replace text, and don't mingle error."
 
 ;;;###autoload
 (defun gnus-random-x-face ()
-  "Insert a random X-Face header from `gnus-x-face-directory'."
+  "Return X-Face header data chosen randomly from `gnus-x-face-directory'."
   (interactive)
   (when (file-exists-p gnus-x-face-directory)
     (let* ((files (directory-files gnus-x-face-directory t "\\.pbm$"))
@@ -71,18 +71,31 @@ Output to the current buffer, replace text, and don't mingle error."
                 (shell-quote-argument file)))))))
 
 ;;;###autoload
+(defun gnus-insert-random-x-face-header ()
+  "Insert a random X-Face header from `gnus-x-face-directory'."
+  (interactive)
+  (let ((data (gnus-random-x-face)))
+    (save-excursion
+      (message-goto-eoh)
+      (if data
+         (insert "X-Face: " data)
+       (message
+        "No face returned by `gnus-random-x-face'.  Does %s/*.pbm exist?"
+        gnus-x-face-directory)))))
+
+;;;###autoload
 (defun gnus-x-face-from-file (file)
-  "Insert an X-Face header based on an image file."
-  (interactive "fImage file name:" )
+  "Insert an X-Face header based on a GIF image file."
+  (interactive "fImage file name: ")
   (when (file-exists-p file)
     (gnus-shell-command-to-string
      (format gnus-convert-image-to-x-face-command
-            (shell-quote-argument file)))))
+            (shell-quote-argument (expand-file-name file))))))
 
 ;;;###autoload
 (defun gnus-face-from-file (file)
-  "Return an Face header based on an image file."
-  (interactive "fImage file name:" )
+  "Return an Face header based on a JPEG image file."
+  (interactive "fImage file name: ")
   (when (file-exists-p file)
     (let ((done nil)
          (attempt "")
@@ -93,7 +106,7 @@ Output to the current buffer, replace text, and don't mingle error."
        (setq attempt
              (gnus-shell-command-to-string
               (format gnus-convert-image-to-face-command
-                      (shell-quote-argument file)
+                      (shell-quote-argument (expand-file-name file))
                       quant)))
        (if (> (length attempt) 740)
            (progn
index 087871e..4215774 100644 (file)
@@ -37,6 +37,8 @@
 (require 'message)
 (require 'score-mode)
 
+(autoload 'ffap-string-at-point "ffap")
+
 (defcustom gnus-global-score-files nil
   "List of global score files and directories.
 Set this variable if you want to use people's score files.  One entry
@@ -1136,6 +1138,11 @@ EXTRA is the possible non-standard header."
    4 (substitute-command-keys
       "\\<gnus-score-mode-map>\\[gnus-score-edit-exit] to save edits")))
 
+(defun gnus-score-edit-file-at-point ()
+  "Edit score file at point.  Useful especially after `V t'."
+  (interactive)
+  (gnus-score-edit-file (ffap-string-at-point)))
+
 (defun gnus-score-load-file (file)
   ;; Load score file FILE.  Returns a list a retrieved score-alists.
   (let* ((file (expand-file-name
@@ -2378,6 +2385,13 @@ score in `gnus-newsgroup-scored' by SCORE."
           1 "No score rules apply to the current article (default score %d)."
           gnus-summary-default-score)
        (set-buffer "*Score Trace*")
+       ;; ToDo: Use a keymap instead?
+       (local-set-key "q"
+                      (lambda ()
+                        (interactive)
+                        (kill-buffer nil)
+                        (gnus-article-show-summary)))
+       (local-set-key "e" 'gnus-score-edit-file-at-point)
        (setq truncate-lines t)
        (while trace
          (insert (format "%S  ->  %s\n" (cdar trace)
index d8c320e..36ac20b 100644 (file)
@@ -57,9 +57,9 @@
 (autoload 'gnus-article-outlook-deuglify-article "deuglify"
   "Deuglify broken Outlook (Express) articles and redisplay."
   t)
-(autoload 'gnus-outlook-unwrap-lines "deuglify" nil t)
-(autoload 'gnus-outlook-repair-attribution "deuglify" nil t)
-(autoload 'gnus-outlook-rearrange-citation "deuglify" nil t)
+(autoload 'gnus-article-outlook-unwrap-lines "deuglify" nil t)
+(autoload 'gnus-article-outlook-repair-attribution "deuglify" nil t)
+(autoload 'gnus-article-outlook-rearrange-citation "deuglify" nil t)
 
 (defcustom gnus-kill-summary-on-exit t
   "*If non-nil, kill the summary buffer when you exit from it.
@@ -1541,437 +1541,435 @@ increase the score of each group you read."
 
 (defvar gnus-article-commands-menu)
 
-(when t
-  ;; Non-orthogonal keys
-
-  (gnus-define-keys gnus-summary-mode-map
-    " " gnus-summary-next-page
-    "\177" gnus-summary-prev-page
-    [delete] gnus-summary-prev-page
-    [backspace] gnus-summary-prev-page
-    "\r" gnus-summary-scroll-up
-    "\M-\r" gnus-summary-scroll-down
-    "n" gnus-summary-next-unread-article
-    "p" gnus-summary-prev-unread-article
-    "N" gnus-summary-next-article
-    "P" gnus-summary-prev-article
-    "\M-\C-n" gnus-summary-next-same-subject
-    "\M-\C-p" gnus-summary-prev-same-subject
-    "\M-n" gnus-summary-next-unread-subject
-    "\M-p" gnus-summary-prev-unread-subject
-    "." gnus-summary-first-unread-article
-    "," gnus-summary-best-unread-article
-    "\M-s" gnus-summary-search-article-forward
-    "\M-r" gnus-summary-search-article-backward
-    "<" gnus-summary-beginning-of-article
-    ">" gnus-summary-end-of-article
-    "j" gnus-summary-goto-article
-    "^" gnus-summary-refer-parent-article
-    "\M-^" gnus-summary-refer-article
-    "u" gnus-summary-tick-article-forward
-    "!" gnus-summary-tick-article-forward
-    "U" gnus-summary-tick-article-backward
-    "d" gnus-summary-mark-as-read-forward
-    "D" gnus-summary-mark-as-read-backward
-    "E" gnus-summary-mark-as-expirable
-    "\M-u" gnus-summary-clear-mark-forward
-    "\M-U" gnus-summary-clear-mark-backward
-    "k" gnus-summary-kill-same-subject-and-select
-    "\C-k" gnus-summary-kill-same-subject
-    "\M-\C-k" gnus-summary-kill-thread
-    "\M-\C-l" gnus-summary-lower-thread
-    "e" gnus-summary-edit-article
-    "#" gnus-summary-mark-as-processable
-    "\M-#" gnus-summary-unmark-as-processable
-    "\M-\C-t" gnus-summary-toggle-threads
-    "\M-\C-s" gnus-summary-show-thread
-    "\M-\C-h" gnus-summary-hide-thread
-    "\M-\C-f" gnus-summary-next-thread
-    "\M-\C-b" gnus-summary-prev-thread
-    [(meta down)] gnus-summary-next-thread
-    [(meta up)] gnus-summary-prev-thread
-    "\M-\C-u" gnus-summary-up-thread
-    "\M-\C-d" gnus-summary-down-thread
-    "&" gnus-summary-execute-command
-    "c" gnus-summary-catchup-and-exit
-    "\C-w" gnus-summary-mark-region-as-read
-    "\C-t" gnus-summary-toggle-truncation
-    "?" gnus-summary-mark-as-dormant
-    "\C-c\M-\C-s" gnus-summary-limit-include-expunged
-    "\C-c\C-s\C-n" gnus-summary-sort-by-number
-    "\C-c\C-s\C-l" gnus-summary-sort-by-lines
-    "\C-c\C-s\C-c" gnus-summary-sort-by-chars
-    "\C-c\C-s\C-a" gnus-summary-sort-by-author
-    "\C-c\C-s\C-s" gnus-summary-sort-by-subject
-    "\C-c\C-s\C-d" gnus-summary-sort-by-date
-    "\C-c\C-s\C-i" gnus-summary-sort-by-score
-    "\C-c\C-s\C-o" gnus-summary-sort-by-original
-    "\C-c\C-s\C-r" gnus-summary-sort-by-random
-    "=" gnus-summary-expand-window
-    "\C-x\C-s" gnus-summary-reselect-current-group
-    "\M-g" gnus-summary-rescan-group
-    "w" gnus-summary-stop-page-breaking
-    "\C-c\C-r" gnus-summary-caesar-message
-    "\M-t" gnus-summary-toggle-mime
-    "f" gnus-summary-followup
-    "F" gnus-summary-followup-with-original
-    "C" gnus-summary-cancel-article
-    "r" gnus-summary-reply
-    "R" gnus-summary-reply-with-original
-    "\C-c\C-f" gnus-summary-mail-forward
-    "o" gnus-summary-save-article
-    "\C-o" gnus-summary-save-article-mail
-    "|" gnus-summary-pipe-output
-    "\M-k" gnus-summary-edit-local-kill
-    "\M-K" gnus-summary-edit-global-kill
-    ;; "V" gnus-version
-    "\C-c\C-d" gnus-summary-describe-group
-    "q" gnus-summary-exit
-    "Q" gnus-summary-exit-no-update
-    "\C-c\C-i" gnus-info-find-node
-    gnus-mouse-2 gnus-mouse-pick-article
-    "m" gnus-summary-mail-other-window
-    "a" gnus-summary-post-news
-    "i" gnus-summary-news-other-window
-    "x" gnus-summary-limit-to-unread
-    "s" gnus-summary-isearch-article
-    "t" gnus-summary-toggle-header
-    "g" gnus-summary-show-article
-    "l" gnus-summary-goto-last-article
-    "v" gnus-summary-preview-mime-message
-    "\C-c\C-v\C-v" gnus-uu-decode-uu-view
-    "\C-d" gnus-summary-enter-digest-group
-    "\M-\C-d" gnus-summary-read-document
-    "\M-\C-e" gnus-summary-edit-parameters
-    "\M-\C-a" gnus-summary-customize-parameters
-    "\C-c\C-b" gnus-bug
-    "\C-c\C-n" gnus-namazu-search
-    "*" gnus-cache-enter-article
-    "\M-*" gnus-cache-remove-article
-    "\M-&" gnus-summary-universal-argument
-    "\C-l" gnus-recenter
-    "I" gnus-summary-increase-score
-    "L" gnus-summary-lower-score
-    "\M-i" gnus-symbolic-argument
-    "h" gnus-summary-select-article-buffer
-
-    "V" gnus-summary-score-map
-    "X" gnus-uu-extract-map
-    "S" gnus-summary-send-map)
+;; Non-orthogonal keys
+
+(gnus-define-keys gnus-summary-mode-map
+  " " gnus-summary-next-page
+  "\177" gnus-summary-prev-page
+  [delete] gnus-summary-prev-page
+  [backspace] gnus-summary-prev-page
+  "\r" gnus-summary-scroll-up
+  "\M-\r" gnus-summary-scroll-down
+  "n" gnus-summary-next-unread-article
+  "p" gnus-summary-prev-unread-article
+  "N" gnus-summary-next-article
+  "P" gnus-summary-prev-article
+  "\M-\C-n" gnus-summary-next-same-subject
+  "\M-\C-p" gnus-summary-prev-same-subject
+  "\M-n" gnus-summary-next-unread-subject
+  "\M-p" gnus-summary-prev-unread-subject
+  "." gnus-summary-first-unread-article
+  "," gnus-summary-best-unread-article
+  "\M-s" gnus-summary-search-article-forward
+  "\M-r" gnus-summary-search-article-backward
+  "<" gnus-summary-beginning-of-article
+  ">" gnus-summary-end-of-article
+  "j" gnus-summary-goto-article
+  "^" gnus-summary-refer-parent-article
+  "\M-^" gnus-summary-refer-article
+  "u" gnus-summary-tick-article-forward
+  "!" gnus-summary-tick-article-forward
+  "U" gnus-summary-tick-article-backward
+  "d" gnus-summary-mark-as-read-forward
+  "D" gnus-summary-mark-as-read-backward
+  "E" gnus-summary-mark-as-expirable
+  "\M-u" gnus-summary-clear-mark-forward
+  "\M-U" gnus-summary-clear-mark-backward
+  "k" gnus-summary-kill-same-subject-and-select
+  "\C-k" gnus-summary-kill-same-subject
+  "\M-\C-k" gnus-summary-kill-thread
+  "\M-\C-l" gnus-summary-lower-thread
+  "e" gnus-summary-edit-article
+  "#" gnus-summary-mark-as-processable
+  "\M-#" gnus-summary-unmark-as-processable
+  "\M-\C-t" gnus-summary-toggle-threads
+  "\M-\C-s" gnus-summary-show-thread
+  "\M-\C-h" gnus-summary-hide-thread
+  "\M-\C-f" gnus-summary-next-thread
+  "\M-\C-b" gnus-summary-prev-thread
+  [(meta down)] gnus-summary-next-thread
+  [(meta up)] gnus-summary-prev-thread
+  "\M-\C-u" gnus-summary-up-thread
+  "\M-\C-d" gnus-summary-down-thread
+  "&" gnus-summary-execute-command
+  "c" gnus-summary-catchup-and-exit
+  "\C-w" gnus-summary-mark-region-as-read
+  "\C-t" gnus-summary-toggle-truncation
+  "?" gnus-summary-mark-as-dormant
+  "\C-c\M-\C-s" gnus-summary-limit-include-expunged
+  "\C-c\C-s\C-n" gnus-summary-sort-by-number
+  "\C-c\C-s\C-l" gnus-summary-sort-by-lines
+  "\C-c\C-s\C-c" gnus-summary-sort-by-chars
+  "\C-c\C-s\C-a" gnus-summary-sort-by-author
+  "\C-c\C-s\C-s" gnus-summary-sort-by-subject
+  "\C-c\C-s\C-d" gnus-summary-sort-by-date
+  "\C-c\C-s\C-i" gnus-summary-sort-by-score
+  "\C-c\C-s\C-o" gnus-summary-sort-by-original
+  "\C-c\C-s\C-r" gnus-summary-sort-by-random
+  "=" gnus-summary-expand-window
+  "\C-x\C-s" gnus-summary-reselect-current-group
+  "\M-g" gnus-summary-rescan-group
+  "w" gnus-summary-stop-page-breaking
+  "\C-c\C-r" gnus-summary-caesar-message
+  "\M-t" gnus-summary-toggle-mime
+  "f" gnus-summary-followup
+  "F" gnus-summary-followup-with-original
+  "C" gnus-summary-cancel-article
+  "r" gnus-summary-reply
+  "R" gnus-summary-reply-with-original
+  "\C-c\C-f" gnus-summary-mail-forward
+  "o" gnus-summary-save-article
+  "\C-o" gnus-summary-save-article-mail
+  "|" gnus-summary-pipe-output
+  "\M-k" gnus-summary-edit-local-kill
+  "\M-K" gnus-summary-edit-global-kill
+  ;; "V" gnus-version
+  "\C-c\C-d" gnus-summary-describe-group
+  "q" gnus-summary-exit
+  "Q" gnus-summary-exit-no-update
+  "\C-c\C-i" gnus-info-find-node
+  gnus-mouse-2 gnus-mouse-pick-article
+  "m" gnus-summary-mail-other-window
+  "a" gnus-summary-post-news
+  "i" gnus-summary-news-other-window
+  "x" gnus-summary-limit-to-unread
+  "s" gnus-summary-isearch-article
+  "t" gnus-summary-toggle-header
+  "g" gnus-summary-show-article
+  "l" gnus-summary-goto-last-article
+  "v" gnus-summary-preview-mime-message
+  "\C-c\C-v\C-v" gnus-uu-decode-uu-view
+  "\C-d" gnus-summary-enter-digest-group
+  "\M-\C-d" gnus-summary-read-document
+  "\M-\C-e" gnus-summary-edit-parameters
+  "\M-\C-a" gnus-summary-customize-parameters
+  "\C-c\C-b" gnus-bug
+  "\C-c\C-n" gnus-namazu-search
+  "*" gnus-cache-enter-article
+  "\M-*" gnus-cache-remove-article
+  "\M-&" gnus-summary-universal-argument
+  "\C-l" gnus-recenter
+  "I" gnus-summary-increase-score
+  "L" gnus-summary-lower-score
+  "\M-i" gnus-symbolic-argument
+  "h" gnus-summary-select-article-buffer
+
+  "V" gnus-summary-score-map
+  "X" gnus-uu-extract-map
+  "S" gnus-summary-send-map)
 
   ;; Sort of orthogonal keymap
-  (gnus-define-keys (gnus-summary-mark-map "M" gnus-summary-mode-map)
-    "t" gnus-summary-tick-article-forward
-    "!" gnus-summary-tick-article-forward
-    "d" gnus-summary-mark-as-read-forward
-    "r" gnus-summary-mark-as-read-forward
-    "c" gnus-summary-clear-mark-forward
-    " " gnus-summary-clear-mark-forward
-    "e" gnus-summary-mark-as-expirable
-    "x" gnus-summary-mark-as-expirable
-    "?" gnus-summary-mark-as-dormant
-    "b" gnus-summary-set-bookmark
-    "B" gnus-summary-remove-bookmark
-    "#" gnus-summary-mark-as-processable
-    "\M-#" gnus-summary-unmark-as-processable
-    "S" gnus-summary-limit-include-expunged
-    "C" gnus-summary-catchup
-    "H" gnus-summary-catchup-to-here
-    "h" gnus-summary-catchup-from-here
-    "\C-c" gnus-summary-catchup-all
-    "k" gnus-summary-kill-same-subject-and-select
-    "K" gnus-summary-kill-same-subject
-    "P" gnus-uu-mark-map)
-
-  (gnus-define-keys (gnus-summary-mscore-map "V" gnus-summary-mark-map)
-    "c" gnus-summary-clear-above
-    "u" gnus-summary-tick-above
-    "m" gnus-summary-mark-above
-    "k" gnus-summary-kill-below)
-
-  (gnus-define-keys (gnus-summary-limit-map "/" gnus-summary-mode-map)
-    "/" gnus-summary-limit-to-subject
-    "n" gnus-summary-limit-to-articles
-    "w" gnus-summary-pop-limit
-    "s" gnus-summary-limit-to-subject
-    "a" gnus-summary-limit-to-author
-    "u" gnus-summary-limit-to-unread
-    "m" gnus-summary-limit-to-marks
-    "M" gnus-summary-limit-exclude-marks
-    "v" gnus-summary-limit-to-score
-    "*" gnus-summary-limit-include-cached
-    "D" gnus-summary-limit-include-dormant
-    "T" gnus-summary-limit-include-thread
-    "d" gnus-summary-limit-exclude-dormant
-    "t" gnus-summary-limit-to-age
-    "." gnus-summary-limit-to-unseen
-    "x" gnus-summary-limit-to-extra
-    "p" gnus-summary-limit-to-display-predicate
-    "E" gnus-summary-limit-include-expunged
-    "c" gnus-summary-limit-exclude-childless-dormant
-    "C" gnus-summary-limit-mark-excluded-as-read
-    "o" gnus-summary-insert-old-articles
-    "N" gnus-summary-insert-new-articles)
-
-  (gnus-define-keys (gnus-summary-goto-map "G" gnus-summary-mode-map)
-    "n" gnus-summary-next-unread-article
-    "p" gnus-summary-prev-unread-article
-    "N" gnus-summary-next-article
-    "P" gnus-summary-prev-article
-    "\C-n" gnus-summary-next-same-subject
-    "\C-p" gnus-summary-prev-same-subject
-    "\M-n" gnus-summary-next-unread-subject
-    "\M-p" gnus-summary-prev-unread-subject
-    "f" gnus-summary-first-unread-article
-    "b" gnus-summary-best-unread-article
-    "j" gnus-summary-goto-article
-    "g" gnus-summary-goto-subject
-    "l" gnus-summary-goto-last-article
-    "o" gnus-summary-pop-article)
-
-  (gnus-define-keys (gnus-summary-thread-map "T" gnus-summary-mode-map)
-    "k" gnus-summary-kill-thread
-    "l" gnus-summary-lower-thread
-    "i" gnus-summary-raise-thread
-    "T" gnus-summary-toggle-threads
-    "t" gnus-summary-rethread-current
-    "^" gnus-summary-reparent-thread
-    "s" gnus-summary-show-thread
-    "S" gnus-summary-show-all-threads
-    "h" gnus-summary-hide-thread
-    "H" gnus-summary-hide-all-threads
-    "n" gnus-summary-next-thread
-    "p" gnus-summary-prev-thread
-    "u" gnus-summary-up-thread
-    "o" gnus-summary-top-thread
-    "d" gnus-summary-down-thread
-    "#" gnus-uu-mark-thread
-    "\M-#" gnus-uu-unmark-thread)
-
-  (gnus-define-keys (gnus-summary-buffer-map "Y" gnus-summary-mode-map)
-    "g" gnus-summary-prepare
-    "c" gnus-summary-insert-cached-articles
-    "d" gnus-summary-insert-dormant-articles)
-
-  (gnus-define-keys (gnus-summary-exit-map "Z" gnus-summary-mode-map)
-    "c" gnus-summary-catchup-and-exit
-    "C" gnus-summary-catchup-all-and-exit
-    "E" gnus-summary-exit-no-update
-    "J" gnus-summary-jump-to-other-group
-    "Q" gnus-summary-exit
-    "Z" gnus-summary-exit
-    "n" gnus-summary-catchup-and-goto-next-group
-    "R" gnus-summary-reselect-current-group
-    "G" gnus-summary-rescan-group
-    "N" gnus-summary-next-group
-    "s" gnus-summary-save-newsrc
-    "P" gnus-summary-prev-group)
-
-  (gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
-    " " gnus-summary-next-page
-    "n" gnus-summary-next-page
-    "\177" gnus-summary-prev-page
-    [delete] gnus-summary-prev-page
-    "p" gnus-summary-prev-page
-    "\r" gnus-summary-scroll-up
-    "\M-\r" gnus-summary-scroll-down
-    "<" gnus-summary-beginning-of-article
-    ">" gnus-summary-end-of-article
-    "b" gnus-summary-beginning-of-article
-    "e" gnus-summary-end-of-article
-    "^" gnus-summary-refer-parent-article
-    "r" gnus-summary-refer-parent-article
-    "D" gnus-summary-enter-digest-group
-    "R" gnus-summary-refer-references
-    "T" gnus-summary-refer-thread
-    "g" gnus-summary-show-article
-    "s" gnus-summary-isearch-article
-    "P" gnus-summary-print-article
-    "M" gnus-mailing-list-insinuate
-    "t" gnus-article-babel)
-
-  (gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map)
-    "b" gnus-article-add-buttons
-    "B" gnus-article-add-buttons-to-head
-    "o" gnus-article-treat-overstrike
-    "e" gnus-article-emphasize
-    "w" gnus-article-fill-cited-article
-    "Q" gnus-article-fill-long-lines
-    "C" gnus-article-capitalize-sentences
-    "c" gnus-article-remove-cr
-    "Z" gnus-article-decode-HZ
-    "h" gnus-article-wash-html
-    "u" gnus-article-unsplit-urls
-    "f" gnus-article-display-x-face
-    "l" gnus-summary-stop-page-breaking
-    "r" gnus-summary-caesar-message
-    "m" gnus-summary-morse-message
-    "t" gnus-summary-toggle-header
-    "g" gnus-treat-smiley
-    "v" gnus-summary-verbose-headers
-    "m" gnus-summary-toggle-mime
-    "a" gnus-article-strip-headers-in-body ;; mnemonic: wash archive
-    "p" gnus-article-verify-x-pgp-sig
-    "d" gnus-article-treat-dumbquotes
-    "k" gnus-article-outlook-deuglify-article) ;; mnemonic: outloo*k*
-
-  (gnus-define-keys (gnus-summary-wash-deuglify-map "Y" gnus-summary-wash-map)
-    ;; mnemonic: deuglif*Y*
-    "u" gnus-outlook-unwrap-lines
-    "a" gnus-outlook-repair-attribution
-    "c" gnus-outlook-rearrange-citation
-    "f" gnus-article-outlook-deuglify-article) ;; mnemonic: full deuglify
-
-  (gnus-define-keys (gnus-summary-wash-hide-map "W" gnus-summary-wash-map)
-    "a" gnus-article-hide
-    "h" gnus-article-hide-headers
-    "b" gnus-article-hide-boring-headers
-    "s" gnus-article-hide-signature
-    "c" gnus-article-hide-citation
-    "C" gnus-article-hide-citation-in-followups
-    "l" gnus-article-hide-list-identifiers
-    "p" gnus-article-hide-pgp
-    "B" gnus-article-strip-banner
-    "P" gnus-article-hide-pem
-    "\C-c" gnus-article-hide-citation-maybe)
-
-  (gnus-define-keys (gnus-summary-wash-highlight-map "H" gnus-summary-wash-map)
-    "a" gnus-article-highlight
-    "h" gnus-article-highlight-headers
-    "c" gnus-article-highlight-citation
-    "s" gnus-article-highlight-signature)
-
-  (gnus-define-keys (gnus-summary-wash-header-map "G" gnus-summary-wash-map)
-    "f" gnus-article-treat-fold-headers
-    "u" gnus-article-treat-unfold-headers
-    "n" gnus-article-treat-fold-newsgroups)
-
-  (gnus-define-keys (gnus-summary-wash-display-map "D" gnus-summary-wash-map)
-    "x" gnus-article-display-x-face
-    "d" gnus-article-display-face
-    "s" gnus-treat-smiley
-    "D" gnus-article-remove-images
-    "f" gnus-treat-from-picon
-    "m" gnus-treat-mail-picon
-    "n" gnus-treat-newsgroups-picon)
-
-  (gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map)
-    "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
-    "s" gnus-article-date-user)
-
-  (gnus-define-keys (gnus-summary-wash-empty-map "E" gnus-summary-wash-map)
-    "t" gnus-article-remove-trailing-blank-lines
-    "l" gnus-article-strip-leading-blank-lines
-    "m" gnus-article-strip-multiple-blank-lines
-    "a" gnus-article-strip-blank-lines
-    "A" gnus-article-strip-all-blank-lines
-    "s" gnus-article-strip-leading-space
-    "e" gnus-article-strip-trailing-space
-    "w" gnus-article-remove-leading-whitespace)
-
-  (gnus-define-keys (gnus-summary-help-map "H" gnus-summary-mode-map)
-    "v" gnus-version
-    "f" gnus-summary-fetch-faq
-    "d" gnus-summary-describe-group
-    "h" gnus-summary-describe-briefly
-    "i" gnus-info-find-node
-    "c" gnus-group-fetch-charter
-    "C" gnus-group-fetch-control)
-
-  (gnus-define-keys (gnus-summary-backend-map "B" gnus-summary-mode-map)
-    "e" gnus-summary-expire-articles
-    "\M-\C-e" gnus-summary-expire-articles-now
-    "\177" gnus-summary-delete-article
-    [delete] gnus-summary-delete-article
-    [backspace] gnus-summary-delete-article
-    "m" gnus-summary-move-article
-    "r" gnus-summary-respool-article
-    "w" gnus-summary-edit-article
-    "c" gnus-summary-copy-article
-    "B" gnus-summary-crosspost-article
-    "q" gnus-summary-respool-query
-    "t" gnus-summary-respool-trace
-    "i" gnus-summary-import-article
-    "I" gnus-summary-create-article
-    "p" gnus-summary-article-posted-p)
-
-  (gnus-define-keys (gnus-summary-save-map "O" gnus-summary-mode-map)
-    "o" gnus-summary-save-article
-    "m" gnus-summary-save-article-mail
-    "F" gnus-summary-write-article-file
-    "r" gnus-summary-save-article-rmail
-    "f" gnus-summary-save-article-file
-    "b" gnus-summary-save-article-body-file
-    "h" gnus-summary-save-article-folder
-    "v" gnus-summary-save-article-vm
-    "p" gnus-summary-pipe-output
-    "P" gnus-summary-muttprint
-    "s" gnus-soup-add-article)
-
-  (gnus-define-keys (gnus-summary-mime-map "K" gnus-summary-mode-map)
-    "b" gnus-summary-display-buttonized
-    "m" gnus-summary-repair-multipart
-    "v" gnus-article-view-part
-    "o" gnus-article-save-part
-    "c" gnus-article-copy-part
-    "C" gnus-article-view-part-as-charset
-    "e" gnus-article-view-part-externally
-    "E" gnus-article-encrypt-body
-    "i" gnus-article-inline-part
-    "|" gnus-article-pipe-part)
-
-  (gnus-define-keys (gnus-uu-mark-map "P" gnus-summary-mark-map)
-    "p" gnus-summary-mark-as-processable
-    "u" gnus-summary-unmark-as-processable
-    "U" gnus-summary-unmark-all-processable
-    "v" gnus-uu-mark-over
-    "s" gnus-uu-mark-series
-    "r" gnus-uu-mark-region
-    "g" gnus-uu-unmark-region
-    "R" gnus-uu-mark-by-regexp
-    "G" gnus-uu-unmark-by-regexp
-    "t" gnus-uu-mark-thread
-    "T" gnus-uu-unmark-thread
-    "a" gnus-uu-mark-all
-    "b" gnus-uu-mark-buffer
-    "S" gnus-uu-mark-sparse
-    "k" gnus-summary-kill-process-mark
-    "y" gnus-summary-yank-process-mark
-    "w" gnus-summary-save-process-mark
-    "i" gnus-uu-invert-processable)
-
-  (gnus-define-keys (gnus-uu-extract-map "X" gnus-summary-mode-map)
-    ;;"x" gnus-uu-extract-any
-    "m" gnus-summary-save-parts
-    "u" gnus-uu-decode-uu
-    "U" gnus-uu-decode-uu-and-save
-    "s" gnus-uu-decode-unshar
-    "S" gnus-uu-decode-unshar-and-save
-    "o" gnus-uu-decode-save
-    "O" gnus-uu-decode-save
-    "b" gnus-uu-decode-binhex
-    "B" gnus-uu-decode-binhex
-    "p" gnus-uu-decode-postscript
-    "P" gnus-uu-decode-postscript-and-save)
-
-  (gnus-define-keys
-      (gnus-uu-extract-view-map "v" gnus-uu-extract-map)
-    "u" gnus-uu-decode-uu-view
-    "U" gnus-uu-decode-uu-and-save-view
-    "s" gnus-uu-decode-unshar-view
-    "S" gnus-uu-decode-unshar-and-save-view
-    "o" gnus-uu-decode-save-view
-    "O" gnus-uu-decode-save-view
-    "b" gnus-uu-decode-binhex-view
-    "B" gnus-uu-decode-binhex-view
-    "p" gnus-uu-decode-postscript-view
-    "P" gnus-uu-decode-postscript-and-save-view))
+(gnus-define-keys (gnus-summary-mark-map "M" gnus-summary-mode-map)
+  "t" gnus-summary-tick-article-forward
+  "!" gnus-summary-tick-article-forward
+  "d" gnus-summary-mark-as-read-forward
+  "r" gnus-summary-mark-as-read-forward
+  "c" gnus-summary-clear-mark-forward
+  " " gnus-summary-clear-mark-forward
+  "e" gnus-summary-mark-as-expirable
+  "x" gnus-summary-mark-as-expirable
+  "?" gnus-summary-mark-as-dormant
+  "b" gnus-summary-set-bookmark
+  "B" gnus-summary-remove-bookmark
+  "#" gnus-summary-mark-as-processable
+  "\M-#" gnus-summary-unmark-as-processable
+  "S" gnus-summary-limit-include-expunged
+  "C" gnus-summary-catchup
+  "H" gnus-summary-catchup-to-here
+  "h" gnus-summary-catchup-from-here
+  "\C-c" gnus-summary-catchup-all
+  "k" gnus-summary-kill-same-subject-and-select
+  "K" gnus-summary-kill-same-subject
+  "P" gnus-uu-mark-map)
+
+(gnus-define-keys (gnus-summary-mscore-map "V" gnus-summary-mark-map)
+  "c" gnus-summary-clear-above
+  "u" gnus-summary-tick-above
+  "m" gnus-summary-mark-above
+  "k" gnus-summary-kill-below)
+
+(gnus-define-keys (gnus-summary-limit-map "/" gnus-summary-mode-map)
+  "/" gnus-summary-limit-to-subject
+  "n" gnus-summary-limit-to-articles
+  "w" gnus-summary-pop-limit
+  "s" gnus-summary-limit-to-subject
+  "a" gnus-summary-limit-to-author
+  "u" gnus-summary-limit-to-unread
+  "m" gnus-summary-limit-to-marks
+  "M" gnus-summary-limit-exclude-marks
+  "v" gnus-summary-limit-to-score
+  "*" gnus-summary-limit-include-cached
+  "D" gnus-summary-limit-include-dormant
+  "T" gnus-summary-limit-include-thread
+  "d" gnus-summary-limit-exclude-dormant
+  "t" gnus-summary-limit-to-age
+  "." gnus-summary-limit-to-unseen
+  "x" gnus-summary-limit-to-extra
+  "p" gnus-summary-limit-to-display-predicate
+  "E" gnus-summary-limit-include-expunged
+  "c" gnus-summary-limit-exclude-childless-dormant
+  "C" gnus-summary-limit-mark-excluded-as-read
+  "o" gnus-summary-insert-old-articles
+  "N" gnus-summary-insert-new-articles)
+
+(gnus-define-keys (gnus-summary-goto-map "G" gnus-summary-mode-map)
+  "n" gnus-summary-next-unread-article
+  "p" gnus-summary-prev-unread-article
+  "N" gnus-summary-next-article
+  "P" gnus-summary-prev-article
+  "\C-n" gnus-summary-next-same-subject
+  "\C-p" gnus-summary-prev-same-subject
+  "\M-n" gnus-summary-next-unread-subject
+  "\M-p" gnus-summary-prev-unread-subject
+  "f" gnus-summary-first-unread-article
+  "b" gnus-summary-best-unread-article
+  "j" gnus-summary-goto-article
+  "g" gnus-summary-goto-subject
+  "l" gnus-summary-goto-last-article
+  "o" gnus-summary-pop-article)
+
+(gnus-define-keys (gnus-summary-thread-map "T" gnus-summary-mode-map)
+  "k" gnus-summary-kill-thread
+  "l" gnus-summary-lower-thread
+  "i" gnus-summary-raise-thread
+  "T" gnus-summary-toggle-threads
+  "t" gnus-summary-rethread-current
+  "^" gnus-summary-reparent-thread
+  "s" gnus-summary-show-thread
+  "S" gnus-summary-show-all-threads
+  "h" gnus-summary-hide-thread
+  "H" gnus-summary-hide-all-threads
+  "n" gnus-summary-next-thread
+  "p" gnus-summary-prev-thread
+  "u" gnus-summary-up-thread
+  "o" gnus-summary-top-thread
+  "d" gnus-summary-down-thread
+  "#" gnus-uu-mark-thread
+  "\M-#" gnus-uu-unmark-thread)
+
+(gnus-define-keys (gnus-summary-buffer-map "Y" gnus-summary-mode-map)
+  "g" gnus-summary-prepare
+  "c" gnus-summary-insert-cached-articles
+  "d" gnus-summary-insert-dormant-articles)
+
+(gnus-define-keys (gnus-summary-exit-map "Z" gnus-summary-mode-map)
+  "c" gnus-summary-catchup-and-exit
+  "C" gnus-summary-catchup-all-and-exit
+  "E" gnus-summary-exit-no-update
+  "J" gnus-summary-jump-to-other-group
+  "Q" gnus-summary-exit
+  "Z" gnus-summary-exit
+  "n" gnus-summary-catchup-and-goto-next-group
+  "R" gnus-summary-reselect-current-group
+  "G" gnus-summary-rescan-group
+  "N" gnus-summary-next-group
+  "s" gnus-summary-save-newsrc
+  "P" gnus-summary-prev-group)
+
+(gnus-define-keys (gnus-summary-article-map "A" gnus-summary-mode-map)
+  " " gnus-summary-next-page
+  "n" gnus-summary-next-page
+  "\177" gnus-summary-prev-page
+  [delete] gnus-summary-prev-page
+  "p" gnus-summary-prev-page
+  "\r" gnus-summary-scroll-up
+  "\M-\r" gnus-summary-scroll-down
+  "<" gnus-summary-beginning-of-article
+  ">" gnus-summary-end-of-article
+  "b" gnus-summary-beginning-of-article
+  "e" gnus-summary-end-of-article
+  "^" gnus-summary-refer-parent-article
+  "r" gnus-summary-refer-parent-article
+  "D" gnus-summary-enter-digest-group
+  "R" gnus-summary-refer-references
+  "T" gnus-summary-refer-thread
+  "g" gnus-summary-show-article
+  "s" gnus-summary-isearch-article
+  "P" gnus-summary-print-article
+  "M" gnus-mailing-list-insinuate
+  "t" gnus-article-babel)
+
+(gnus-define-keys (gnus-summary-wash-map "W" gnus-summary-mode-map)
+  "b" gnus-article-add-buttons
+  "B" gnus-article-add-buttons-to-head
+  "o" gnus-article-treat-overstrike
+  "e" gnus-article-emphasize
+  "w" gnus-article-fill-cited-article
+  "Q" gnus-article-fill-long-lines
+  "C" gnus-article-capitalize-sentences
+  "c" gnus-article-remove-cr
+  "Z" gnus-article-decode-HZ
+  "h" gnus-article-wash-html
+  "u" gnus-article-unsplit-urls
+  "f" gnus-article-display-x-face
+  "l" gnus-summary-stop-page-breaking
+  "r" gnus-summary-caesar-message
+  "m" gnus-summary-morse-message
+  "t" gnus-summary-toggle-header
+  "g" gnus-treat-smiley
+  "v" gnus-summary-verbose-headers
+  "m" gnus-summary-toggle-mime
+  "a" gnus-article-strip-headers-in-body ;; mnemonic: wash archive
+  "p" gnus-article-verify-x-pgp-sig
+  "d" gnus-article-treat-dumbquotes)
+
+(gnus-define-keys (gnus-summary-wash-deuglify-map "Y" gnus-summary-wash-map)
+  ;; mnemonic: deuglif*Y*
+  "u" gnus-article-outlook-unwrap-lines
+  "a" gnus-article-outlook-repair-attribution
+  "c" gnus-article-outlook-rearrange-citation
+  "f" gnus-article-outlook-deuglify-article) ;; mnemonic: full deuglify
+
+(gnus-define-keys (gnus-summary-wash-hide-map "W" gnus-summary-wash-map)
+  "a" gnus-article-hide
+  "h" gnus-article-hide-headers
+  "b" gnus-article-hide-boring-headers
+  "s" gnus-article-hide-signature
+  "c" gnus-article-hide-citation
+  "C" gnus-article-hide-citation-in-followups
+  "l" gnus-article-hide-list-identifiers
+  "p" gnus-article-hide-pgp
+  "B" gnus-article-strip-banner
+  "P" gnus-article-hide-pem
+  "\C-c" gnus-article-hide-citation-maybe)
+
+(gnus-define-keys (gnus-summary-wash-highlight-map "H" gnus-summary-wash-map)
+  "a" gnus-article-highlight
+  "h" gnus-article-highlight-headers
+  "c" gnus-article-highlight-citation
+  "s" gnus-article-highlight-signature)
+
+(gnus-define-keys (gnus-summary-wash-header-map "G" gnus-summary-wash-map)
+  "f" gnus-article-treat-fold-headers
+  "u" gnus-article-treat-unfold-headers
+  "n" gnus-article-treat-fold-newsgroups)
+
+(gnus-define-keys (gnus-summary-wash-display-map "D" gnus-summary-wash-map)
+  "x" gnus-article-display-x-face
+  "d" gnus-article-display-face
+  "s" gnus-treat-smiley
+  "D" gnus-article-remove-images
+  "f" gnus-treat-from-picon
+  "m" gnus-treat-mail-picon
+  "n" gnus-treat-newsgroups-picon)
+
+(gnus-define-keys (gnus-summary-wash-time-map "T" gnus-summary-wash-map)
+  "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
+  "s" gnus-article-date-user)
+
+(gnus-define-keys (gnus-summary-wash-empty-map "E" gnus-summary-wash-map)
+  "t" gnus-article-remove-trailing-blank-lines
+  "l" gnus-article-strip-leading-blank-lines
+  "m" gnus-article-strip-multiple-blank-lines
+  "a" gnus-article-strip-blank-lines
+  "A" gnus-article-strip-all-blank-lines
+  "s" gnus-article-strip-leading-space
+  "e" gnus-article-strip-trailing-space
+  "w" gnus-article-remove-leading-whitespace)
+
+(gnus-define-keys (gnus-summary-help-map "H" gnus-summary-mode-map)
+  "v" gnus-version
+  "f" gnus-summary-fetch-faq
+  "d" gnus-summary-describe-group
+  "h" gnus-summary-describe-briefly
+  "i" gnus-info-find-node
+  "c" gnus-group-fetch-charter
+  "C" gnus-group-fetch-control)
+
+(gnus-define-keys (gnus-summary-backend-map "B" gnus-summary-mode-map)
+  "e" gnus-summary-expire-articles
+  "\M-\C-e" gnus-summary-expire-articles-now
+  "\177" gnus-summary-delete-article
+  [delete] gnus-summary-delete-article
+  [backspace] gnus-summary-delete-article
+  "m" gnus-summary-move-article
+  "r" gnus-summary-respool-article
+  "w" gnus-summary-edit-article
+  "c" gnus-summary-copy-article
+  "B" gnus-summary-crosspost-article
+  "q" gnus-summary-respool-query
+  "t" gnus-summary-respool-trace
+  "i" gnus-summary-import-article
+  "I" gnus-summary-create-article
+  "p" gnus-summary-article-posted-p)
+
+(gnus-define-keys (gnus-summary-save-map "O" gnus-summary-mode-map)
+  "o" gnus-summary-save-article
+  "m" gnus-summary-save-article-mail
+  "F" gnus-summary-write-article-file
+  "r" gnus-summary-save-article-rmail
+  "f" gnus-summary-save-article-file
+  "b" gnus-summary-save-article-body-file
+  "h" gnus-summary-save-article-folder
+  "v" gnus-summary-save-article-vm
+  "p" gnus-summary-pipe-output
+  "P" gnus-summary-muttprint
+  "s" gnus-soup-add-article)
+
+(gnus-define-keys (gnus-summary-mime-map "K" gnus-summary-mode-map)
+  "b" gnus-summary-display-buttonized
+  "m" gnus-summary-repair-multipart
+  "v" gnus-article-view-part
+  "o" gnus-article-save-part
+  "c" gnus-article-copy-part
+  "C" gnus-article-view-part-as-charset
+  "e" gnus-article-view-part-externally
+  "E" gnus-article-encrypt-body
+  "i" gnus-article-inline-part
+  "|" gnus-article-pipe-part)
+
+(gnus-define-keys (gnus-uu-mark-map "P" gnus-summary-mark-map)
+  "p" gnus-summary-mark-as-processable
+  "u" gnus-summary-unmark-as-processable
+  "U" gnus-summary-unmark-all-processable
+  "v" gnus-uu-mark-over
+  "s" gnus-uu-mark-series
+  "r" gnus-uu-mark-region
+  "g" gnus-uu-unmark-region
+  "R" gnus-uu-mark-by-regexp
+  "G" gnus-uu-unmark-by-regexp
+  "t" gnus-uu-mark-thread
+  "T" gnus-uu-unmark-thread
+  "a" gnus-uu-mark-all
+  "b" gnus-uu-mark-buffer
+  "S" gnus-uu-mark-sparse
+  "k" gnus-summary-kill-process-mark
+  "y" gnus-summary-yank-process-mark
+  "w" gnus-summary-save-process-mark
+  "i" gnus-uu-invert-processable)
+
+(gnus-define-keys (gnus-uu-extract-map "X" gnus-summary-mode-map)
+  ;;"x" gnus-uu-extract-any
+  "m" gnus-summary-save-parts
+  "u" gnus-uu-decode-uu
+  "U" gnus-uu-decode-uu-and-save
+  "s" gnus-uu-decode-unshar
+  "S" gnus-uu-decode-unshar-and-save
+  "o" gnus-uu-decode-save
+  "O" gnus-uu-decode-save
+  "b" gnus-uu-decode-binhex
+  "B" gnus-uu-decode-binhex
+  "p" gnus-uu-decode-postscript
+  "P" gnus-uu-decode-postscript-and-save)
+
+(gnus-define-keys
+    (gnus-uu-extract-view-map "v" gnus-uu-extract-map)
+  "u" gnus-uu-decode-uu-view
+  "U" gnus-uu-decode-uu-and-save-view
+  "s" gnus-uu-decode-unshar-view
+  "S" gnus-uu-decode-unshar-and-save-view
+  "o" gnus-uu-decode-save-view
+  "O" gnus-uu-decode-save-view
+  "b" gnus-uu-decode-binhex-view
+  "B" gnus-uu-decode-binhex-view
+  "p" gnus-uu-decode-postscript-view
+  "P" gnus-uu-decode-postscript-and-save-view)
 
 (defvar gnus-article-post-menu nil)
 
@@ -2120,9 +2118,9 @@ gnus-summary-show-article-from-menu-as-charset-%s" cs))))
              ["Verify X-PGP-Sig" gnus-article-verify-x-pgp-sig t]
              ["HZ" gnus-article-decode-HZ t]
              ("(Outlook) Deuglify"
-              ["Unwrap lines" gnus-outlook-unwrap-lines t]
-              ["Repair attribution" gnus-outlook-repair-attribution t]
-              ["Rearrange citation" gnus-outlook-rearrange-citation t]
+              ["Unwrap lines" gnus-article-outlook-unwrap-lines t]
+              ["Repair attribution" gnus-article-outlook-repair-attribution t]
+              ["Rearrange citation" gnus-article-outlook-rearrange-citation t]
               ["Full (Outlook) deuglify"
                gnus-article-outlook-deuglify-article t])
              )
@@ -5231,10 +5229,10 @@ If SELECT-ARTICLES, only select those articles from GROUP."
       (setq gnus-newsgroup-unselected
            (gnus-sorted-difference gnus-newsgroup-unreads articles))
       (when gnus-alter-articles-to-read-function
-       (setq gnus-newsgroup-unreads
+       (setq articles
              (sort
               (funcall gnus-alter-articles-to-read-function
-                       gnus-newsgroup-name gnus-newsgroup-unreads)
+                       gnus-newsgroup-name articles)
               '<)))
       articles)))
 
index db2405d..fc8698a 100644 (file)
@@ -2618,7 +2618,7 @@ with some simple extensions.
 %V   Total thread score (number).
 %P   The line number (number).
 %O   Download mark (character).
-%C   If present, indicates desired cursor position
+%*   If present, indicates desired cursor position
      (instead of after first colon).
 %u   User defined specifier.  The next character in the format string should
      be a letter.  Gnus will call the function gnus-user-format-function-X,
index 4f5c4e0..f741794 100644 (file)
@@ -10,28 +10,42 @@ set PWD=
 \r
 if "%1" == "" goto usage\r
 \r
+rem Directory where the info files are installed\r
+set GNUS_INFO_DIR=%1\..\..\xemacs-packages\info\r
+\r
 set emacs=xemacs.exe\r
 if "%2" == "" set copy="false"\r
 if "%2" == "copy" set copy=true\r
 if "%2" == "/copy" set copy=true\r
 \r
+set EMACSBATCH=call %1\%emacs% -batch -q -no-site-file\r
+\r
 cd lisp\r
-call %1\%emacs% -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+%EMACSBATCH% -l ./dgnushack.el -f dgnushack-compile\r
 if not %copy%==true goto info\r
 attrib -r %1\..\..\xemacs-packages\lisp\gnus\*.*\r
 copy *.el? %1\..\..\xemacs-packages\lisp\gnus\r
 \r
 :info\r
-set EMACSINFO=call %1\%emacs% -no-site-file -no-init-file -batch -q -l infohack.el -f batch-makeinfo\r
+set EMACSINFO=%EMACSBATCH% -l infohack.el -f batch-makeinfo\r
 cd ..\texi\r
 %EMACSINFO% message.texi\r
 %EMACSINFO% emacs-mime.texi\r
 %EMACSINFO% gnus.texi\r
 if not %copy%==true goto done\r
-copy gnus %1\..\..\xemacs-packages\info\r
-copy gnus-?? %1\..\..\xemacs-packages\info\r
-copy message %1\..\..\xemacs-packages\info\r
-copy emacs-mime %1\..\..\xemacs-packages\info\r
+copy gnus       %GNUS_INFO_DIR%\r
+copy gnus-?     %GNUS_INFO_DIR%\r
+copy gnus-??    %GNUS_INFO_DIR%\r
+copy message    %GNUS_INFO_DIR%\r
+copy message-?  %GNUS_INFO_DIR%\r
+copy emacs-mime %GNUS_INFO_DIR%\r
+copy sieve      %GNUS_INFO_DIR%\r
+copy pgg        %GNUS_INFO_DIR%\r
+echo Maybe you should add the following line to %GNUS_INFO_DIR%\dir:\r
+echo.\r
+echo * PGG: (pgg).             Emacs interface to various PGP implementations.\r
+echo * Sieve: (sieve). Managing Sieve scripts in Emacs.\r
+echo.\r
 \r
 :etc\r
 cd ..\etc\r
@@ -57,4 +71,6 @@ echo                 set W3DIR=C:\Progra~1\XEmacs\xemacs-packages\lisp\w3
 rem Restore PWD so whoever called this batch file doesn't get confused\r
 set PWD=%GNUS_PWD_SAVE%\r
 set GNUS_PWD_SAVE=\r
+set EMACSBATCH=\r
+set GNUS_INFO_DIR=\r
 :end\r
index c4c8cc4..cbd49df 100755 (executable)
--- a/make.bat
+++ b/make.bat
@@ -28,28 +28,41 @@ set PWD=
 \r
 if "%1" == "" goto usage\r
 \r
+rem Directory where the info files are installed\r
+set GNUS_INFO_DIR=%1\info\r
+\r
 rem Emacs 20.7 no longer includes emacs.bat. Use emacs.exe if the batch file is\r
 rem not present -- this also fixes the problem about too many parameters on Win9x.\r
 set emacs=emacs.exe\r
 if exist %1\bin\emacs.bat set emacs=emacs.bat\r
+set EMACSBATCH=call %1\bin\%emacs% -no-site-file -batch -q\r
 \r
 cd lisp\r
-call %1\bin\%emacs% -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+%EMACSBATCH% -l ./dgnushack.el -f dgnushack-compile\r
 if not "%2" == "/copy" goto info\r
 attrib -r %1\lisp\gnus\*\r
 copy *.el* %1\lisp\gnus\r
 \r
 :info\r
-set EMACSINFO=call %1\bin\%emacs% -no-site-file -no-init-file -batch -q -l infohack.el -f batch-makeinfo\r
+set EMACSINFO=%EMACSBATCH% -l infohack.el -f batch-makeinfo\r
 cd ..\texi\r
 %EMACSINFO% message.texi\r
 %EMACSINFO% emacs-mime.texi\r
 %EMACSINFO% gnus.texi\r
 if not "%2" == "/copy" goto done\r
-copy gnus %1\info\r
-copy gnus-?? %1\info\r
-copy message %1\info\r
-copy emacs-mime %1\info\r
+copy gnus       %GNUS_INFO_DIR%\r
+copy gnus-?     %GNUS_INFO_DIR%\r
+copy gnus-??    %GNUS_INFO_DIR%\r
+copy message    %GNUS_INFO_DIR%\r
+copy message-?  %GNUS_INFO_DIR%\r
+copy emacs-mime %GNUS_INFO_DIR%\r
+copy sieve      %GNUS_INFO_DIR%\r
+copy pgg        %GNUS_INFO_DIR%\r
+echo Maybe you should add the following line to %GNUS_INFO_DIR%\dir:\r
+echo.\r
+echo * PGG: (pgg).             Emacs interface to various PGP implementations.\r
+echo * Sieve: (sieve). Managing Sieve scripts in Emacs.\r
+echo.\r
 \r
 :etc\r
 cd ..\etc\r
@@ -74,4 +87,6 @@ echo                 set W3DIR=d:\lisp\w3-4.0pre46\lisp
 rem Restore PWD so whoever called this batch file doesn't get confused\r
 set PWD=%GNUS_PWD_SAVE%\r
 set GNUS_PWD_SAVE=\r
+set EMACSBATCH=\r
+set GNUS_INFO_DIR=\r
 :end\r
index 6c71c67..4fbffa7 100644 (file)
@@ -1,3 +1,21 @@
+2003-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Window Layout): Fixed braces in example.
+
+2003-01-13  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus.texi (Article Washing): Use new function names in
+       `deuglify.el'.  Addition.
+
+2003-01-13  Simon Josefsson  <jas@extundo.com>
+
+       * gnus.texi (X-Face): Fix.
+
+       * message.texi (Security): Fix.
+
+       * gnus.texi (Security): Fix.
+       (Signing and encrypting): Fix.
+
 2003-01-12  Teodor Zlatanov  <tzz@lifelogs.com>
 
        * gnus.texi (Filtering Spam Using The Spam ELisp Package): removed
index 0e5f6eb..7e205f3 100644 (file)
@@ -8138,17 +8138,17 @@ Sm*rtq**t*s \e$B$O$b$C$HB?$/$N0zMQJ8;z$rDs6!$9$k$?$a$K!"%^"#"#"#%="#"#$,>!<j\e(B
 \e$B$,$"$k$Y$-$H$3$m$K\e(B @code{\222} \e$B$d\e(B @code{\264} \e$B$N$h$&$J$b$N$,8+$($F$7$^$C\e(B
 \e$B$?$i!"@vBu$7$F$_$F2<$5$$!#\e(B
 
-@item W k
-@kindex W k (\e$B35N,\e(B)
+@item W Y f
 @kindex W Y f (\e$B35N,\e(B)
 @findex gnus-article-outlook-deuglify-article
 @cindex Outlook Express
-\e$B2u$l$?\e(B Outlook (Express) \e$B$N5-;v$r\e(B deuglify \e$B$7$^\e(B
-\e$B$9\e(B (@code{gnus-article-outlook-deuglify-article})\e$B!#\e(B
+\e$B2u$l$?\e(B Outlook (Express) \e$B$N5-;v$r40A4$K\e(B deuglify (sm*rtq**t*s \e$B$r=hM}!"9T\e(B
+\e$B$N@^$jJV$7$r2r=|!"B0@-9T$N=$I|$H0zMQ9T$NJB$YBX$(\e(B) \e$B$7$^$9!#\e(B
+(@code{gnus-article-outlook-deuglify-article})\e$B!#\e(B
 
 @item W Y u
 @kindex W Y u (\e$B35N,\e(B)
-@findex gnus-outlook-unwrap-lines
+@findex gnus-article-outlook-unwrap-lines
 \e$B@^$jJV$5$l$?0zMQ9T$N$h$&$K8+$($k9T$N@^$jJV$7$r2r$-$^$9!#@^$jJV$7$,2r$+$l\e(B
 \e$B$?9T$N:G>.$*$h$S:GBg$ND9$5$rI=\e(B
 \e$B$9\e(B @code{gnus-outlook-deuglify-unwrap-min} \e$B$*$h\e(B
@@ -8158,15 +8158,15 @@ Sm*rtq**t*s \e$B$O$b$C$HB?$/$N0zMQJ8;z$rDs6!$9$k$?$a$K!"%^"#"#"#%="#"#$,>!<j\e(B
 
 @item W Y a
 @kindex W Y a (\e$B35N,\e(B)
-@findex gnus-outlook-repair-attribution
+@findex gnus-article-outlook-repair-attribution
 \e$B2u$l$?B0@-9T$r=$I|$7$^$9!#\e(B
-(@code{gnus-outlook-repair-attribution})\e$B!#\e(B
+(@code{gnus-article-outlook-repair-attribution})\e$B!#\e(B
 
 @item W Y c
 @kindex W Y c (\e$B35N,\e(B)
-@findex gnus-outlook-rearrange-citation
+@findex gnus-article-outlook-rearrange-citation
 \e$B2u$l$?0zMQ$r!"%F%-%9%H$rJB$YD>$9$3$H$K$h$C$F=$I|$7$^$9!#\e(B
-(@code{gnus-outlook-rearrange-citation})\e$B!#\e(B
+(@code{gnus-article-outlook-rearrange-citation})\e$B!#\e(B
 
 @item W w
 @kindex W w (\e$B35N,\e(B)
@@ -9733,8 +9733,10 @@ however you need some external programs to get things to work:
 
 @enumerate
 @item
-To handle PGP messages, you have to install mailcrypt or gpg.el as
-well as a OpenPGP implementation (such as GnuPG).
+To handle PGP and PGP/MIME messages, you have to install an OpenPGP
+implementation such as GnuPG.  The lisp interface to GnuPG included
+with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), but
+Mailcrypt and gpg.el are also supported.
 
 @item
 To handle @sc{s/mime} message, you need to install OpenSSL.  OpenSSL 0.9.6
@@ -9757,6 +9759,18 @@ protocols. Otherwise, ask user.
 Option of decrypting encrypted parts.  @code{never}, no decryption;
 @code{always}, always decrypt; @code{known}, only decrypt known
 protocols. Otherwise, ask user.
+
+@item mml1991-use
+@vindex mml1991-use
+Symbol indicating elisp interface to OpenPGP implementation for PGP
+messages.  The default is @code{pgg}, but @code{mailcrypt} and
+@code{gpg} are also supported although deprecated.
+
+@item mml2015-use
+@vindex mml2015-use
+Symbol indicating elisp interface to OpenPGP implementation for
+PGP/MIME messages.  The default is @code{pgg}, but @code{mailcrypt}
+and @code{gpg} are also supported although deprecated.
 @end table
 @end ignore
 
@@ -9887,10 +9901,10 @@ Gnus \e$B$O%X%C%@!<$rA*$jJ,$1$k$?$a$KFs$D$NJQ?t$rMQ0U$7$F$$$^$9!#\e(B
 @end table
 
 @vindex gnus-sorted-header-list
-Gnus \e$B$O%X%C%@!<$NJB$YBX$(\e(B(sort)\e$B$b9T$$$^$9\e(B (\e$B$3$l$O%G%#%U%)%k%H$G9T$o$l$^\e(B
-\e$B$9\e(B)\e$B!#$3$NJB$YBX$($O\e(B @code{gnus-sorted-header-list} \e$BJQ?t$r@_Dj$9$k$3$H$G\e(B
-\e$B@)8f$9$k$3$H$,$G$-$^$9!#$3$l$O%X%C%@!<$r$I$&$$$&=g=x$GI=<($9$k$+$r;XDj$9\e(B
-\e$B$k@55,I=8=$N%j%9%H$G$9!#\e(B
+Gnus \e$B$O%X%C%@!<$NJB$YBX$(\e(B (sort) \e$B$b9T$$$^$9\e(B (\e$B$3$l$O%G%#%U%)%k%H$G9T$o$l\e(B
+\e$B$^$9\e(B)\e$B!#$3$NJB$YBX$($O\e(B @code{gnus-sorted-header-list} \e$BJQ?t$r@_Dj$9$k$3$H\e(B
+\e$B$G@)8f$9$k$3$H$,$G$-$^$9!#$3$l$O%X%C%@!<$r$I$&$$$&=g=x$GI=<($9$k$+$r;XDj\e(B
+\e$B$9$k@55,I=8=$N%j%9%H$G$9!#\e(B
 
 \e$BNc$($P!"5-;v$NCx<TL>$r:G=i$K!"<!$KI=Bj$rI=<($7$?$1$l$P!"$3$s$JIw\e(B
 \e$B$K$J$k$G$7$g$&!#\e(B
@@ -10895,10 +10909,6 @@ format or @sc{pgp/mime} or @sc{s/mime}.  For decoding such messages,
 see the @code{mm-verify-option} and @code{mm-decrypt-option} options
 (@pxref{Security}).
 
-For PGP, Gnus supports two external libraries, @sc{gpg.el} and
-@sc{Mailcrypt}, you need to install at least one of them.  The
-@sc{s/mime} support in Gnus requires the external program OpenSSL.
-
 Often, you would like to sign replies to people who send you signed
 messages.  Even more often, you might want to encrypt messages which
 are in reply to encrypted messages.  Gnus offers
@@ -10956,7 +10966,7 @@ Remove security related MML tags from message.
 
 @end table
 
-Also @xref{Security, ,Security, message, Message Manual}.
+@xref{Security, ,Security, message, Message Manual}, for more information.
 
 @end ignore
 @node Select Methods
@@ -20505,22 +20515,27 @@ gnus \e$B$O!"30$K=P$9%a%C%;!<%8$K\e(B X-Face \e$B%X%C%@!<$r4JC1$KA^F~$9$k$?$a$N!"JX
 \e$B$N\e(B @samp{pbm} \e$B$r$/$^$J$/C5$7$F%i%s%@%`$K0l$D$rA*$S<h$j!"%7%'%k%3%^%s\e(B
 \e$B%I\e(B @code{gnus-convert-pbm-to-x-face-command} \e$B$r;H$C$F$=$l$r\e(B X-Face \e$B$N7A\e(B
 \e$B<0$KJQ49$7$^$9!#\e(B@samp{pbm} \e$B%U%!%$%k$O\e(B 48\e$B!_\e(B48 \e$B2hAG$NBg$-$5$G$J$1$l$P$J$j\e(B
-\e$B$^$;$s!#\e(B
+\e$B$^$;$s!#$=$l$O\e(B X-Face \e$B%X%C%@!<$N%G!<%?$rJ8;zNs$GJV$7$^$9!#\e(B
+
+@findex gnus-insert-random-x-face-header
+@code{gnus-insert-random-x-face-header} \e$B$O\e(B @code{gnus-random-x-face} \e$B$r\e(B
+\e$B8F$s$G!"%i%s%@%`$K@8@.$5$l$?%G!<%?$K$h$k\e(B X-Face \e$B%X%C%@!<$rA^F~$7$^$9!#\e(B
 
+@findex gnus-x-face-from-file
 @code{gnus-x-face-from-file} \e$B$O%Q%i%a!<%?$H$7$F\e(B GIF \e$B%U%!%$%k$r<u$1<h$j!"\e(B
 \e$B%7%'%k%3%^%s%I\e(B @code{gnus-convert-image-to-x-face-command} \e$B$r;H$C$F$=$N\e(B
 \e$B%U%!%$%k$r\e(B X-Face \e$B$N7A<0$KJQ49$7$^$9!#\e(B
 
-\e$BA0<T$O0lHLE*$K;H$&$G$"$m$&4X?t$G$9!#0J2<$N$h$&$J$b$N\e(B
+\e$BFsHVL\$O0lHLE*$K;H$&$G$"$m$&4X?t$G$9!#0J2<$N$h$&$J$b$N\e(B
 \e$B$r\e(B @file{.gnus.el} \e$B%U%!%$%k$K=q$$$F2<$5$$\e(B:
 
 @lisp
 (setq message-required-news-headers
       (nconc message-required-news-headers
-             (list '(X-Face . gnus-random-x-face))))
+             (list '(X-Face . gnus-insert-random-x-face-header))))
 @end lisp
 
-\e$B8e<T$N4X?t$r;H$&$N$O!"$3$N$h$&$K$J$k$G$7$g$&\e(B:
+\e$B:G8e$N4X?t$r;H$&$N$O!"$3$N$h$&$K$J$k$G$7$g$&\e(B:
 
 @lisp
 (setq message-required-news-headers
index 95c8125..dc351a8 100644 (file)
@@ -8299,17 +8299,17 @@ an attempt to provide more quoting characters.  If you see something
 like @code{\222} or @code{\264} where you're expecting some kind of
 apostrophe or quotation mark, then try this wash.
 
-@item W k
-@kindex W k (Summary)
+@item W Y f
 @kindex W Y f (Summary)
 @findex gnus-article-outlook-deuglify-article
 @cindex Outlook Express
-Deuglify broken Outlook (Express) articles.
+Full deuglify of broken Outlook (Express) articles: Treat dumbquotes,
+unwrap lines, repair attribution and rearrange citation.
 (@code{gnus-article-outlook-deuglify-article}).
 
 @item W Y u
 @kindex W Y u (Summary)
-@findex gnus-outlook-unwrap-lines
+@findex gnus-article-outlook-unwrap-lines
 Unwrap lines that appear to be wrapped citation lines.  You can control
 what lines will be unwrapped by frobbing
 @code{gnus-outlook-deuglify-unwrap-min} and
@@ -8319,15 +8319,15 @@ maximum length of an unwrapped citation line.
 
 @item W Y a
 @kindex W Y a (Summary)
-@findex gnus-outlook-repair-attribution
-Repair a broken attribution line
-(@code{gnus-outlook-repair-attribution}).
+@findex gnus-article-outlook-repair-attribution
+Repair a broken attribution line.
+(@code{gnus-article-outlook-repair-attribution}).
 
 @item W Y c
 @kindex W Y c (Summary)
-@findex gnus-outlook-rearrange-citation
+@findex gnus-article-outlook-rearrange-citation
 Repair broken citations by rearranging the text.
-(@code{gnus-outlook-rearrange-citation}).
+(@code{gnus-article-outlook-rearrange-citation}).
 
 @item W w
 @kindex W w (Summary)
@@ -10251,8 +10251,10 @@ however you need some external programs to get things to work:
 
 @enumerate
 @item
-To handle PGP messages, you have to install mailcrypt or gpg.el as
-well as a OpenPGP implementation (such as GnuPG).
+To handle PGP and PGP/MIME messages, you have to install an OpenPGP
+implementation such as GnuPG.  The lisp interface to GnuPG included
+with Gnus is called PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), but
+Mailcrypt and gpg.el are also supported.
 
 @item
 To handle @sc{s/mime} message, you need to install OpenSSL.  OpenSSL 0.9.6
@@ -10276,6 +10278,18 @@ Option of decrypting encrypted parts.  @code{never}, no decryption;
 @code{always}, always decrypt; @code{known}, only decrypt known
 protocols. Otherwise, ask user.
 
+@item mml1991-use
+@vindex mml1991-use
+Symbol indicating elisp interface to OpenPGP implementation for PGP
+messages.  The default is @code{pgg}, but @code{mailcrypt} and
+@code{gpg} are also supported although deprecated.
+
+@item mml2015-use
+@vindex mml2015-use
+Symbol indicating elisp interface to OpenPGP implementation for
+PGP/MIME messages.  The default is @code{pgg}, but @code{mailcrypt}
+and @code{gpg} are also supported although deprecated.
+
 @end table
 
 @node Mailing List
@@ -11441,10 +11455,6 @@ format or @sc{pgp/mime} or @sc{s/mime}.  For decoding such messages,
 see the @code{mm-verify-option} and @code{mm-decrypt-option} options
 (@pxref{Security}).
 
-For PGP, Gnus supports two external libraries, @sc{gpg.el} and
-@sc{Mailcrypt}, you need to install at least one of them.  The
-@sc{s/mime} support in Gnus requires the external program OpenSSL.
-
 Often, you would like to sign replies to people who send you signed
 messages.  Even more often, you might want to encrypt messages which
 are in reply to encrypted messages.  Gnus offers
@@ -11502,7 +11512,7 @@ Remove security related MML tags from message.
 
 @end table
 
-Also @xref{Security, ,Security, message, Message Manual}.
+@xref{Security, ,Security, message, Message Manual}, for more information.
 
 @node Select Methods
 @chapter Select Methods
@@ -19912,7 +19922,7 @@ might be used:
                      (vertical 0.24
                                (if (buffer-live-p gnus-summary-buffer)
                                    '(summary 0.5))
-                               (group 1.0)))))
+                               (group 1.0))))
 @end lisp
 
 One common desire for a multiple frame split is to have a separate frame
@@ -20972,26 +20982,33 @@ Gnus provides a few convenience functions and variables to allow
 easier insertion of X-Face headers in outgoing messages.
 
 @findex gnus-random-x-face
-@code{gnus-random-x-face} goes through all the @samp{pbm} files
-in @code{gnus-x-face-directory} and picks one at random, and then
+@code{gnus-random-x-face} goes through all the @samp{pbm} files in
+@code{gnus-x-face-directory} and picks one at random, and then
 converts it to the X-Face format by using the
 @code{gnus-convert-pbm-to-x-face-command} shell command.  The
-@samp{pbm} files should be 48x48 pixels big.
+@samp{pbm} files should be 48x48 pixels big.  It returns the X-Face
+header data as a string.
+
+@findex gnus-insert-random-x-face-header
+@code{gnus-insert-random-x-face-header} calls
+@code{gnus-random-x-face} and inserts a @samp{X-Face} header with the
+randomly generated data.
 
+@findex gnus-x-face-from-file
 @code{gnus-x-face-from-file} takes a GIF file as the parameter, and then
 converts the file to X-Face format by using the
 @code{gnus-convert-image-to-x-face-command} shell command.
 
-Here's how you would typically use the former function.  Put something
+Here's how you would typically use the second function.  Put something
 like the following in your @file{.gnus.el} file:
 
 @lisp
 (setq message-required-news-headers
       (nconc message-required-news-headers
-             (list '(X-Face . gnus-random-x-face))))
+             (list '(X-Face . gnus-insert-random-x-face-header))))
 @end lisp
 
-Using the latter function would be something like this:
+Using the last function would be something like this:
 
 @lisp
 (setq message-required-news-headers
index ff1229a..e3179f9 100644 (file)
@@ -1020,10 +1020,10 @@ care in handling it.
 @subsection Using PGP/MIME
 
 @sc{pgp/mime} requires an external OpenPGP implementation, such as GNU
-Privacy Guard (@uref{http://www.gnupg.org/}).  It also requires an
-Emacs interface to it, such as Mailcrypt (available from
-@uref{http://www.nb.net/~lbudney/linux/software/mailcrypt.html}) or
-Florian Weimer's @code{gpg.el}.
+Privacy Guard (@uref{http://www.gnupg.org/}).  One Emacs interface to
+OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), is
+included, but Mailcrypt and Florian Weimer's @code{gpg.el} are also
+supported.
 
 @vindex gpg-temp-directory
 Note, if you are using the @code{gpg.el} you must make sure that the
index 7e19e4a..0ba64bb 100644 (file)
@@ -1006,10 +1006,10 @@ care in handling it.
 @subsection Using PGP/MIME
 
 @sc{pgp/mime} requires an external OpenPGP implementation, such as GNU
-Privacy Guard (@uref{http://www.gnupg.org/}).  It also requires an
-Emacs interface to it, such as Mailcrypt (available from
-@uref{http://www.nb.net/~lbudney/linux/software/mailcrypt.html}) or
-Florian Weimer's @code{gpg.el}.
+Privacy Guard (@uref{http://www.gnupg.org/}).  One Emacs interface to
+OpenPGP implementations, PGG (@pxref{Top, ,PGG, pgg, PGG Manual}), is
+included, but Mailcrypt and Florian Weimer's @code{gpg.el} are also
+supported.
 
 @vindex gpg-temp-directory
 Note, if you are using the @code{gpg.el} you must make sure that the