*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 05:15:03 +0000 (05:15 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 05:15:03 +0000 (05:15 +0000)
13 files changed:
lisp/gnus-cache.el
lisp/gnus-msg.el
lisp/gnus-score.el
lisp/gnus-setup.el [new file with mode: 0644]
lisp/gnus-srvr.el
lisp/gnus-topic.el
lisp/gnus-uu.el
lisp/gnus.el
lisp/nnbabyl.el
lisp/nnmail.el
texi/ChangeLog
texi/gnus-faq.texi [new file with mode: 0644]
texi/gnus.texi

index 1e525ae..6ac55c6 100644 (file)
@@ -113,13 +113,14 @@ variable to \"^nnml\".")
 
 (defun gnus-cache-file-name (group article)
   (concat (file-name-as-directory gnus-cache-directory)
-         (if (gnus-use-long-file-name 'not-cache)
-             group 
-           (let ((group (concat group "")))
-             (if (string-match ":" group)
-                 (aset group (match-beginning 0) ?/))
-             (gnus-replace-chars-in-string group ?. ?/)))
-         "/" (if (stringp article) article (int-to-string article))))
+         (file-name-as-directory
+          (if (gnus-use-long-file-name 'not-cache)
+              group 
+            (let ((group (concat group "")))
+              (if (string-match ":" group)
+                  (aset group (match-beginning 0) ?/))
+              (gnus-replace-chars-in-string group ?. ?/))))
+         (if (stringp article) article (int-to-string article))))
 
 (defun gnus-cache-possibly-enter-article 
   (group article headers ticked dormant unread)
index 70bd1f1..6f71d16 100644 (file)
@@ -277,6 +277,7 @@ headers.")
 (defvar gnus-post-news-buffer "*post-news*")
 (defvar gnus-mail-buffer "*mail*")
 (defvar gnus-summary-send-map nil)
+(defvar gnus-send-bounce-map nil)
 (defvar gnus-article-copy nil)
 (defvar gnus-reply-subject nil)
 (defvar gnus-add-to-address nil)
@@ -305,14 +306,18 @@ headers.")
 (define-key gnus-summary-send-map "r" 'gnus-summary-reply)
 (define-key gnus-summary-send-map "R" 'gnus-summary-reply-with-original)
 (define-key gnus-summary-send-map "m" 'gnus-summary-mail-other-window)
-(define-key gnus-summary-send-map "Db" 'gnus-summary-resend-bounced-mail)
-(define-key gnus-summary-send-map "Dc" 'gnus-summary-send-draft)
 (define-key gnus-summary-send-map "u" 'gnus-uu-post-news)
 (define-key gnus-summary-send-map "om" 'gnus-summary-mail-forward)
 (define-key gnus-summary-send-map "op" 'gnus-summary-post-forward)
 (define-key gnus-summary-send-map "Om" 'gnus-uu-digest-mail-forward)
 (define-key gnus-summary-send-map "Op" 'gnus-uu-digest-post-forward)
 
+(define-prefix-command 'gnus-send-bounce-map)
+(define-key gnus-summary-send-map "D" 'gnus-send-bounce-map)
+(define-key gnus-send-bounce-map "b" 'gnus-summary-resend-bounced-mail)
+(define-key gnus-send-bounce-map "c" 'gnus-summary-send-draft)
+(define-key gnus-send-bounce-map "r" 'gnus-summary-resend-message)
+
 ;;; Internal functions.
 
 (defun gnus-number-base36 (num len)
@@ -1041,7 +1046,28 @@ called."
           (delete-region (progn (beginning-of-line) (point))
                          (progn (forward-line 1) (point))))
       (setq headers (cdr headers)))))
-  
+
+;;; Since the X-Newsreader/X-Mailer are ``vanity'' headers, they might
+;;; as well include the Emacs version as well.
+;;; The following function works with later GNU Emacs, and XEmacs.
+(defun gnus-extended-version ()
+  "Stringified Gnus version and Emacs version"
+  (interactive)
+  (concat
+   gnus-version
+   "/"
+   (cond
+    ((string-match "^\\([0-9]+\\.[0-9]+\\)\\.[.0-9]+$" emacs-version)
+     (concat "Emacs " (substring emacs-version
+                                (match-beginning 1)
+                                (match-end 1))))
+    ((string-match "\\([A-Z]*[Mm][Aa][Cc][Ss]\\)" emacs-version)
+     (concat (substring emacs-version
+                       (match-beginning 1)
+                       (match-end 1))
+            (format " %d.%d" emacs-major-version emacs-minor-version)))
+    (t emacs-version))))
+
 (defun gnus-inews-insert-headers (&optional headers)
   "Prepare article headers.
 Headers already prepared in the buffer are not modified.
@@ -1057,8 +1083,8 @@ Headers in `gnus-required-headers' will be generated."
        (To nil)
        (Distribution nil)
        (Lines (gnus-inews-lines))
-       (X-Newsreader gnus-version)
-       (X-Mailer gnus-version)
+       (X-Newsreader (gnus-extended-version))
+       (X-Mailer (gnus-extended-version))
        (headers (or headers gnus-required-headers))
        (case-fold-search t)
        header value elem)
@@ -1142,7 +1168,7 @@ Headers in `gnus-required-headers' will be generated."
                  (forward-line -1))
              ;; The value of this header was empty, so we clear
              ;; totally and insert the new value.
-             (delete-region (point) (gnus-point-at-bol))
+             (delete-region (point) (gnus-point-at-eol))
              (insert value))
            ;; Add the deletable property to the headers that require it.
            (and (memq header gnus-deletable-headers)
@@ -1478,6 +1504,35 @@ Customize the variable gnus-mail-forward-method to use another mailer."
       (gnus-forward-using-post gnus-article-copy)
     (gnus-mail-forward gnus-article-copy)))
 
+(defun gnus-summary-resend-message (address)
+  "Resend the current article to ADDRESS."
+  (interactive "sResend message to: ")
+  (gnus-summary-select-article)
+  (save-excursion
+    (let (resent)
+      ;; We first set up a normal mail buffer.
+      (nnheader-set-temp-buffer " *Gnus resend*")
+      (gnus-mail-setup 'new address)
+      ;; Insert our usual headers.
+      (gnus-inews-narrow-to-headers)
+      (let ((headers '(From Date To Message-ID Organization)))
+       (gnus-inews-insert-headers headers))
+      (goto-char (point-min))
+      ;; Rename them all to "Resent-*".
+      (while (re-search-forward "^" nil t)
+       (insert "Resent-"))
+      (widen)
+      (delete-region (point) (point-max))
+      ;; Insert the message to be resent.
+      (insert-buffer-substring gnus-original-article-buffer)
+      (goto-char (point-min))
+      (search-forward "\n\n")
+      (forward-char -1)
+      (insert mail-header-separator)
+      ;; Send it.
+      (mail-send)
+      (kill-buffer (current-buffer)))))
+
 (defun gnus-summary-post-forward ()
   "Forward the current article to a newsgroup."
   (interactive)
@@ -1506,7 +1561,12 @@ Customize the variable `gnus-mail-other-window-method' to use another
 mailer."
   (interactive)
   (gnus-set-global-variables)
-  (gnus-new-mail))
+  (gnus-new-mail
+   ;; We might want to prompt here.
+   (when (and gnus-interactive-post
+             (not gnus-expert-user))
+     (read-string "To: ")))
+  (gnus-configure-windows 'summary-mail 'force))
 
 (defun gnus-new-mail (&optional to)
   (let (subject)
index a263611..040a3f6 100644 (file)
@@ -233,7 +233,7 @@ used as score."
          (list (list ?t (current-time-string) "temporary") 
                '(?p perm "permanent") '(?i now "immediate")))
         (mimic gnus-score-mimic-keymap)
-        hchar entry temporary tchar pchar end type)
+        hchar entry temporary tchar pchar end type match)
     ;; First we read the header to score.
     (while (not hchar)
       (if mimic
@@ -340,10 +340,20 @@ used as score."
     ;; We have all the data, so we enter this score.
     (if end
        ()
+      (setq match (if (string= (nth 2 entry) "") ""
+                   (gnus-summary-header (or (nth 2 entry) (nth 1 entry)))))
+      
+      ;; Modify the match, perhaps.
+      (cond 
+       ((equal (nth 1 entry) "xref")
+       (when (string-match "^Xref: *" match)
+         (setq match (substring match (match-end 0))))
+       (when (string-match "^[^:]* +" match)
+         (setq match (substring match (match-end 0))))))
+
       (gnus-summary-score-entry
        (nth 1 entry)                   ; Header
-       (if (string= (nth 2 entry) "") ""
-        (gnus-summary-header (or (nth 2 entry) (nth 1 entry)))) ; Match
+       match                           ; Match
        type                            ; Type
        (if (eq 's score) nil score)     ; Score
        (if (eq 'perm temporary)         ; Temp
diff --git a/lisp/gnus-setup.el b/lisp/gnus-setup.el
new file mode 100644 (file)
index 0000000..e1c1cd2
--- /dev/null
@@ -0,0 +1,184 @@
+;;; gnus-setup.el --- Initialization & Setup for Gnus 5
+;; Copyright (C) 1995 Miranova Systems, Inc.
+
+;; Author: Steven L. Baur <steve@miranova.com>
+;; Keywords: news
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+;;; Commentary:
+;; My head is starting to spin with all the different mail/news packages.
+;; Stop The Madness!
+
+;;; Code:
+
+(defvar gnus-gnus-lisp-directory "/usr/lib/xemacs/gnus-5.0/lisp/"
+  "Directory where Gnus Emacs lisp is found.")
+(defvar gnus-sgnus-lisp-directory "/usr/lib/xemacs/sgnus/lisp/"
+  "Directory where September Gnus Emacs lisp is found.")
+(defvar gnus-tm-lisp-directory "/usr/lib/xemacs/site-lisp/"
+  "Directory where TM Emacs lisp is found.")
+
+(defvar gnus-mailcrypt-lisp-directory
+  "/usr/lib/xemacs/site-lisp/mailcrypt-3.4/"
+  "Directory where Mailcrypt Emacs Lisp is found.")
+
+(defvar gnus-use-tm t
+  "Set this if you want MIME support for Gnus")
+(defvar gnus-use-mhe nil
+  "Set this if you want to use MH-E for mail reading")
+(defvar gnus-use-rmail nil
+  "Set this if you want to use RMAIL for mail reading")
+(defvar gnus-use-sendmail t
+  "Set this if you want to use SENDMAIL for mail reading")
+(defvar gnus-use-vm nil
+  "Set this if you want to use the VM package for mail reading")
+(defvar gnus-use-sc t
+  "Set this if you want to use Supercite")
+(defvar gnus-use-mailcrypt t
+  "Set this if you want to use Mailcrypt for dealing with PGP messages")
+(defvar gnus-use-bbdb nil
+  "Set this if you want to use the Big Brother DataBase")
+(defvar gnus-use-september nil
+  "Set this if you are using the experimental September Gnus")
+
+(let ((gnus-directory (if gnus-use-september
+                         gnus-sgnus-lisp-directory
+                       gnus-gnus-lisp-directory)))
+  (if (null (member gnus-directory load-path))
+      (setq load-path (cons gnus-directory load-path))))
+
+;;; Tools for MIME by
+;;; UMEDA Masanobu <umerin@mse.kyutech.ac.jp>
+;;; MORIOKA Tomohiko <morioka@jaist.ac.jp>
+
+(if gnus-use-tm
+    (progn
+      (if (null (member gnus-tm-lisp-directory load-path))
+         (setq load-path (cons gnus-tm-lisp-directory load-path))))
+      (load "tm-setup")
+      (load "mime-setup"))
+
+;;; Mailcrypt by
+;;; Jin Choi <jin@atype.com>
+;;; Patrick LoPresti <patl@lcs.mit.edu>
+
+(if gnus-use-mailcrypt
+    (progn
+      (if (null (member gnus-mailcrypt-lisp-directory load-path))
+         (setq load-path (cons gnus-mailcrypt-lisp-directory load-path))))
+      (autoload 'mc-install-write-mode "mailcrypt" nil t)
+      (autoload 'mc-install-read-mode "mailcrypt" nil t)
+      (add-hook 'mail-mode-hook 'mc-install-write-mode)
+      (add-hook 'news-mode-hook 'mc-install-write-mode)
+      (add-hook 'news-reply-mode-hook 'mc-install-write-mode)
+      (add-hook 'gnus-summary-mode-hook 'mc-install-read-mode)
+      (if gnus-use-mhe
+         (progn
+           (add-hook 'mh-folder-mode-hook 'mc-install-read-mode)
+           (add-hook 'mh-letter-mode-hook 'mc-install-write-mode))))
+
+;;; BBDB by
+;;; Jamie Zawinski <jwz@lucid.com>
+
+(if gnus-use-bbdb
+    (progn
+      (autoload 'bbdb "bbdb-com"
+       "Insidious Big Brother Database" t)
+      (autoload 'bbdb-name "bbdb-com"
+       "Insidious Big Brother Database" t)
+      (autoload 'bbdb-company "bbdb-com"
+       "Insidious Big Brother Database" t)
+      (autoload 'bbdb-net "bbdb-com"
+       "Insidious Big Brother Database" t)
+      (autoload 'bbdb-notes "bbdb-com"
+       "Insidious Big Brother Database" t)
+
+      (if gnus-use-vm
+         (progn
+           (autoload 'bbdb-insinuate-vm "bbdb-vm"
+             "Hook BBDB into VM" t)))
+
+      (if gnus-use-rmail
+         (progn
+           (autoload 'bbdb-insinuate-rmail "bbdb-rmail"
+             "Hook BBDB into RMAIL" t)
+           (add-hook 'rmail-mode-hook 'bbdb-insinuate-rmail)))
+
+      (if gnus-use-mhe
+         (progn
+           (autoload 'bbdb-insinuate-mh "bbdb-mh"
+             "Hook BBDB into MH-E" t)
+           (add-hook 'mh-folder-mode-hook 'bbdb-insinuate-mh)))
+
+      (autoload 'bbdb-insinuate-gnus "bbdb-gnus"
+       "Hook BBDB into Gnus" t)
+      (add-hook gnus-startup-hook 'bbdb-insinuate-gnus)
+
+      (if gnus-use-sendmail
+         (progn
+           (autoload 'bbdb-insinuate-sendmail "bbdb"
+             "Insidious Big Brother Database" t)
+           (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)))))
+
+(if gnus-use-sc
+    (progn
+      (add-hook 'mail-citation-hook 'sc-cite-original)))
+\f
+;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-slave gnus-no-server gnus-update-format) "gnus" "lisp/gnus.el" (12473 2137))
+;;; Generated autoloads from lisp/gnus.el
+
+(autoload 'gnus-update-format "gnus" "\
+Update the format specification near point." t nil)
+
+(autoload 'gnus-no-server "gnus" "\
+Read network news.
+If ARG is a positive number, Gnus will use that as the
+startup level.  If ARG is nil, Gnus will be started at level 2. 
+If ARG is non-nil and not a positive number, Gnus will
+prompt the user for the name of an NNTP server to use.
+As opposed to `gnus', this command will not connect to the local server." t nil)
+
+(autoload 'gnus-slave "gnus" "\
+Read news as a slave." t nil)
+
+(autoload 'gnus "gnus" "\
+Read network news.
+If ARG is non-nil and a positive number, Gnus will use that as the
+startup level.  If ARG is non-nil and not a positive number, Gnus will
+prompt the user for the name of an NNTP server to use." t nil)
+
+(autoload 'gnus-fetch-group "gnus" "\
+Start Gnus if necessary and enter GROUP.
+Returns whether the fetching was successful or not." t nil)
+
+(defalias 'gnus-batch-kill 'gnus-batch-score)
+
+(autoload 'gnus-batch-score "gnus" "\
+Run batched scoring.
+Usage: emacs -batch -l gnus -f gnus-batch-score <newsgroups> ...
+Newsgroups is a list of strings in Bnews format.  If you want to score
+the comp hierarchy, you'd say \"comp.all\".  If you would not like to
+score the alt hierarchy, you'd say \"!alt.all\"." t nil)
+
+;;;***
+
+(provide 'gnus-setup)
+
+(run-hooks 'gnus-setup-load-hook)
+
+;;; gnus-setup.el ends here
index 722362c..ec23b06 100644 (file)
@@ -110,9 +110,8 @@ The following commands are available:
   (setq buffer-read-only t)
   (run-hooks 'gnus-server-mode-hook))
 
-(defun gnus-server-insert-server-line (sformat name method)
-  (let* ((sformat (or sformat gnus-server-line-format-spec))
-        (how (car method))
+(defun gnus-server-insert-server-line (name method)
+  (let* ((how (car method))
         (where (nth 1 method))
         (elem (assoc method gnus-opened-servers))
         (status (cond ((eq (nth 1 elem) 'denied)
@@ -121,13 +120,14 @@ The following commands are available:
                            (eq (nth 1 elem) 'ok))
                        "(open)")
                       (t
-                       "(closed)")))
-        b)
+                       "(closed)"))))
     (beginning-of-line)
-    (setq b (point))
-    ;; Insert the text.
-    (eval sformat)
-    (add-text-properties b (1+ b) (list 'gnus-server (intern name)))))
+    (add-text-properties
+     (point)
+     (prog1 (1+ (point))
+       ;; Insert the text.
+       (eval gnus-server-line-format-spec))
+     (list 'gnus-server (intern name)))))
 
 (defun gnus-enter-server-buffer ()
   "Set up the server buffer."
@@ -159,14 +159,14 @@ The following commands are available:
     ;; First we do the real list of servers.
     (while alist
       (push (cdr (setq server (pop alist))) done)
-      (gnus-server-insert-server-line nil (car server) (cdr server)))
+      (when server
+       (gnus-server-insert-server-line (car server) (cdr server))))
     ;; Then we insert the list of servers that have been opened in
     ;; this session.
     (while opened 
       (unless (member (car (car opened)) done)
        (gnus-server-insert-server-line 
-        nil (format "%s:%s" (car (car (car opened))) 
-                    (nth 1 (car (car opened))))
+        (format "%s:%s" (car (car (car opened))) (nth 1 (car (car opened))))
         (car (car opened))))
       (setq opened (cdr opened))))
   (goto-char (point-min))
@@ -195,7 +195,7 @@ The following commands are available:
            (delete-region (progn (beginning-of-line) (point))
                           (progn (forward-line 1) (point))))
        (let ((entry (assoc server gnus-server-alist)))
-         (gnus-server-insert-server-line nil (car entry) (cdr entry))
+         (gnus-server-insert-server-line (car entry) (cdr entry))
          (gnus-server-position-point))))))
 
 (defun gnus-server-set-info (server info)
index 5655df7..af23f6e 100644 (file)
@@ -370,9 +370,12 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
         (entries (gnus-topic-find-groups (car type)))
         (visiblep (eq (nth 1 type) 'visible)))
     ;; Insert the topic line.
-    (gnus-delete-line)
-    (gnus-topic-insert-topic-line 
-     (car type) visiblep (not (eq (nth 2 type) 'hidden)) level entries)))
+    (if topic
+       (progn
+         (gnus-delete-line)
+         (gnus-topic-insert-topic-line 
+          (car type) visiblep
+          (not (eq (nth 2 type) 'hidden)) level entries)))))
 
 ;;; Topic mode, commands and keymap.
 
@@ -402,7 +405,7 @@ If LOWEST is non-nil, list all newsgroups of level LOWEST or higher."
   (define-key gnus-group-topic-map "r" 'gnus-topic-rename)
   (define-key gnus-group-topic-map "\177" 'gnus-topic-delete)
 
-  (define-key gnus-group-topic-map gnus-mouse-2 'gnus-mouse-pick-topic)
+  (define-key gnus-topic-mode-map gnus-mouse-2 'gnus-mouse-pick-topic)
   )
 
 ;;;###autoload
@@ -551,9 +554,9 @@ group."
 (defun gnus-topic-mark-topic (topic)
   "Mark all groups in the topic with the process mark."
   (interactive (list (gnus-group-parent-topic)))
-  (let ((groups (gnus-topic-find-groups topic)))
+  (let ((groups (cdr (gnus-topic-find-groups topic))))
     (while groups
-      (gnus-group-set-mark (pop groups)))))
+      (gnus-group-set-mark (gnus-info-group (nth 2 (pop groups)))))))
 
 (defun gnus-topic-get-new-news-this-topic (&optional n)
   "Check for new news in the current topic."
@@ -640,4 +643,6 @@ If UNINDENT, remove an indentation."
       (gnus-topic-kill-group)
       (gnus-topic-create-topic topic grandparent))))
 
+(provide 'gnus-topic)
+
 ;;; gnus-topic.el ends here
index 0978216..dc58850 100644 (file)
@@ -629,7 +629,8 @@ The headers will be included in the sequence they are matched.")
     (let ((gnus-current-article (car articles)))
       (and scan (setq files (gnus-uu-scan-directory gnus-uu-work-dir))))
     (and save (gnus-uu-save-files files save))
-    (setq files (gnus-uu-unpack-files files))
+    (if (eq gnus-uu-do-not-unpack-archives nil)
+      (setq files (gnus-uu-unpack-files files)))
     (gnus-uu-add-file (mapcar (lambda (file) (cdr (assq 'name file))) files))
     (setq files (nreverse (gnus-uu-get-actions files)))
     (or not-insert (gnus-summary-insert-pseudos files save))))
index d1a0e14..e5ec072 100644 (file)
@@ -658,7 +658,7 @@ thus making them effectively non-existent.")
   "*All headers that match this regexp will be hidden.
 If `gnus-visible-headers' is non-nil, this variable will be ignored.")
 
-(defvar gnus-visible-headers "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copy-To:"
+(defvar gnus-visible-headers "^From:\\|^Newsgroups:\\|^Subject:\\|^Date:\\|^Followup-To:\\|^Reply-To:\\|^Organization:\\|^Summary:\\|^Keywords:\\|^To:\\|^Cc:\\|^Posted-To:\\|^Mail-Copies-To:\\|^Apparently-To:\\|^Resent-"
   "*All headers that do not match this regexp will be hidden.
 If this variable is non-nil, `gnus-ignored-headers' will be ignored.")
 
@@ -1435,7 +1435,7 @@ variable (string, integer, character, etc).")
   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
   "The mail address of the Gnus maintainers.")
 
-(defconst gnus-version "September Gnus v0.17"
+(defconst gnus-version "September Gnus v0.18"
   "Version number for this version of Gnus.")
 
 (defvar gnus-info-nodes
@@ -3704,9 +3704,14 @@ The following commands are available:
    (t
     (or level gnus-group-default-list-level gnus-level-subscribed))))
   
+;;;###autoload
+(defun gnus-slave-no-server (&optional arg)
+  "Read network news as a slave, without connecting to local server"
+  (interactive "P")
+  (gnus-no-server arg t))
 
 ;;;###autoload
-(defun gnus-no-server (&optional arg)
+(defun gnus-no-server (&optional arg slave)
   "Read network news.
 If ARG is a positive number, Gnus will use that as the
 startup level.  If ARG is nil, Gnus will be started at level 2. 
@@ -3716,7 +3721,7 @@ As opposed to `gnus', this command will not connect to the local server."
   (interactive "P")
   (make-local-variable 'gnus-group-use-permanent-levels)
   (setq gnus-group-use-permanent-levels t)
-  (gnus (or arg (1- gnus-level-default-subscribed)) t))
+  (gnus (or arg (1- gnus-level-default-subscribed)) t slave))
 
 ;;;###autoload
 (defun gnus-slave (&optional arg)
@@ -4267,7 +4272,7 @@ increase the score of each group you read."
 (defalias 'gnus-group-remove-excess-properties 'ignore)
 
 (defun gnus-group-insert-group-line 
-  (gnus-tmp-group gnus-tmp-level gnus-tmp-marked gnus-tmp-number
+  (gnus-tmp-group gnus-tmp-level gnus-tmp-marked number
                  gnus-tmp-method)
   "Insert a group line in the group buffer."
   (let* ((gnus-tmp-active (gnus-active gnus-tmp-group))
@@ -4276,11 +4281,11 @@ increase the score of each group you read."
              (1+ (- (cdr gnus-tmp-active) (car gnus-tmp-active)))
            0))
         (gnus-tmp-number-of-unread 
-         (if (numberp gnus-tmp-number) (int-to-string (max 0 gnus-tmp-number))
+         (if (numberp number) (int-to-string (max 0 number))
            "*"))
         (gnus-tmp-number-of-read
-         (if (numberp gnus-tmp-number)
-             (max 0 (- gnus-tmp-number-total gnus-tmp-number))
+         (if (numberp number)
+             (max 0 (- gnus-tmp-number-total number))
            "*"))
         (gnus-tmp-subscribed
          (cond ((<= gnus-tmp-level gnus-level-subscribed) ? )
@@ -4305,14 +4310,14 @@ increase the score of each group you read."
              (format "(%s:%s)" (car gnus-tmp-method)
                      (car (cdr gnus-tmp-method))) ""))
         (gnus-tmp-marked 
-         (if (and (numberp gnus-tmp-number) 
-                  (zerop gnus-tmp-number)
+         (if (and (numberp number) 
+                  (zerop number)
                   (cdr (assq 'tick gnus-tmp-marked)))
              ?* ? ))
         (gnus-tmp-number
-         (cond ((eq gnus-tmp-number t) "*" )
-               ((numberp gnus-tmp-number) (int-to-string gnus-tmp-number))
-               (t gnus-tmp-number)))
+         (cond ((eq number t) "*" )
+               ((numberp number) (int-to-string number))
+               (t number)))
         (gnus-tmp-process-marked
          (if (member gnus-tmp-group gnus-group-marked)
              gnus-process-mark ? ))
@@ -4325,7 +4330,7 @@ increase the score of each group you read."
        ;; Insert the text.
        (eval gnus-group-line-format-spec))
      `(gnus-group ,(gnus-intern-safe gnus-tmp-group gnus-active-hashtb)
-       gnus-unread ,(if (numberp gnus-tmp-number)
+       gnus-unread ,(if (numberp number)
                        (string-to-int gnus-tmp-number-of-unread)
                      t)
        gnus-marked ,gnus-tmp-marked
@@ -4435,9 +4440,7 @@ If FIRST-TOO, the current line is also eligible as a target."
                             (and
                              (let ((unread 
                                     (get-text-property (point) 'gnus-unread)))
-                               ;(and unread
-                                    (or (eq unread t)
-                                        (and unread (> unread 0))));)
+                               (and (numberp unread) (> unread 0)))
                              (setq lev (get-text-property (point)
                                                           'gnus-level))
                              (<= lev gnus-level-subscribed)))
@@ -4677,10 +4680,11 @@ Returns whether the fetching was successful or not."
 
 (defun gnus-group-goto-group (group)
   "Goto to newsgroup GROUP."
-  (let ((b (text-property-any (point-min) (point-max) 
-                             'gnus-group (gnus-intern-safe
-                                          group gnus-active-hashtb))))
-    (and b (goto-char b))))
+  (when group
+    (let ((b (text-property-any (point-min) (point-max) 
+                               'gnus-group (gnus-intern-safe
+                                            group gnus-active-hashtb))))
+      (and b (goto-char b)))))
 
 (defun gnus-group-next-group (n)
   "Go to next N'th newsgroup.
@@ -5642,7 +5646,8 @@ If N is negative, this group and the N-1 previous groups will be checked."
   (when (and group (gnus-activate-group group 'scan))
     (gnus-get-unread-articles-in-group 
      (gnus-get-info group) (gnus-active group))
-    (gnus-group-update-group-line)
+    (when (gnus-group-goto-group group)
+      (gnus-group-update-group-line))
     t))
 
 (defun gnus-group-fetch-faq (group &optional faq-dir)
@@ -7187,19 +7192,17 @@ If NO-DISPLAY, don't generate a summary buffer."
   (let (id heads)
     (mapatoms
      (lambda (refs)
-       (if (not (car (symbol-value refs)))
-          (progn
-            (setq heads (cdr (symbol-value refs)))
-            (while heads
-              (if (not (memq (mail-header-number (car (car heads)))
-                             gnus-newsgroup-dormant))
-                  (progn
-                    (setq id (symbol-name refs))
-                    (while (and (setq id (gnus-build-get-header id))
-                                (not (car (gnus-gethash 
-                                           id gnus-newsgroup-dependencies)))))
-                    (setq heads nil))
-                (setq heads (cdr heads)))))))
+       (when (car (symbol-value refs))
+        (setq heads (cdr (symbol-value refs)))
+        (while heads
+          (if (memq (mail-header-number (car (car heads)))
+                    gnus-newsgroup-dormant)
+              (setq heads (cdr heads))
+            (setq id (symbol-name refs))
+            (while (and (setq id (gnus-build-get-header id))
+                        (not (car (gnus-gethash 
+                                   id gnus-newsgroup-dependencies)))))
+            (setq heads nil)))))
      gnus-newsgroup-dependencies)))
 
 (defun gnus-build-get-header (id)
@@ -7226,9 +7229,10 @@ If NO-DISPLAY, don't generate a summary buffer."
                             (read (current-buffer)) deps))
               (gnus-parent-id (mail-header-references header))))))
       (when header
-       (setq gnus-newsgroup-headers (cons header gnus-newsgroup-headers)
-             gnus-newsgroup-ancient (cons (mail-header-number header)
-                                          gnus-newsgroup-ancient))))))
+       (let ((number (mail-header-number header)))
+         (push number gnus-newsgroup-limit)
+         (push header gnus-newsgroup-headers)
+         (push number gnus-newsgroup-ancient))))))
 
 (defun gnus-rebuild-thread (id)
   "Rebuild the thread containing ID."
@@ -10093,15 +10097,13 @@ and `request-accept' functions. (Ie. mail newsgroups at present.)"
                    gnus-newsrc-hashtb)))
                 (info (nth 2 entry))
                 (article (car articles)))
-           (gnus-summary-goto-subject article)
-           (gnus-summary-mark-article article gnus-canceled-mark)
            ;; Update the group that has been moved to.
            (if (not info)
                ()                      ; This group does not exist yet.
-             (if (not (memq article gnus-newsgroup-unreads))
-                 (gnus-info-set-read 
-                  info (gnus-add-to-range (gnus-info-read info) 
-                                          (list (cdr art-group)))))
+             (unless (memq article gnus-newsgroup-unreads)
+               (gnus-info-set-read 
+                info (gnus-add-to-range (gnus-info-read info) 
+                                        (list (cdr art-group)))))
 
              ;; Copy any marks over to the new group.
              (let ((marks '((tick . gnus-newsgroup-marked)
@@ -10129,14 +10131,8 @@ and `request-accept' functions. (Ie. mail newsgroups at present.)"
                       (gnus-info-group info) (car (car marks))
                       (list to-article) info))
                  (setq marks (cdr marks)))))
-           ;; Update marks.
-           (setq gnus-newsgroup-marked (delq article gnus-newsgroup-marked))
-           (setq gnus-newsgroup-unreads (delq article gnus-newsgroup-unreads))
-           (setq gnus-newsgroup-dormant
-                 (delq article gnus-newsgroup-dormant))
-           (setq gnus-newsgroup-reads
-                 (cons (cons article gnus-canceled-mark)
-                       gnus-newsgroup-reads)))
+           (gnus-summary-goto-subject article)
+           (gnus-summary-mark-article article gnus-canceled-mark))
        (gnus-message 1 "Couldn't move article %s" (car articles)))
       (gnus-summary-remove-process-mark (car articles))
       (setq articles (cdr articles)))
@@ -13147,6 +13143,8 @@ If it is down, start it up (again)."
 (defun gnus-get-function (method function)
   "Return a function symbol based on METHOD and FUNCTION."
   ;; Translate server names into methods.
+  (unless method
+    (error "Attempted use of a nil select method"))
   (when (stringp method)
     (setq method (gnus-server-to-method method)))
   (let ((func (intern (format "%s-%s" (car method) function))))
index 29b35fd..2df3070 100644 (file)
@@ -57,6 +57,8 @@
 (defvar nnbabyl-group-alist nil)
 (defvar nnbabyl-active-timestamp nil)
 
+(defvar nnbabyl-previous-buffer-mode nil)
+
 \f
 
 (defvar nnbabyl-current-server nil)
@@ -68,6 +70,7 @@
    (list 'nnbabyl-get-new-mail nnbabyl-get-new-mail)
    '(nnbabyl-current-group nil)
    '(nnbabyl-status-string "")
+   '(nnbabyl-previous-buffer-mode nil)
    '(nnbabyl-group-alist nil)))
 
 \f
     (setq nnbabyl-current-server server)))
 
 (defun nnbabyl-close-server (&optional server)
-  (setq nnbabyl-current-server nil)
+  ;; Restore buffer mode.
+  (when (and (nnbabyl-server-opened)
+            nnbabyl-previous-buffer-mode)
+    (save-excursion
+      (set-buffer nnbabyl-mbox-buffer)
+      (narrow-to-region
+       (car (car nnbabyl-previous-buffer-mode))
+       (cdr (car nnbabyl-previous-buffer-mode)))
+      (funcall (cdr nnbabyl-previous-buffer-mode))))
+  (setq nnbabyl-current-server nil
+       nnbabyl-mbox-buffer nil)
   t)
 
 (defun nnbabyl-server-opened (&optional server)
        (set-buffer (setq nnbabyl-mbox-buffer 
                          (nnheader-find-file-noselect 
                           nnbabyl-mbox-file nil 'raw)))
+       ;; Save buffer mode.
+       (setq nnbabyl-previous-buffer-mode 
+             (cons (cons (point-min) (point-max))
+                   major-mode))
+
        (buffer-disable-undo (current-buffer))
        (widen)
        (setq buffer-read-only nil)
index f7f90f1..1869372 100644 (file)
@@ -477,10 +477,11 @@ nn*-request-list should have been called before calling this function."
 (defun nnmail-process-unix-mail-format (func)
   (let ((delim (concat "^" rmail-unix-mail-delimiter))
        start message-id content-length end skip head-end)
+    (goto-char (point-min))
     (if (not (and (re-search-forward delim nil t)
                  (goto-char (match-beginning 0))))
        ;; Possibly wrong format?
-       (error "Found no mail!") 
+       ()
       ;; Carry on until the bitter end.
       (while (not (eobp))
        (setq start (point)
@@ -550,10 +551,11 @@ nn*-request-list should have been called before calling this function."
 (defun nnmail-process-mmfd-mail-format (func)
   (let ((delim "^\^A\^A\^A\^A$")
        start message-id end)
+    (goto-char (point-min))
     (if (not (and (re-search-forward delim nil t)
                  (forward-line 1)))
        ;; Possibly wrong format?
-       (error "Found no mail!") 
+       ()
       ;; Carry on until the bitter end.
       (while (not (eobp))
        (setq start (point))
index c30feaa..22ca71b 100644 (file)
@@ -1,3 +1,7 @@
+Mon Dec  4 05:09:28 1995  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.texi (Mail): Addition.
+
 Sun Dec  3 00:34:35 1995  Lars Magne Ingebrigtsen  <larsi@narfi.ifi.uio.no>
 
        * gnus.texi (Topic Commands): Addition.
diff --git a/texi/gnus-faq.texi b/texi/gnus-faq.texi
new file mode 100644 (file)
index 0000000..a899e7d
--- /dev/null
@@ -0,0 +1,659 @@
+\input texinfo
+@c -*-texinfo-*-
+@c Copyright (C) 1995 Free Software Foundation, Inc.
+@setfilename gnus-faq.info
+
+@node Frequently Asked Questions
+@section Frequently Asked Questions
+
+This is the Gnus Frequently Asked Questions list.
+If you have a Web browser, the official hypertext version is at
+@file{http://www.miranova.com/~steve/gnus-faq.html>}, and has
+probably been updated since you got this manual.
+
+@menu
+* Installation FAQ::      Installation of Gnus.
+* Customization FAQ::     Customizing Gnus.
+* Reading News FAQ::      News Reading Questions.
+* Reading Mail FAQ::      Mail Reading Questions.
+@end menu
+
+
+@node Installation FAQ
+@subsection Installation
+
+@itemize @bullet
+@item
+Q1.1  What is the latest version of Gnus?
+
+The latest (and greatest) version is 5.0.10.  You might also run
+across something called @emph{September Gnus}.  September Gnus
+is the alpha version of the next major release of Gnus.  It is currently
+not stable enough to run unless you are prepared to debug lisp.
+
+@item
+Q1.2  Where do I get Gnus?
+
+Any of the following locations:
+
+@itemize @minus
+@item
+@file{ftp://ftp.ifi.uio.no/pub/emacs/gnus/gnus.tar.gz}
+
+@item
+@file{ftp://ftp.pilgrim.umass.edu/pub/misc/ding/}
+
+@item
+@file{gopher://gopher.pilgrim.umass.edu/11/pub/misc/ding/}
+
+@item
+@file{ftp://aphrodite.nectar.cs.cmu.edu/pub/ding-gnus/}
+
+@item
+@file{ftp://ftp.solace.mh.se:/pub/gnu/elisp/}
+
+@end itemize
+
+@item
+Q1.3  Which version of Emacs do I need?
+
+At least GNU Emacs 19.28, or XEmacs 19.12 is recommended.  GNU Emacs
+19.25 has been reported to work under certain circumstances, but it
+doesn't @emph{officially} work on it.  19.27 has also been reported to
+work.  Gnus has been reported to work under OS/2 as well as Unix.
+
+
+@item
+Q1.4  Where is timezone.el?
+
+Upgrade to XEmacs 19.13.  In earlier versions of XEmacs this file was
+placed with Gnus 4.1.3, but that has been corrected.
+
+
+@item
+Q1.5  When I run Gnus on XEmacs 19.13 I get weird error messages.
+
+You're running an old version of Gnus.  Upgrade to at least version
+5.0.4.
+
+
+@item
+Q1.6  How do I unsubscribe from the Mailing List?
+
+Send an e-mail message to @file{ding-request@@ifi.uio.no} with the magic word
+@emph{unsubscribe} somewhere in it, and you will be removed.
+
+If you are reading the digest version of the list, send an e-mail message
+to @*
+@file{ding-rn-digests-d-request@@moe.shore.net}
+with @emph{unsubscribe} as the subject and you will be removed.
+
+
+@item
+Q1.7  How do I run Gnus on both Emacs and XEmacs?
+
+The basic answer is to byte-compile under XEmacs, and then you can
+run under either Emacsen.  There is, however, a potential version
+problem with easymenu.el with Gnu Emacs prior to 19.29.
+
+Per Abrahamsen <abraham@@dina.kvl.dk> writes :@*
+The internal easymenu.el interface changed between 19.28 and 19.29 in
+order to make it possible to create byte compiled files that can be
+shared between Gnu Emacs and XEmacs.  The change is upward
+compatible, but not downward compatible. 
+This gives the following compatibility table:
+
+@example
+Compiled with:  | Can be used with:
+----------------+--------------------------------------
+19.28           | 19.28         19.29
+19.29           |               19.29           XEmacs
+XEmacs          |               19.29           XEmacs
+@end example
+
+If you have Gnu Emacs 19.28 or earlier, or XEmacs 19.12 or earlier, get
+a recent version of auc-menu.el from
+@file{ftp://ftp.iesd.auc.dk/pub/emacs-lisp/auc-menu.el}, and install it
+under the name easymenu.el somewhere early in your load path.
+
+
+@item
+Q1.8 What resources are available?
+
+There is the newsgroup Gnu.emacs.gnus. Discussion of Gnus 5.x is now
+taking place there. There is also a mailing list, send mail to
+@file{ding-request@@ifi.uio.no} with the magic word @emph{subscribe}
+somewhere in it.
+
+@emph{NOTE:} the traffic on this list is heavy so you may not want to be
+on it (unless you use Gnus as your mailer reader, that is). The mailing
+list is mainly for developers and testers.
+
+Gnus has a home World Wide Web page at@*
+@file{http://www.ifi.uio.no/~larsi/ding.html}.
+   
+Gnus has a write up in the X Windows Applications FAQ at@*
+@file{http://www.ee.ryerson.ca:8080/~elf/xapps/Q-III.html}.
+   
+The Gnus manual is also available on the World Wide Web. The canonical
+source is in Norway at@*
+@file{http://www.ifi.uio.no/~larsi/ding-manual/gnus_toc.html}.
+
+There are three mirrors in the United States:
+@enumerate
+@item
+@file{http://www.miranova.com/gnus-man/}
+
+@item
+@file{http://www.pilgrim.umass.edu/pub/misc/ding/manual/gnus_toc.html}
+
+@item
+@file{http://www.rtd.com/~woo/gnus/}
+
+@end enumerate
+
+PostScript copies of the Gnus Reference card are available from@*
+@file{ftp://ftp.cs.ualberta.ca/pub/oolog/gnus/}.  They are mirrored at@*
+@file{ftp://ftp.pilgrim.umass.edu/pub/misc/ding/refcard/} in the
+United States. And@*
+@file{ftp://marvin.fkphy.uni-duesseldorf.de/pub/gnus/}
+in Germany.
+   
+An online version of the Gnus FAQ is available at@*
+@file{http://www.miranova.com/~steve/gnus-faq.html}. Off-line formats
+are also available:@*
+ASCII: @file{ftp://ftp.miranova.com/pub/gnus/gnus-faq}@*
+PostScript: @file{ftp://ftp.miranova.com/pub/gnus/gnus-faq.ps}.
+
+
+@item
+Q1.9  Gnus hangs on connecting to NNTP server
+
+I am running XEmacs on SunOS and Gnus prints a message about Connecting
+to NNTP server and then just hangs.
+
+Ben Wing <wing@@netcom.com> writes :@*
+I wonder if you're hitting the infamous @emph{libresolv} problem.
+The basic problem is that under SunOS you can compile either
+with DNS or NIS name lookup libraries but not both.  Try
+substituting the IP address and see if that works; if so, you
+need to download the sources and recompile.
+
+
+@item
+Q1.10  Mailcrypt 3.4 doesn't work
+
+This problem is verified to still exist in Gnus 5.0.9 and MailCrypt 3.4.
+The answer comes from Peter Arius
+<arius@@immd2.informatik.uni-erlangen.de>.
+
+I found out that mailcrypt uses
+@code{gnus-eval-in-buffer-window}, which is a macro.
+It seems as if you have
+compiled mailcrypt with plain old GNUS in load path, and the XEmacs byte
+compiler has inserted that macro definition into
+@file{mc-toplev.elc}.
+The solution is to recompile @file{mc-toplev.el} with Gnus 5 in
+load-path, and it works fine.
+
+Steve Baur <steve@@miranova.com> adds :@*
+The problem also manifests itself if neither GNUS 4 nor Gnus 5 is in the
+load-path.
+
+
+@item
+Q1.11  What other packages work with Gnus?
+
+@itemize @minus
+@item
+Mailcrypt.
+
+Mailcrypt is an Emacs interface to PGP.  It works, it installs
+without hassle, and integrates very easily.  Mailcrypt can be
+obtained from@*
+@file{ftp://cag.lcs.mit.edu/pub/patl/mailcrypt-3.4.tar.gz}.
+
+@item
+Tiny Mime.
+
+Tiny Mime is an Emacs MUA interface to MIME.  Installation is
+a two-step process unlike most other packages, so you should
+be prepared to move the byte-compiled code somewhere.  There
+are currently two versions of this package available.  It can
+be obtained from@*
+@file{ftp://ftp.jaist.ac.jp/pub/GNU/elisp/}.
+Be sure to apply the supplied patch.  It works with Gnus through
+version 5.0.9.  In order for all dependencies to work correctly
+the load sequence is as follows:
+@lisp
+  (load "tm-setup")
+  (load "gnus")
+  (load "mime-compose")
+@end lisp
+
+@emph{NOTE:} Loading the package disables citation highlighting by
+default.  To get the old behavior back, use the @kbd{M-t} command.
+
+@end itemize
+
+@end itemize
+
+
+@node Customization FAQ
+@subsection Customization
+
+@itemize @bullet
+@item
+Q2.1  Custom Edit does not work under XEmacs
+
+The custom package has not been ported to XEmacs.
+
+
+@item
+Q2.2  How do I quote messages?
+
+I see lots of messages with quoted material in them.  I am wondering
+how to have Gnus do it for me.
+
+This is Gnus, so there are a number of ways of doing this.  You can use
+the built-in commands to do this.  There are the @kbd{F} and @kbd{R}
+keys from the summary buffer which automatically include the article
+being responded to.  These commands are also selectable as @i{Followup
+and Yank} and @i{Reply and Yank} in the Post menu.
+
+@kbd{C-c C-y} grabs the previous message and prefixes each line with
+@code{ail-indentation-spaces} spaces or @code{mail-yank-prefix} if that is
+non-nil, unless you have set your own @code{mail-citation-hook}, which will
+be called to to do the job.
+
+You might also consider the Supercite package, which allows for pretty
+arbitrarily complex quoting styles.  Some people love it, some people
+hate it.
+
+
+@item
+Q2.3 How can I keep my nnvirtual:* groups sorted?
+
+How can I most efficiently arrange matters so as to keep my nnvirtual:*
+(etc) groups at the top of my group selection buffer, whilst keeping
+everything sorted in alphabetical order.
+   
+If you don't subscribe often to new groups then the easiest way is to
+first sort the groups and then manually kill and yank the virtuals
+wherever you want them.
+
+
+@item
+Q2.4  Any good suggestions on stuff for an all.SCORE file?
+
+Here is a collection of suggestions from the Gnus mailing list.
+
+@enumerate
+@item
+From ``Dave Disser'' <disser@@sdd.hp.com>@*
+I like blasting anything without lowercase letters.  Weeds out most of
+the make $$ fast, as well as the lame titles like ``IBM'' and ``HP-UX''
+with no further description.
+@lisp
+ (("Subject"
+  ("^\\(Re: \\)?[^a-z]*$" -200 nil R)))
+@end lisp
+
+@item
+From ``Peter Arius'' <arius@@immd2.informatik.uni-erlangen.de>@*
+The most vital entries in my (still young) all.SCORE:
+@lisp
+(("xref"
+  ("alt.fan.oj-simpson" -1000 nil s))
+ ("subject"
+  ("\\<\\(make\\|fast\\|big\\)\\s-*\\(money\\|cash\\|bucks?\\)\\>" -1000 nil r)
+  ("$$$$" -1000 nil s)))
+@end lisp
+
+@item
+From ``Per Abrahamsen'' <abraham@@dina.kvl.dk>@*
+@lisp
+(("subject"
+  ;; CAPS OF THE WORLD, UNITE
+  ("^..[^a-z]+$" -1 nil R)
+  ;; $$$ Make Money $$$ (Try work)
+  ("$" -1 nil s)
+  ;; I'm important! And I have exclamation marks to prove it!
+  ("!" -1 nil s)))
+@end lisp
+
+@item
+From ``heddy boubaker'' <boubaker@@cenatls.cena.dgac.fr>@*
+I  would like to contribute with mine.
+@lisp
+(
+ (read-only t)
+ ("subject"
+  ;; ALL CAPS SUBJECTS
+  ("^\\([Rr][Ee]: +\\)?[^a-z]+$" -1 nil R)
+  ;; $$$ Make Money $$$
+  ("$$" -10 nil s)
+  ;; Empty subjects are worthless!
+  ("^ *\\([(<]none[>)]\\|(no subject\\( given\\)?)\\)? *$" -10 nil r)
+  ;; Sometimes interesting announces occur!
+  ("ANN?OU?NC\\(E\\|ING\\)" +10 nil r)
+  ;; Some people think they're on mailing lists
+  ("\\(un\\)?sub?scribe" -100 nil r)
+  ;; Stop Micro$oft NOW!!
+  ("\\(m\\(icro\\)?[s$]\\(oft\\|lot\\)?-?\\)?wind?\\(ows\\|aube\\|oze\\)?[- ]*\\('?95\\|NT\\|3[.]1\\|32\\)" -1001 nil r)
+  ;; I've nothing to buy
+  ("\\(for\\|4\\)[- ]*sale" -100 nil r)
+  ;; SELF-DISCIPLINED people
+  ("\\[[^a-z0-9 \t\n][^a-z0-9 \t\n]\\]" +100 nil r)
+  )
+ ("from"
+  ;; To keep track of posters from my site
+  (".dgac.fr" +1000 nil s))
+ ("followup"
+  ;; Keep track of answers to my posts
+  ("boubaker" +1000 nil s))
+ ("lines"
+  ;; Some people have really nothing to say!!
+  (1 -10 nil <=))
+ (mark -100)
+ (expunge -1000)
+ )
+@end lisp
+
+@item
+From ``Christopher Jones'' <cjones@@au.oracle.com>@*
+The sample @file{all.SCORE} files from Per and boubaker could be
+augmented with:
+@lisp
+       (("subject"
+         ;; No junk mail please!
+         ("please ignore" -500 nil s)
+         ("test" -500 nil e))
+       )
+@end lisp
+
+@item
+From ``Brian Edmonds'' <edmonds@@cs.ubc.ca>@*
+Augment any of the above with a fast method of scoring down
+excessively cross posted articles.
+@lisp
+ ("xref"
+  ;; the more cross posting, the exponentially worse the article
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+" -1 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -2 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -4 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -8 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -16 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -32 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -64 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -128 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -256 nil r)
+  ("^xref: \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+ \\S-+" -512 nil r))
+@end lisp
+
+@end enumerate
+
+
+@item
+Q2.5  What do I use to yank-through when replying?
+
+You should probably reply and followup with @kbd{R} and @kbd{F}, instead
+of @kbd{r} and @kbd{f}, which solves your problem.  But you could try
+something like:
+
+@example
+(defconst mail-yank-ignored-headers
+  "^.*:"
+  "Delete these headers from old message when it's inserted in a reply.")
+@end example
+
+
+@item
+Q2.6  I don't like the default WWW browser
+
+Now when choosing an URL Gnus starts up a W3 buffer, I would like it
+to always use Netscape (I don't browse in text-mode ;-).
+
+@enumerate
+@item
+Activate `Customize...' from the `Help' menu.
+
+@item
+Scroll down to the `WWW Browser' field.
+
+@item
+Click `mouse-2' on `WWW Browser'.
+
+@item
+Select `Netscape' from the pop up menu.
+
+@item
+Press `C-c C-c'
+
+@end enumerate
+
+If you are using XEmacs then to specify Netscape do
+@lisp
+  (setq gnus-button-url 'gnus-netscape-open-url)
+@end lisp
+
+
+@item
+Q2.7 What, if any, relation is between ``ask-server'' and ``(setq
+gnus-read-active-file 'some)''?
+
+In order for Gnus to show you the complete list of newsgroups, it will
+either have to either store the list locally, or ask the server to
+transmit the list. You enable the first with
+
+@lisp
+        (setq gnus-save-killed-list t)
+@end lisp
+
+and the second with
+
+@lisp
+        (setq gnus-read-active-file t)
+@end lisp
+
+If both are disabled, Gnus will not know what newsgroups exists. There
+is no option to get the list by casting a spell.
+
+
+@item
+Q2.8  Moving between groups is slow.
+
+Per Abrahamsen <abraham@@dina.kvl.dk> writes:@*
+
+Do you call @code{define-key} or something like that in one of the
+summary mode hooks?  This would force Emacs to recalculate the keyboard
+shortcuts.  Removing the call should speed up @kbd{M-x gnus-summary-mode
+RET} by a couple of orders of magnitude.  You can use
+
+@lisp
+(define-key gnus-summary-mode-map KEY COMMAND)
+@end lisp
+
+in your @file{.gnus} instead.
+
+@end itemize
+
+
+@node Reading News FAQ
+@subsection Reading News
+
+@itemize @bullet
+@item
+Q3.1  How do I convert my kill files to score files?
+
+A kill-to-score translator was written by Ethan Bradford
+<ethanb@@ptolemy.astro.washington.edu>.  It is available from@*
+@file{http://baugi.ifi.uio.no/~larsi/ding-various/gnus-kill-to-score.el}.
+
+
+@item
+Q3.2 My news server has a lot of groups, and killing groups is painfully
+slow.
+
+Don't do that then.  The best way to get rid of groups that should be
+dead is to edit your newsrc directly.  This problem will be addressed
+in the near future.
+
+
+@item
+Q3.3  How do I use an NNTP server with authentication?
+
+Put the following into your .gnus:
+@lisp
+ (add-hook 'nntp-server-opened-hook 'nntp-send-authinfo)
+@end lisp
+
+
+@item
+Q3.4  Not reading the first article.
+
+How do I avoid reading the first article when a group is selected?
+
+@enumerate
+@item
+Use @kbd{RET} to select the group instead of @kbd{SPC}.
+
+@item
+@code{(setq gnus-auto-select first nil)}
+
+@item
+Luis Fernandes <elf@@mailhost.ee.ryerson.ca>writes:@*
+This is what I use...customize as necessary...
+
+@lisp
+;;; Don't auto-select first article if reading sources, or archives or
+;;; jobs postings, etc. and just display the summary buffer
+(add-hook 'gnus-select-group-hook
+         (function
+          (lambda ()
+            (cond ((string-match "sources" gnus-newsgroup-name)
+                   (setq gnus-auto-select-first nil))
+                          ((string-match "jobs" gnus-newsgroup-name)
+                               (setq gnus-auto-select-first nil))
+                  ((string-match "comp\\.archives" gnus-newsgroup-name)
+                   (setq gnus-auto-select-first nil))
+                  ((string-match "reviews" gnus-newsgroup-name)
+                   (setq gnus-auto-select-first nil))
+                  ((string-match "announce" gnus-newsgroup-name)
+                   (setq gnus-auto-select-first nil))
+                  ((string-match "binaries" gnus-newsgroup-name)
+                   (setq gnus-auto-select-first nil))
+                  (t
+                   (setq gnus-auto-select-first t))))))
+@end lisp
+
+@item
+Per Abrahamsen <abraham@@dina.kvl.dk> writes:@*
+Another possibility is to create an @file{all.binaries.all.SCORE} file
+like this:
+
+@lisp
+((local
+  (gnus-auto-select-first nil)))
+@end lisp
+
+and insert 
+@lisp
+       (setq gnus-auto-select-first t)
+@end lisp
+
+in your @file{.gnus}.
+
+@end enumerate
+
+@item
+Q3.5  Why aren't BBDB known posters marked in the summary buffer?
+
+Brian Edmonds <edmonds@@cs.ubc.ca> writes:@*
+Due to changes in Gnus 5.0, @file{bbdb-gnus.el} no longer marks known
+posters in the summary buffer.  An updated version, @file{gnus-bbdb.el}
+is available at the locations listed below.  This package also supports
+autofiling of incoming mail to folders specified in the BBDB.  Extensive
+instructions are included as comments in the file.
+
+Send mail to @file{majordomo@@edmonds.home.cs.ubc.ca} with the following
+line in the body of the message: @emph{get misc gnus-bbdb.el}.
+
+Or get it from the World Wide Web:@*
+@file{http://www.cs.ubc.ca/spider/edmonds/gnus-bbdb.el}.
+
+@end itemize
+
+
+@node Reading Mail FAQ
+@subsection Reading Mail
+
+@itemize @bullet
+@item
+Q4.1 What does the message ``Buffer has changed on disk'' mean in a mail
+group?
+
+Your filter program should not deliver mail directly to your folders,
+instead it should put the mail into spool files.  Gnus will then move
+the mail safely from the spool files into the folders.  This will
+eliminate the problem.  Look it up in the manual, in the section
+entitled ``Mail & Procmail''.
+
+
+@item
+Q4.2  How do you make articles un-expirable?
+
+I am using nnml to read news and have used
+@code{gnus-auto-expirable-newsgroups} to automagically expire articles
+in some groups (Gnus being one of them).  Sometimes there are
+interesting articles in these groups that I want to keep.  Is there any
+way of explicitly marking an article as un-expirable - that is mark it
+as read but not expirable?
+
+Use @kbd{u}, @kbd{!}, @kbd{d} or @kbd{M-u} in the summary buffer. You
+just remove the @kbd{E} mark by setting some other mark. It's not
+necessary to tick the articles.
+
+
+@item
+Q4.3  How do I delete bogus nnml: groups?
+
+My problem is that I have various mail (nnml) groups generated while
+experimenting with Gnus. How do I remove them now? Setting the level to
+9 does not help. Also @code{gnus-group-check-bogus-groups} does not
+recognize them.
+
+Removing mail groups is tricky at the moment. (It's on the to-do list,
+though.) You basically have to kill the groups in Gnus, shut down Gnus,
+edit the active file to exclude these groups, and probably remove the
+nnml directories that contained these groups as well. Then start Gnus
+back up again.
+
+
+@item
+Q4.4  What happened to my new mail groups?
+
+I got new mail, but I have
+never seen the groups they should have been placed in.
+
+They are probably there, but as zombies. Press @kbd{A z} to list
+zombie groups, and then subscribe to the groups you want with @kbd{u}.
+This is all documented quite nicely in the user's manual.
+
+
+@item
+Q4.5  Not scoring mail groups
+
+How do you @emph{totally} turn off scoring in mail groups?
+
+Use an nnbabyl:all.SCORE (or nnmh, or nnml, or whatever) file containing:
+
+@example
+((adapt ignore)
+ (local (gnus-use-scoring nil))
+ (exclude-files "all.SCORE"))
+@end example
+
+@end itemize
+
+
index 138ec58..00ffb2a 100644 (file)
@@ -799,15 +799,15 @@ if you're in a hurry as well.
 
 
 @node Slave Gnusii
-@section Slave Gnusii
+@section Slave Gnusiï
 @cindex slave
 
 You might want to run more than one Emacs with more than one Gnus at the
 same time.  If you are using different @file{.newsrc} files (eg., if you
-are using the two different Gnusii to read from two different servers),
+are using the two different Gnusiï to read from two different servers),
 that is no problem whatsoever.  You just do it.
 
-The problem appears when you want to run two Gnusii that use the same
+The problem appears when you want to run two Gnusiï that use the same
 @code{.newsrc} file.
 
 To work around that problem some, we here at the Think-Tank at the Gnus
@@ -819,7 +819,7 @@ me.  Usage of the patent (@dfn{Master/Slave Relationships In Computer
 Applications}) will be much more expensive, of course.)
 
 Anyways, you start one Gnus up the normal way with @kbd{M-x gnus} (or
-however you do it).  Each subsequent slave Gnusii should be started with
+however you do it).  Each subsequent slave Gnusiï should be started with
 @kbd{M-x gnus-slave}.  These slaves won't save normal @file{.newsrc}
 files, but some slave files that contains information only on what
 groups have been read in the slave session.  When a master Gnus starts,
@@ -4229,6 +4229,7 @@ server.
 Commands for composing a mail message:
 
 @table @kbd
+
 @item S r
 @itemx r
 @kindex S r (Summary)
@@ -4236,6 +4237,7 @@ Commands for composing a mail message:
 @findex gnus-summary-reply
 Mail a reply to the author of the current article
 (@code{gnus-summary-reply}). 
+
 @item S R
 @itemx R
 @kindex R (Summary)
@@ -4244,16 +4246,19 @@ Mail a reply to the author of the current article
 Mail a reply to the author of the current article and include the
 original message (@code{gnus-summary-reply-with-original}).  This
 command uses the process/prefix convention.
+
 @item S o m
 @kindex S o m (Summary)
 @findex gnus-summary-mail-forward
 Forward the current article to some other person
 (@code{gnus-summary-mail-forward}). 
+
 @item S o p
 @kindex S o p (Summary)
 @findex gnus-summary-post-forward
 Forward the current article to a newsgroup
 (@code{gnus-summary-post-forward}).
+
 @item S m
 @itemx m
 @kindex m (Summary)
@@ -4261,6 +4266,7 @@ Forward the current article to a newsgroup
 @findex gnus-summary-mail-other-window
 Send a mail to some other person
 (@code{gnus-summary-mail-other-window}).
+
 @item S D b
 @kindex S D b (Summary)
 @findex gnus-summary-resend-bounced-mail
@@ -4274,12 +4280,32 @@ automatically deleted first.  If you give a prefix to this command, and
 the bounced mail is a reply to some other mail, Gnus will try to fetch
 that mail and display it for easy perusal of its headers.  This might
 very well fail, though.
+
+@item S D r
+@kindex S D r (Summary)
+@findex gnus-summary-resend-message
+Not to be confused with the previous command,
+@code{gnus-summary-resend-message} will prompt you for an address to
+send the current message off to, and then send it to that place.  The
+headers of the message won't be altered---but lots of headers that say
+@samp{Resent-To}, @samp{Resent-From} and so on will be added.  This
+means that you actually send a mail to someone that has a @samp{To}
+header that (proabbly) points to yourself.  This will confuse people.
+So, natcherly you'll only do that if you're really eVIl.  
+
+This command is mainly used if you have several accounts and want to
+ship a mail to a different account of yours.  (If you're both
+@samp{root} and @samp{postmaster} and get a mail for @samp{postmaster}
+to the @samp{root} account, you may want to resend it to
+@samp{postmaster}.  Ordnung muss sein!
+
 @item S O m
 @kindex S O m (Summary)
 @findex gnus-uu-digest-mail-forward
 Digest the current series and forward the result using mail
 (@code{gnus-uu-digest-mail-forward}).  This command uses the
 process/prefix convention (@pxref{Process/Prefix}). 
+
 @item S O p
 @kindex S O p (Summary)
 @findex gnus-uu-digest-post-forward
@@ -4979,7 +5005,7 @@ If the group doesn't exist, it will be created and you'll be subscribed
 to it.
 
 @findex gnus-summary-send-draft
-@kindex S D c (Summary)
+@kindex S D c (Summary)
 When you want to continue editing the article, you simply enter the
 draft group and push @kbd{S D c} (@code{gnus-summary-send-draft}) to do
 that.  You will be placed in a buffer where you left off.
@@ -10046,11 +10072,7 @@ So be careful not to mix up strings (the latter) with symbols (the
 former).  The manual is unambiguous, but it can be confusing.
 
 
-
-@node Frequently Asked Questions
-@section Frequently Asked Questions
-
-
+@include gnus-faq.texi
 
 @node Index
 @chapter Index