*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 12 Jul 1997 17:50:08 +0000 (17:50 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Sat, 12 Jul 1997 17:50:08 +0000 (17:50 +0000)
22 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-ems.el
lisp/gnus-gl.el
lisp/gnus-group.el
lisp/gnus-move.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-undo.el
lisp/gnus-uu.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/nnweb.el
texi/ChangeLog
texi/dir
texi/gnus.texi
texi/message.texi
todo

index e6309c2..3171ea7 100644 (file)
@@ -1,3 +1,50 @@
+Sat Jul 12 19:46:22 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.4.63 is released.
+
+Sat Jul 12 17:02:30 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-undo.el (gnus-undo-mode): Use it.
+
+       * gnus-salt.el (gnus-pick-mode): Use it.
+
+       * gnus-gl.el (gnus-grouplens-mode): Use it.
+
+       * gnus-ems.el (gnus-add-minor-mode): New function.
+
+Sat Jul 12 16:21:41 1997  Michael R. Cook  <mcook@cognex.com>
+
+       * gnus-topic.el (gnus-topic-toggle-display-empty-topics): List
+       groups. 
+
+Fri Jul 11 21:12:07 1997  Per Abrahamsen  <abraham@dina.kvl.dk>
+
+       * gnus-art.el (gnus-article-treat-html): Use `w3-region'.
+
+Fri Jul 11 13:20:58 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * message.el (message-check-news-header-syntax): Check repeated
+       groups. 
+
+       * gnus-move.el (gnus-move-group-to-server): Protect against nil
+       articles. 
+
+Thu Jul 10 20:01:44 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-start.el (gnus-check-first-time-used): Force reading the
+       active file the first time Gnus is used.
+
+       * gnus-group.el (gnus-group-set-mode-line): Conditionalize
+       modified. 
+
+       * gnus-ems.el (gnus-mode-line-modified): New variable.
+
+       * gnus-xmas.el (gnus-summary-toolbar): Typo fix.
+
+Mon Jul  7 11:06:32 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-start.el (gnus-check-new-newsgroups): New default.
+
 Sun Jul  6 17:22:47 1997  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.4.62 is released.
index 8c652c1..a3e8aa9 100644 (file)
@@ -1126,7 +1126,7 @@ Put point at the beginning of the signature separator."
       nil)))
 
 (eval-and-compile
-  (autoload 'w3-parse-buffer "w3-parse")
+  (autoload 'w3-display "w3-parse")
   (autoload 'w3-do-setup "w3" "" t))
 
 (defun gnus-article-treat-html ()
@@ -1146,8 +1146,8 @@ Put point at the beginning of the signature separator."
        (insert-buffer-substring gnus-article-buffer b e)
        (require 'url)
        (save-window-excursion
-         (w3-parse-buffer (current-buffer))
-         (setq buf (buffer-string))))
+         (w3-region (point-min) (point-max))
+         (setq buf (buffer-substring-no-properties (point-min) (point-max)))))
       (when buf
        (delete-region (point-min) (point-max))
        (insert buf))
index ac17280..05f8f7c 100644 (file)
 
 (defvar gnus-mouse-2 [mouse-2])
 (defvar gnus-down-mouse-2 [down-mouse-2])
+(defvar gnus-mode-line-modified
+  (if (and (not gnus-xemacs)
+          (< emacs-major-version 20))
+      '("--**-" . "-----")
+    '("**" "--")))
 
 (eval-and-compile
   (autoload 'gnus-xmas-define "gnus-xmas")
        (boundp 'mark-active)
        mark-active))
 
+(defun gnus-add-minor-mode (mode name map)
+  (if (fboundp 'add-minor-mode)
+      (add-minor-mode mode name map)
+    (unless (assq mode minor-mode-alist)
+      (push `(,mode ,name) minor-mode-alist))
+    (unless (assq mode minor-mode-map-alist)
+      (push (cons mode map)
+           minor-mode-map-alist))))
+
 (provide 'gnus-ems)
 
 ;; Local Variables:
index 16c0294..4d7764c 100644 (file)
@@ -850,11 +850,8 @@ recommend using both scores and grouplens predictions together."
       (when (and menu-bar-mode
                 (gnus-visual-p 'grouplens-menu 'menu))
        (gnus-grouplens-make-menu-bar))
-      (unless (assq 'gnus-grouplens-mode minor-mode-alist)
-       (push '(gnus-grouplens-mode " GroupLens") minor-mode-alist))
-      (unless (assq 'gnus-grouplens-mode minor-mode-map-alist)
-       (push (cons 'gnus-grouplens-mode gnus-grouplens-mode-map)
-             minor-mode-map-alist))
+      (gnus-add-minor-mode
+       'gnus-grouplens-mode " GroupLens" gnus-grouplens-mode-map)
       (run-hooks 'gnus-grouplens-mode-hook))))
 
 (provide 'gnus-gl)
index 55123f9..83d9bce 100644 (file)
@@ -1213,7 +1213,9 @@ already."
                     (not (zerop (buffer-size))))))
             (mode-string (eval gformat)))
        ;; Say whether the dribble buffer has been modified.
-       (setq mode-line-modified (if modified "**" "--"))
+       (setq mode-line-modified
+             (if modified (car gnus-mode-line-modified)
+               (cdr gnus-mode-line-modified)))
        ;; If the line is too long, we chop it off.
        (when (> (length mode-string) max-len)
          (setq mode-string (substring mode-string 0 (- max-len 4))))
index c61128a..bba380c 100644 (file)
@@ -59,15 +59,18 @@ Update the .newsrc.eld file to reflect the change of nntp server."
   "Move group INFO from FROM-SERVER to TO-SERVER."
   (let ((group (gnus-info-group info))
        to-active hashtb type mark marks
-       to-article to-reads to-marks article)
+       to-article to-reads to-marks article
+       act-articles)
     (gnus-message 7 "Translating %s..." group)
     (when (gnus-request-group group nil to-server)
       (setq to-active (gnus-parse-active)
-           hashtb (gnus-make-hashtable 1024))
+           hashtb (gnus-make-hashtable 1024)
+           act-articles (gnus-uncompress-range to-active))
       ;; Fetch the headers from the `to-server'.
       (when (and to-active
+                act-articles
                 (setq type (gnus-retrieve-headers
-                            (gnus-uncompress-range to-active)
+                            act-articles
                             group to-server)))
        ;; Convert HEAD headers.  I don't care.
        (when (eq type 'headers)
index fd80bc2..f062db6 100644 (file)
@@ -130,11 +130,7 @@ It accepts the same format specs that `gnus-summary-line-format' does."
       ;; Set up the menu.
       (when (gnus-visual-p 'pick-menu 'menu)
        (gnus-pick-make-menu-bar))
-      (unless (assq 'gnus-pick-mode minor-mode-alist)
-       (push '(gnus-pick-mode " Pick") minor-mode-alist))
-      (unless (assq 'gnus-pick-mode minor-mode-map-alist)
-       (push (cons 'gnus-pick-mode gnus-pick-mode-map)
-             minor-mode-map-alist))
+      (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map)
       (run-hooks 'gnus-pick-mode-hook))))
 
 (defun gnus-pick-setup-message ()
@@ -337,11 +333,7 @@ This must be bound to a button-down mouse event."
       ;; Set up the menu.
       (when (gnus-visual-p 'binary-menu 'menu)
        (gnus-binary-make-menu-bar))
-      (unless (assq 'gnus-binary-mode minor-mode-alist)
-       (push '(gnus-binary-mode " Binary") minor-mode-alist))
-      (unless (assq 'gnus-binary-mode minor-mode-map-alist)
-       (push (cons 'gnus-binary-mode gnus-binary-mode-map)
-             minor-mode-map-alist))
+      (gnus-add-minor-mode 'gnus-binary-mode " Binary" gnus-binary-mode-map)
       (run-hooks 'gnus-binary-mode-hook))))
 
 (defun gnus-binary-display-article (article &optional all-header)
index cfe6f9a..6e102d2 100644 (file)
@@ -1275,8 +1275,7 @@ SCORE is the score to add."
          (erase-buffer)
          (let (emacs-lisp-mode-hook)
            (if (string-match
-                (concat (regexp-quote gnus-adaptive-file-suffix)
-                        "$")
+                (concat (regexp-quote gnus-adaptive-file-suffix) "$")
                 file)
                ;; This is an adaptive score file, so we do not run
                ;; it through `pp'.  These files can get huge, and
index 59d8b2e..e208a38 100644 (file)
@@ -79,7 +79,7 @@ saved will be used."
   :group 'gnus-dribble-file
   :type '(choice directory (const nil)))
 
-(defcustom gnus-check-new-newsgroups t
+(defcustom gnus-check-new-newsgroups 'ask-server
   "*Non-nil means that Gnus will run gnus-find-new-newsgroups at startup.
 This normally finds new newsgroups by comparing the active groups the
 servers have already reported with those Gnus already knows, either alive
@@ -840,7 +840,7 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
     ;; done in `gnus-get-unread-articles'.
     (and gnus-read-active-file
         (not level)
-        (gnus-read-active-file))
+        (gnus-read-active-file nil dont-connect))
 
     (unless gnus-active-hashtb
       (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
@@ -897,8 +897,8 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
   "Search for new newsgroups and add them.
 Each new newsgroup will be treated with `gnus-subscribe-newsgroup-method.'
 The `-n' option line from .newsrc is respected.
-If ARG (the prefix), use the `ask-server' method to query
-the server for new groups."
+If ARG (the prefix), use the `ask-server' method to query the server
+for new groups."
   (interactive "P")
   (let ((check (if (or (and arg (not (listp gnus-check-new-newsgroups)))
                       (null gnus-read-active-file)
@@ -1052,7 +1052,8 @@ the server for new groups."
       nil
     (gnus-message 6 "First time user; subscribing you to default groups")
     (unless (gnus-read-active-file-p)
-      (gnus-read-active-file))
+      (let ((gnus-read-active-file t))
+       (gnus-read-active-file)))
     (setq gnus-newsrc-last-checked-date (current-time-string))
     (let ((groups gnus-default-subscribed-newsgroups)
          group)
@@ -1561,11 +1562,12 @@ newsgroup."
   (gnus-dribble-touch))
 
 ;; Get the active file(s) from the backend(s).
-(defun gnus-read-active-file (&optional force)
+(defun gnus-read-active-file (&optional force not-native)
   (gnus-group-set-mode-line)
   (let ((methods
         (append
-         (if (gnus-check-server gnus-select-method)
+         (if (and (not not-native)
+                  (gnus-check-server gnus-select-method))
              ;; The native server is available.
              (cons gnus-select-method gnus-secondary-select-methods)
            ;; The native server is down, so we just do the
index b650196..7049e89 100644 (file)
@@ -5018,11 +5018,8 @@ which existed when entering the ephemeral is reset."
          (if (null arg) (not gnus-dead-summary-mode)
            (> (prefix-numeric-value arg) 0)))
     (when gnus-dead-summary-mode
-      (unless (assq 'gnus-dead-summary-mode minor-mode-alist)
-       (push '(gnus-dead-summary-mode " Dead") minor-mode-alist))
-      (unless (assq 'gnus-dead-summary-mode minor-mode-map-alist)
-       (push (cons 'gnus-dead-summary-mode gnus-dead-summary-mode-map)
-             minor-mode-map-alist)))))
+      (gnus-add-minor-mode
+       'gnus-dead-summary-mode " Dead" gnus-dead-summary-mode-map))))
 
 (defun gnus-deaden-summary ()
   "Make the current summary buffer into a dead summary buffer."
index 14bc17d..942c456 100644 (file)
@@ -945,11 +945,7 @@ articles in the topic and its subtopics."
       (setq gnus-topic-line-format-spec
            (gnus-parse-format gnus-topic-line-format
                               gnus-topic-line-format-alist t))
-      (unless (assq 'gnus-topic-mode minor-mode-alist)
-       (push '(gnus-topic-mode " Topic") minor-mode-alist))
-      (unless (assq 'gnus-topic-mode minor-mode-map-alist)
-       (push (cons 'gnus-topic-mode gnus-topic-mode-map)
-             minor-mode-map-alist))
+      (gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map)
       (add-hook 'gnus-summary-exit-hook 'gnus-topic-update-topic)
       (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic)
       (set (make-local-variable 'gnus-group-prepare-function)
@@ -1307,6 +1303,7 @@ If FORCE, always re-read the active file."
   (interactive)
   (setq gnus-topic-display-empty-topics
        (not gnus-topic-display-empty-topics))
+  (gnus-group-list-groups)
   (message "%s empty topics"
           (if gnus-topic-display-empty-topics
               "Showing" "Hiding")))
index 77da5fa..129b5c2 100644 (file)
     ;; Set up the menu.
     (when (gnus-visual-p 'undo-menu 'menu)
       (gnus-undo-make-menu-bar))
-    ;; Don't display anything in the mode line -- too annoying.
-    ;;(unless (assq 'gnus-undo-mode minor-mode-alist)
-    ;;  (push '(gnus-undo-mode " Undo") minor-mode-alist))
-    (unless (assq 'gnus-undo-mode minor-mode-map-alist)
-      (push (cons 'gnus-undo-mode gnus-undo-mode-map)
-           minor-mode-map-alist))
+    (gnus-add-minor-mode 'gnus-undo-mode "" gnus-undo-mode-map)
     (make-local-hook 'post-command-hook)
     (add-hook 'post-command-hook 'gnus-undo-boundary nil t)
     (run-hooks 'gnus-undo-mode-hook)))
index ee75ce8..da74967 100644 (file)
@@ -1386,7 +1386,7 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
        (if (not (looking-at gnus-uu-begin-string))
            (setq state (list 'middle))
-         ;; This is the beginning of an uuencoded article.
+         ;; This is the beginning of a uuencoded article.
          ;; We replace certain characters that could make things messy.
          (setq gnus-uu-file-name
                (let ((nnheader-file-name-translation-alist
index 6a643f6..3f12384 100644 (file)
@@ -646,7 +646,7 @@ If it is non-nil, it must be a toolbar.  The five legal values are
     [gnus-summary-save-article
      gnus-summary-save-article t "Save article"]
     [gnus-uu-post-news
-     gnus-uu-post-news t "Post an uuencoded article"]
+     gnus-uu-post-news t "Post a uuencoded article"]
     [gnus-summary-cancel-article
      gnus-summary-cancel-article t "Cancel article"]
     [gnus-summary-catchup
index a3a7ddc..d2b5495 100644 (file)
@@ -238,7 +238,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.4.62"
+(defconst gnus-version-number "5.4.63"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
index fc5529d..17ad132 100644 (file)
@@ -2208,6 +2208,22 @@ to find out how to use this."
         (y-or-n-p
          (format "The %s header looks odd: \"%s\".  Really post? "
                  (car headers) header)))))
+   (message-check 'repeated-newsgroups
+     (let ((case-fold-search t)
+          (headers '("Newsgroups" "Followup-To"))
+          header error groups group)
+       (while (and headers
+                  (not error))
+        (when (setq header (mail-fetch-field (pop headers)))
+          (setq groups (message-tokenize-header header ","))
+          (while (setq group (pop groups))
+            (when (member group groups)
+              (setq error group
+                    groups nil)))))
+       (if (not error)
+          t
+        (y-or-n-p
+         (format "Group %s is repeated in headers.  Really post? " error)))))
    ;; Check the From header.
    (message-check 'from
      (let* ((case-fold-search t)
index 3ae5442..6772a81 100644 (file)
   (goto-char (point-min))
   (while (re-search-forward "&\\([a-z]+\\);" nil t)
     (replace-match (char-to-string (or (cdr (assq (intern (match-string 1))
-                                                 w3-html-entities ))
+                                                 w3-html-entities))
                                       ?#))
                   t t)))
 
index d5e4765..cef99ef 100644 (file)
@@ -1,3 +1,12 @@
+Sat Jul 12 16:29:35 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (Picon Configuration): Moved Picons to under XEmacs. 
+       (Smileys): New section.
+
+Fri Jul 11 11:58:20 1997  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (NNTP): Addition.
+
 Tue Jun 17 23:52:17 1997  Justin Sheehy  <dworkin@ccs.neu.edu>
 
        * gnus.texi (Group Parameters): Addition.
index 79bb19d..955cc07 100644 (file)
--- a/texi/dir
+++ b/texi/dir
@@ -1,5 +1,5 @@
 -*- Text -*-
-The Gnus-realated top node.
+The Gnus-related top node.
 \1f
 File: dir      Node: Top       This is the Gnus Info tree
 
index 0e8a123..3aacc2c 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.4.62 Manual
+@settitle Gnus 5.4.63 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -309,7 +309,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Gnus 5.4.62 Manual
+@title Gnus 5.4.63 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -345,7 +345,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus 5.4.62.
+This manual corresponds to Gnus 5.4.63.
 
 @end ifinfo
 
@@ -610,9 +610,9 @@ you can set @code{gnus-check-new-newsgroups} to @code{nil}.  This will
 also save you some time at startup.  Even if this variable is
 @code{nil}, you can always subscribe to the new groups just by pressing
 @kbd{U} in the group buffer (@pxref{Group Maintenance}).  This variable
-is @code{t} by default.  If you set this variable to @code{always}, then
-Gnus will query the backends for new groups even when you do the @kbd{g}
-command (@pxref{Scanning New Messages}).
+is @code{ask-server} by default.  If you set this variable to
+@code{always}, then Gnus will query the backends for new groups even
+when you do the @kbd{g} command (@pxref{Scanning New Messages}).
 
 @menu
 * Checking New Groups::      Determining what groups are new.
@@ -8511,7 +8511,8 @@ server:
 is run after a connection has been made.  It can be used to send
 commands to the @sc{nntp} server after it has been contacted.  By
 default it sends the command @code{MODE READER} to the server with the
-@code{nntp-send-mode-reader} function.
+@code{nntp-send-mode-reader} function.  This function should always be
+present in this hook.
 
 @item nntp-authinfo-function 
 @vindex nntp-authinfo-function 
@@ -10816,17 +10817,6 @@ after editing score files.
 Customize a score file in a visually pleasing manner
 (@code{gnus-score-customize}). 
 
-@item I C-i
-@kindex I C-i (Summary)
-@findex gnus-summary-raise-score
-Increase the score of the current article
-(@code{gnus-summary-raise-score}).
-
-@item L C-l
-@kindex L C-l (Summary)
-@findex gnus-summary-lower-score
-Lower the score of the current article
-(@code{gnus-summary-lower-score}). 
 @end table
 
 The rest of these commands modify the local score file.
@@ -12402,7 +12392,6 @@ four days, Gnus will decay the scores four times, for instance.
 * Buttons::                    Get tendonitis in ten easy steps!
 * Daemons::                    Gnus can do things behind your back.
 * NoCeM::                      How to avoid spam and other fatty foods.
-* Picons::                     How to display pictures of what your reading.
 * Undo::                       Some actions can be undone.
 * Moderation::                 What to do if you're a moderator.
 * XEmacs Enhancements::        There are more pictures and stuff under XEmacs.
@@ -13324,8 +13313,105 @@ big.  If this is a problem, you should kill off all (or most) of your
 unsubscribed groups (@pxref{Subscription Commands}).
 
 
+@node Undo
+@section Undo
+@cindex undo
+
+It is very useful to be able to undo actions one has done.  In normal
+Emacs buffers, it's easy enough---you just push the @code{undo} button.
+In Gnus buffers, however, it isn't that simple.
+
+The things Gnus displays in its buffer is of no value whatsoever to
+Gnus---it's all just data designed to look nice to the user.
+Killing a group in the group buffer with @kbd{C-k} makes the line
+disappear, but that's just a side-effect of the real action---the
+removal of the group in question from the internal Gnus structures.
+Undoing something like that can't be done by the normal Emacs
+@code{undo} function.
+
+Gnus tries to remedy this somewhat by keeping track of what the user
+does and coming up with actions that would reverse the actions the user
+takes.  When the user then presses the @code{undo} key, Gnus will run
+the code to reverse the previous action, or the previous actions.
+However, not all actions are easily reversible, so Gnus currently offers
+a few key functions to be undoable.  These include killing groups,
+yanking groups, and changing the list of read articles of groups.
+That's it, really.  More functions may be added in the future, but each
+added function means an increase in data to be stored, so Gnus will
+never be totally undoable.
+
+@findex gnus-undo-mode
+@vindex gnus-use-undo
+@findex gnus-undo
+The undoability is provided by the @code{gnus-undo-mode} minor mode.  It
+is used if @code{gnus-use-undo} is non-@code{nil}, which is the
+default.  The @kbd{M-C-_} key performs the @code{gnus-undo} command
+command, which should feel kinda like the normal Emacs @code{undo}
+command. 
+
+
+@node Moderation
+@section Moderation
+@cindex moderation
+
+If you are a moderator, you can use the @file{gnus-mdrtn.el} package.
+It is not included in the standard Gnus package.  Write a mail to
+@samp{larsi@@gnus.org} and state what group you moderate, and you'll
+get a copy.
+
+The moderation package is implemented as a minor mode for summary
+buffers.  Put
+
+@lisp
+(add-hook 'gnus-summary-mode-hook 'gnus-moderate)
+@end lisp
+
+in your @file{.gnus.el} file.
+
+If you are the moderator of @samp{rec.zoofle}, this is how it's
+supposed to work:
+
+@enumerate
+@item 
+You split your incoming mail by matching on
+@samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted
+articles in some mail group---for instance, @samp{nnml:rec.zoofle}.
+
+@item
+You enter that group once in a while and post articles using the @kbd{e}
+(edit-and-post) or @kbd{s} (just send unedited) commands.
+
+@item
+If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some
+articles that weren't approved by you, you can cancel them with the
+@kbd{c} command.
+@end enumerate
+
+To use moderation mode in these two groups, say:
+
+@lisp
+(setq gnus-moderated-list
+      "^nnml:rec.zoofle$\\|^rec.zoofle$")
+@end lisp
+
+
+@node XEmacs Enhancements
+@section XEmacs Enhancements
+@cindex XEmacs
+
+XEmacs is able to display pictures and stuff, so Gnus has taken
+advantage of that.
+
+@menu
+* Picons::    How to display pictures of what your reading.
+* Smileys::   Show all those happy faces the way they were meant to be shown.
+* Toolbar::   Click'n'drool.
+* XVarious::  Other XEmacsy Gnusey variables.
+@end menu
+
+
 @node Picons
-@section Picons
+@subsection Picons
 
 @iftex
 @iflatex
@@ -13358,7 +13444,7 @@ over your shoulder as you read news.
 
 
 @node Picon Basics
-@subsection Picon Basics
+@subsubsection Picon Basics
 
 What are Picons?  To quote directly from the Picons Web site:
 
@@ -13382,7 +13468,7 @@ Gnus expects picons to be installed into a location pointed to by
 
 
 @node Picon Requirements
-@subsection Picon Requirements
+@subsubsection Picon Requirements
 
 To have Gnus display Picons for you, you must be running XEmacs
 19.13 or greater since all other versions of Emacs aren't yet able to
@@ -13397,7 +13483,7 @@ the @code{netpbm} utilities installed, or munge the
 
 
 @node Easy Picons
-@subsection Easy Picons
+@subsubsection Easy Picons
 
 To enable displaying picons, simply put the following line in your
 @file{~/.gnus} file and start Gnus.
@@ -13411,7 +13497,7 @@ To enable displaying picons, simply put the following line in your
 
 
 @node Hard Picons
-@subsection Hard Picons 
+@subsubsection Hard Picons 
 
 Gnus can display picons for you as you enter and leave groups and
 articles.  It knows how to interact with three sections of the picons
@@ -13485,7 +13571,7 @@ for the append flag of @code{add-hook}:
 
 
 @node Picon Configuration
-@subsection Picon Configuration
+@subsubsection Picon Configuration
 
 The following variables offer further control over how things are
 done, where things are located, and other useless stuff you really
@@ -13534,113 +13620,98 @@ The name of the buffer that @code{picons} points to.  Defaults to
 @end table
 
 
-@node Undo
-@section Undo
-@cindex undo
+@node Smileys
+@subsection Smileys
+@cindex smileys
 
-It is very useful to be able to undo actions one has done.  In normal
-Emacs buffers, it's easy enough---you just push the @code{undo} button.
-In Gnus buffers, however, it isn't that simple.
+@dfn{Smiley} is a package separate from Gnus, but since Gnus is
+currently the only package that uses Smiley, it is documented here.
 
-The things Gnus displays in its buffer is of no value whatsoever to
-Gnus---it's all just data designed to look nice to the user.
-Killing a group in the group buffer with @kbd{C-k} makes the line
-disappear, but that's just a side-effect of the real action---the
-removal of the group in question from the internal Gnus structures.
-Undoing something like that can't be done by the normal Emacs
-@code{undo} function.
+In short---to use Smiley in Gnus, put the following in your
+@file{.gnus.el} file:
 
-Gnus tries to remedy this somewhat by keeping track of what the user
-does and coming up with actions that would reverse the actions the user
-takes.  When the user then presses the @code{undo} key, Gnus will run
-the code to reverse the previous action, or the previous actions.
-However, not all actions are easily reversible, so Gnus currently offers
-a few key functions to be undoable.  These include killing groups,
-yanking groups, and changing the list of read articles of groups.
-That's it, really.  More functions may be added in the future, but each
-added function means an increase in data to be stored, so Gnus will
-never be totally undoable.
+@lisp
+(add-hook 'gnus-article-display-hook 'gnus-smiley-display t)
+@end lisp
 
-@findex gnus-undo-mode
-@vindex gnus-use-undo
-@findex gnus-undo
-The undoability is provided by the @code{gnus-undo-mode} minor mode.  It
-is used if @code{gnus-use-undo} is non-@code{nil}, which is the
-default.  The @kbd{M-C-_} key performs the @code{gnus-undo} command
-command, which should feel kinda like the normal Emacs @code{undo}
-command. 
+Smiley maps text smiley faces---@samp{:-)}, @samp{:-=}, @samp{:-(} and
+the like---to pictures and displays those instead of the text smiley
+faces.  The conversion is controlled by a list of regexps that matches
+text and maps that to file names.
 
+@vindex smiley-nosey-regexp-alist
+@vindex smiley-deformed-regexp-alist
+Smiley supplies two example conversion alists by default:
+@code{smiley-deformed-regexp-alist} (which matches @samp{:)}, @samp{:(}
+and so on), and @code{smiley-nosey-regexp-alist} (which matches
+@samp{:-)}, @samp{:-(} and so on).
 
-@node Moderation
-@section Moderation
-@cindex moderation
+The alist used is specified by the @code{smiley-regexp-alist} variable,
+which defaults to the value of @code{smiley-deformed-regexp-alist}.
 
-If you are a moderator, you can use the @file{gnus-mdrtn.el} package.
-It is not included in the standard Gnus package.  Write a mail to
-@samp{larsi@@gnus.org} and state what group you moderate, and you'll
-get a copy.
-
-The moderation package is implemented as a minor mode for summary
-buffers.  Put
+Here's the default value of @code{smiley-smiley-regexp-alist}:
 
 @lisp
-(add-hook 'gnus-summary-mode-hook 'gnus-moderate)
+(setq smiley-nosey-regexp-alist
+      '(("\\(:-+[<«]+\\)\\W" 1 "FaceAngry.xpm")
+        ("\\(:-+\\]+\\)\\W" 1 "FaceGoofy.xpm")
+        ("\\(:-+D\\)\\W" 1 "FaceGrinning.xpm")
+        ("\\(:-+[@}»]+\\)\\W" 1 "FaceHappy.xpm")
+        ("\\(:-*)+\\)\\W" 1 "FaceHappy.xpm")        
+        ("\\(:-+[/\\\"]+\\)\\W" 1 "FaceIronic.xpm")
+        ("\\([8|]-+[|Oo%]\\)\\W" 1 "FaceKOed.xpm")
+        ("\\([:|]-+#+\\)\\W" 1 "FaceNyah.xpm")
+        ("\\(:-+[(@{]+\\)\\W" 1 "FaceSad.xpm")
+        ("\\(:-+[Oo\*]\\)\\W" 1 "FaceStartled.xpm")
+        ("\\(:-+|\\)\\W" 1 "FaceStraight.xpm")
+        ("\\(:-+p\\)\\W" 1 "FaceTalking.xpm")
+        ("\\(:-+d\\)\\W" 1 "FaceTasty.xpm")
+        ("\\(;-+[>)@}»]+\\)\\W" 1 "FaceWinking.xpm")
+        ("\\(:-+[Vvµ]\\)\\W" 1 "FaceWry.xpm")
+        ("\\(][:8B]-[)>]\\)\\W" 1 "FaceDevilish.xpm")
+        ("\\([:|]-+P\\)\\W" 1 "FaceYukky.xpm")))
 @end lisp
 
-in your @file{.gnus.el} file.
+The first item in each element is the regexp to be matched; the second
+element is the regexp match group that is to be replaced by the picture;
+and the third element is the name of the file to be displayed.
 
-If you are the moderator of @samp{rec.zoofle}, this is how it's
-supposed to work:
+The following variables customize where Smiley will look for these
+files, as well as the color to be used and stuff:
 
-@enumerate
-@item 
-You split your incoming mail by matching on
-@samp{Newsgroups:.*rec.zoofle}, which will put all the to-be-posted
-articles in some mail group---for instance, @samp{nnml:rec.zoofle}.
+@table @code
 
-@item
-You enter that group once in a while and post articles using the @kbd{e}
-(edit-and-post) or @kbd{s} (just send unedited) commands.
+@item smiley-data-directory
+@vindex smiley-data-directory
+Where Smiley will look for smiley faces files.
 
-@item
-If, while reading the @samp{rec.zoofle} newsgroup, you happen upon some
-articles that weren't approved by you, you can cancel them with the
-@kbd{c} command.
-@end enumerate
+@item smiley-flesh-color
+@vindex smiley-flesh-color
+Skin color.  The default is @samp{yellow}, which is really racist.
 
-To use moderation mode in these two groups, say:
+@item smiley-features-color
+@vindex smiley-features-color
+Color of the features of the face.  The default is @samp{black}.
 
-@lisp
-(setq gnus-moderated-list
-      "^nnml:rec.zoofle$\\|^rec.zoofle$")
-@end lisp
+@item smiley-tongue-color
+@vindex smiley-tongue-color
+Color of the tongue.  The default is @samp{red}.
 
+@item smiley-circle-color
+@vindex smiley-circle-color
+Color of the circle around the face.  The default is @samp{black}.
 
-@node XEmacs Enhancements
-@section XEmacs Enhancements
-@cindex XEmacs
+@item smiley-mouse-face
+@vindex smiley-mouse-face
+Face used for mouse highlighting over the smiley face.
 
-XEmacs is able to display pictures and stuff, so Gnus has taken
-advantage of that.  Relevant variables include:
+@end table
 
-@table @code
-@item gnus-xmas-glyph-directory
-@vindex gnus-xmas-glyph-directory
-This is where Gnus will look for pictures.  Gnus will normally
-auto-detect this directory, but you may set it manually if you have an
-unusual directory structure.
 
-@item gnus-xmas-logo-color-alist
-@vindex gnus-xmas-logo-color-alist
-This is an alist where the key is a type symbol and the values are the
-foreground and background color of the splash page glyph.
+@node Toolbar
+@subsection Toolbar
 
-@item gnus-xmas-logo-color-style
-@vindex gnus-xmas-logo-color-style
-This is the key used to look up the color in the alist described above.
-Legal values include @code{flame}, @code{pine}, @code{moss},
-@code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
-@code{labia}, @code{berry}, @code{neutral}, and @code{september}.
+@table @code
 
 @item gnus-use-toolbar
 @vindex gnus-use-toolbar
@@ -13660,6 +13731,31 @@ The toolbar in the summary buffer.
 @vindex gnus-summary-mail-toolbar
 The toolbar in the summary buffer of mail groups.
 
+@end table
+
+
+@node XVarious
+@subsection Various XEmacs Variables
+
+@table @code
+@item gnus-xmas-glyph-directory
+@vindex gnus-xmas-glyph-directory
+This is where Gnus will look for pictures.  Gnus will normally
+auto-detect this directory, but you may set it manually if you have an
+unusual directory structure.
+
+@item gnus-xmas-logo-color-alist
+@vindex gnus-xmas-logo-color-alist
+This is an alist where the key is a type symbol and the values are the
+foreground and background color of the splash page glyph.
+
+@item gnus-xmas-logo-color-style
+@vindex gnus-xmas-logo-color-style
+This is the key used to look up the color in the alist described above.
+Legal values include @code{flame}, @code{pine}, @code{moss},
+@code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
+@code{labia}, @code{berry}, @code{neutral}, and @code{september}.
+
 @item gnus-xmas-modeline-glyph
 @vindex gnus-xmas-modeline-glyph
 A glyph displayed in all Gnus mode lines.  It is a tiny gnu head by
@@ -15494,7 +15590,7 @@ the physical server is @samp{ifi.uio.no}.
 
 The backends should be able to switch between several virtual servers.
 The standard backends implement this by keeping an alist of virtual
-server environments that they pull down/pushe up when needed.  
+server environments that they pull down/push up when needed.  
 
 There are two groups of interface functions: @dfn{required functions},
 which must be present, and @dfn{optional functions}, which Gnus will
@@ -16300,7 +16396,7 @@ left up to the programmer---if it's simpler to just spew it all out on
 one looong line, then that's ok.
 
 The meaning of the various atoms are explained elsewhere in this
-manual (@pxref{Score File Atoms}).
+manual (@pxref{Score File Format}).
 
 
 @node Headers
index 1abaeb6..e83a2cf 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.4.62 Manual
+@settitle Message 5.4.63 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -39,7 +39,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Message 5.4.62 Manual
+@title Message 5.4.63 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -79,7 +79,7 @@ buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.4.62.  Message is distributed with
+This manual corresponds to Message 5.4.63.  Message is distributed with
 the Gnus distribution bearing the same version number as this manual
 has. 
 
@@ -863,6 +863,9 @@ Check whether the newsgroups mentioned in the @code{Newsgroups} and
 @item valid-newsgroups
 Check whether the @code{Newsgroups} and @code{Followup-to} headers
 are valid syntactically.
+@item repeated-newsgroups
+Check whether the @code{Newsgroups} and @code{Followup-to} headers
+contains repeated group names.
 @item shorten-followup-to
 Check whether to add a @code{Followup-to} header to shorten the number
 of groups to post to.
diff --git a/todo b/todo
index 78be267..9b6aa6a 100644 (file)
--- a/todo
+++ b/todo
@@ -1,3 +1,5 @@
+gnus dir file is bogus
+
 .gnus repository:
 http://superdave.socom.com/gnus/
 
@@ -735,3 +737,11 @@ Selv ville jeg nok ha valgt 
         "\\(This\s+\\)?[^ ]+ has been automatically signed by"
 og det er maks hundre tegn mellom match-end og ----linja.  Men -det-
 er min type heuristikk og langt fra alles.
+
+* `gnus-subscribe-sorted' -- insert new groups where they would have been
+sorted to if `gnus-group-sort-function' were run.
+
+* gnus-{group,summary}-highlight should respect any `face' text props set
+on the lines.
+
+* `L M' command for lowering a moron in the all.SCORE file.