*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 19:26:13 +0000 (19:26 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 19:26:13 +0000 (19:26 +0000)
19 files changed:
lisp/ChangeLog
lisp/dgnushack.el
lisp/gnus-cache.el
lisp/gnus-cite.el
lisp/gnus-mh.el
lisp/gnus-picon.el
lisp/gnus-score.el
lisp/gnus-uu.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/message.el
lisp/nndb.el
lisp/nnheader.el
lisp/nnheaderxm.el [new file with mode: 0644]
lisp/nnmail.el
lisp/nnmh.el
lisp/nnml.el
lisp/nntp.el
texi/gnus.texi

index ddc53b1..c18fa82 100644 (file)
@@ -1,5 +1,41 @@
+Tue Jun 11 02:29:33 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * gnus-score.el (gnus-score-find-trace): Erase contents first.
+
+       * nntp.el (nntp-send-region-to-server): Make sure the server is
+       up. 
+
+       * gnus.el (gnus-summary-edit-article-done): Reversed parameters. 
+
+       * nnheaderxm.el: Renamed.
+
+       * nnmail.el ((eq system-type 'windows-nt)): Moved here.
+
+Tue Jun 11 02:11:30 1996  Lars Magne Ingebrigtsen  <larsi@eistla.ifi.uio.no>
+
+       * nnmail.el (nnmail-pop-password): New variable.
+       (nnmail-pop-password-required): New variable.
+       (nnmail-move-inbox): Use them.
+
+Mon Jun 10 21:40:13 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-xmas.el (gnus-xmas-summary-recenter): Don't sit-for on
+       XEmacs 19.13. 
+
+       * gnus-picon.el (gnus-group-display-picons): `set-to-buffer'?
+
+       * gnus.el (gnus-articles-to-read): Don't prompt for scored unless
+       there are many unscored ones.
+       (gnus-read-move-group-name): Prompt when group doesn't exist.
+       (gnus-output-to-file): New implementation.
+       (gnus-summary-save-article): Would duplicate while saving.
+       (gnus-summary-save-article): Prompts wouldn't be remembered.
+       (gnus-article-hide-headers): Inhibit point motion hooks. 
+
 Mon Jun 10 05:20:24 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
+       * gnus.el: Gnus v5.2.14 is released.
+
        * gnus-cus.el (()): Display X face by default.
 
        * gnus-xmas.el (gnus-article-x-face-command): New default.
index 99c67b9..6374dff 100644 (file)
@@ -49,7 +49,7 @@
        (setq byte-compile-warnings 
              '(free-vars unresolved callargs redefine obsolete))))
       (when (or (not (member file '("gnus-xmas.el" "gnus-picon.el" 
-                                   "messagexmas.el")))
+                                   "messagexmas.el" "nnheaderxm.el")))
                xemacs)
        (condition-case ()
            (byte-compile-file file)
index 49b292a..b478acc 100644 (file)
@@ -376,9 +376,10 @@ Returns the list of articles removed."
 (defun gnus-cache-update-article (group article)
   "If ARTICLE is in the cache, remove it and re-enter it."
   (when (gnus-cache-possibly-remove-article article nil nil nil t)
-    (gnus-cache-possibly-enter-article 
-     gnus-newsgroup-name article (gnus-summary-article-header article)
-     nil nil nil t)))
+    (let ((gnus-use-cache nil))
+      (gnus-cache-possibly-enter-article 
+       gnus-newsgroup-name article (gnus-summary-article-header article)
+       nil nil nil t))))
 
 (defun gnus-cache-possibly-remove-article (article ticked dormant unread 
                                                   &optional force)
index 83b07bb..9c1e855 100644 (file)
@@ -300,7 +300,7 @@ Lines matching `gnus-cite-attribution-suffix' and perhaps
 See the documentation for `gnus-article-highlight-citation'.
 If given a negative prefix, always show; if given a positive prefix,
 always hide."
-  (interactive (append (gnus-hidden-arg) 'force))
+  (interactive (append (gnus-hidden-arg) (list 'force)))
   (setq gnus-cited-text-button-line-format-spec 
        (gnus-parse-format gnus-cited-text-button-line-format 
                           gnus-cited-text-button-line-format-alist t))
@@ -361,7 +361,7 @@ percent and at least `gnus-cite-hide-absolute' lines of the body is
 cited text with attributions.  When called interactively, these two
 variables are ignored.
 See also the documentation for `gnus-article-highlight-citation'."
-  (interactive (append (gnus-hidden-arg) 'force))
+  (interactive (append (gnus-hidden-arg) (list 'force)))
   (unless (gnus-article-check-hidden-text 'cite arg)
     (save-excursion
       (set-buffer gnus-article-buffer)
index 9efab83..02317a2 100644 (file)
@@ -67,18 +67,17 @@ Optional argument FOLDER specifies folder name."
        (errbuf (get-buffer-create " *Gnus rcvstore*"))
        ;; Find the rcvstore program.
        (exec-path (if mh-lib (cons mh-lib exec-path) exec-path)))
-    (gnus-eval-in-buffer-window 
-     gnus-original-article-buffer
-     (save-restriction
-       (widen)
-       (unwind-protect
-          (call-process-region 
-           (point-min) (point-max) "rcvstore" nil errbuf nil folder)
-        (set-buffer errbuf)
-        (if (zerop (buffer-size))
-            (message "Article saved in folder: %s" folder)
-          (message "%s" (buffer-string)))
-        (kill-buffer errbuf))))
+    (gnus-eval-in-buffer-window gnus-original-article-buffer
+      (save-restriction
+       (widen)
+       (unwind-protect
+           (call-process-region 
+            (point-min) (point-max) "rcvstore" nil errbuf nil folder)
+         (set-buffer errbuf)
+         (if (zerop (buffer-size))
+             (message "Article saved in folder: %s" folder)
+           (message "%s" (buffer-string)))
+         (kill-buffer errbuf))))
     (setq gnus-newsgroup-last-folder folder)))
 
 (defun gnus-Folder-save-name (newsgroup headers &optional last-folder)
index 5315470..e4677f1 100644 (file)
@@ -212,7 +212,7 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
                          (replace-in-string from ".*@\\([_a-zA-Z0-9-.]+\\).*" 
                                             "\\1") 
                          "\\." "/")) "/")))
-          (set-to-buffer (gnus-get-buffer-name gnus-picons-display-where))
+          (set-buffer (gnus-get-buffer-name gnus-picons-display-where))
           (gnus-add-current-to-buffer-list)
           (beginning-of-buffer)
           (setq iconpoint (point))
@@ -264,7 +264,7 @@ To use:  (setq gnus-article-x-face-command 'gnus-picons-display-x-face)"
       (save-excursion
        (let
            ((iconpoint (point)))
-         (set-to-buffer (gnus-get-buffer-name gnus-picons-display-where))
+         (set-buffer (gnus-get-buffer-name gnus-picons-display-where))
          (gnus-add-current-to-buffer-list)
          (beginning-of-buffer)
          (cond 
index 61954d3..5e93d1b 100644 (file)
@@ -1859,6 +1859,10 @@ SCORE is the score to add."
        (gnus-newsgroup-scored nil)
        (buf (current-buffer))
        trace)
+    (when (get-buffer "*Gnus Scores*")
+      (save-excursion
+       (set-buffer "*Gnus Scores*")
+       (erase-buffer)))
     (setq gnus-score-trace nil)
     (gnus-possibly-score-headers 'trace)
     (if (not (setq trace gnus-score-trace))
index 6d10a5e..f8347b4 100644 (file)
@@ -185,11 +185,6 @@ Default is \"/tmp/\".")
   "*Non-nil means that gnus-uu won't peek inside archives looking for files to display. 
 Default is nil.")
 
-(defvar gnus-uu-view-and-save nil 
-  "*Non-nil means that the user will always be asked to save a file after viewing it.
-If the variable is nil, the user will only be asked to save if the
-viewing is unsuccessful. Default is nil.")
-
 (defvar gnus-uu-ignore-default-view-rules nil
   "*Non-nil means that gnus-uu will ignore the default viewing rules.
 Only the user viewing rules will be consulted. Default is nil.")
index da5fb09..d48a3d0 100644 (file)
@@ -145,9 +145,10 @@ displayed, no centering will be performed."
   ;; Suggested by earle@mahendo.JPL.NASA.GOV (Greg Earle).
   ;; Recenter only when requested.  Suggested by popovich@park.cs.columbia.edu.
   (when gnus-auto-center-summary
-    (sit-for 0)
     (let* ((height (if (fboundp 'window-displayed-height)
-                      (window-displayed-height)
+                      (progn
+                        (sit-for 0)
+                        (window-displayed-height))
                     (- (window-height) 2)))
           (top (cond ((< height 4) 0)
                      ((< height 7) 1)
index 89ca701..71d8f48 100644 (file)
@@ -1726,7 +1726,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-number "5.2.14"
+(defconst gnus-version-number "5.2.15"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
@@ -8848,7 +8848,8 @@ If READ-ALL is non-nil, all articles in the group are selected."
                           "How many articles from %s (default %d): "
                           gnus-newsgroup-name number))))
                    (if (string-match "^[ \t]*$" input) number input)))
-                ((and (> scored marked) (< scored number))
+                ((and (> scored marked) (< scored number)
+                      (> (- scored number) 20))
                  (let ((input
                         (read-string
                          (format "%s %s (%d scored, %d total): "
@@ -11823,8 +11824,8 @@ groups."
        (gnus-configure-windows 'summary)
        (gnus-summary-update-article (cdr gnus-article-current))
        (when gnus-use-cache
-         (gnus-cache-update-article 
-          (cdr gnus-article-current) (car gnus-article-current)))
+         (gnus-cache-update-article    
+          (car gnus-article-current) (cdr gnus-article-current)))
        (when gnus-keep-backlog
          (gnus-backlog-remove-article 
           (car gnus-article-current) (cdr gnus-article-current))))
@@ -12950,6 +12951,7 @@ The variable `gnus-default-article-saver' specifies the saver function."
          (gnus-summary-select-article t nil nil article))
        (save-excursion
          (set-buffer save-buffer)
+         (erase-buffer)
          (insert-buffer-substring gnus-original-article-buffer))
        (unless gnus-save-all-headers
          ;; Remove headers accoring to `gnus-saved-headers'.
@@ -12962,9 +12964,10 @@ The variable `gnus-default-article-saver' specifies the saver function."
              (error "No default saver is defined.")
            ;; !!! Magic!  The saving functions all save
            ;; `gnus-original-article-buffer' (or so they think),
-           ;; but we bind that variable to out save-buffer.
+           ;; but we bind that variable to our save-buffer.
            (set-buffer gnus-article-buffer)
            (let ((gnus-original-article-buffer save-buffer))
+             (set-buffer gnus-summary-buffer)
              (setq file (funcall
                          gnus-default-article-saver
                          (cond
@@ -13115,6 +13118,10 @@ save those articles instead."
          (setq to-newsgroup (or default "")))
       (or (gnus-active to-newsgroup)
          (gnus-activate-group to-newsgroup)
+         (if (gnus-y-or-n-p (format "No such group: %s.  Create it? "
+                                    to-newsgroup))
+             (or (gnus-request-create-group to-newsgroup)
+                 (error "Couldn't create group %s" to-newsgroup)))
          (error "No such group: %s" to-newsgroup)))
     to-newsgroup))
 
@@ -13912,6 +13919,7 @@ always hide."
                       ((and gnus-visible-headers
                             (listp gnus-visible-headers))
                        (mapconcat 'identity gnus-visible-headers "\\|"))))
+               (inhibit-point-motion-hooks t)
                want-list beg)
            ;; First we narrow to just the headers.
            (widen)
@@ -14540,20 +14548,14 @@ function and want to see what the date was before converting."
 
 (defun gnus-output-to-file (file-name)
   "Append the current article to a file named FILE-NAME."
-  (setq file-name (expand-file-name file-name))
-  (let ((artbuf (current-buffer))
-       (tmpbuf (get-buffer-create " *Gnus-output*")))
-    (save-excursion
-      (set-buffer tmpbuf)
-      (buffer-disable-undo (current-buffer))
-      (erase-buffer)
+  (let ((artbuf (current-buffer)))
+    (nnheader-temp-write nil
       (insert-buffer-substring artbuf)
       ;; Append newline at end of the buffer as separator, and then
       ;; save it to file.
       (goto-char (point-max))
       (insert "\n")
-      (append-to-file (point-min) (point-max) file-name))
-    (kill-buffer tmpbuf)))
+      (append-to-file (point-min) (point-max) file-name))))
 
 (defun gnus-convert-article-to-rmail ()
   "Convert article in current buffer to Rmail message format."
index a399e16..1e4b077 100644 (file)
@@ -2253,6 +2253,7 @@ Headers already prepared in the buffer are not modified."
     (setq message-buffer-list 
          (nconc message-buffer-list (list (current-buffer))))))
 
+(defvar mc-modes-alist)
 (defun message-setup (headers &optional replybuffer actions)
   (when (and (boundp 'mc-modes-alist)
             (not (assq 'message-mode mc-modes-alist)))
index f7644fa..e5a29c4 100644 (file)
@@ -227,7 +227,7 @@ with the contents of the BUFFER."
 
 (nnoo-import nndb
   (nntp))
+
 (provide 'nndb)
 
 
index f66a486..d4ae9a4 100644 (file)
@@ -543,7 +543,21 @@ without formatting."
   "Concat DIR as directory to FILE."
   (concat (file-name-as-directory dir) file))
 
-(require 'nnheaderems)
+(defun nnheader-ms-strip-cr ()
+  "Strip ^M from the end of all lines."
+  (save-excursion
+    (goto-char (point-min))
+    (while (re-search-forward "\r$" nil t)
+      (delete-backward-char 1))))
+
+(fset 'nnheader-run-at-time 'run-at-time)
+(fset 'nnheader-cancel-timer 'cancel-timer)
+(fset 'nnheader-find-file-noselect 'find-file-noselect)
+(fset 'nnheader-insert-file-contents-literally
+      'insert-file-contents-literally)
+
+(when (string-match "XEmacs\\|Lucid" emacs-version)
+  (require 'nnheaderxm))
 
 (run-hooks 'nnheader-load-hook)
 
diff --git a/lisp/nnheaderxm.el b/lisp/nnheaderxm.el
new file mode 100644 (file)
index 0000000..5d1df47
--- /dev/null
@@ -0,0 +1,180 @@
+;;; nnheaderxm.el --- making Gnus backends work under XEmacs
+;; Copyright (C) 1996 Free Software Foundation, Inc.
+
+;; Author: Lars Magne Ingebrigtsen <larsi@ifi.uio.no>
+;; 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, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Commentary:
+
+;;; Code:
+
+(defun nnheader-xmas-run-at-time (time repeat function &rest args)
+  (start-itimer
+   "nnheader-run-at-time"
+   `(lambda ()
+      (,function ,@args))
+   time repeat))
+
+(defun nnheader-xmas-cancel-timer (timer)
+  (delete-itimer timer))
+
+;; Written by Erik Naggum <erik@naggum.no>.
+;; Saved by Steve Baur <steve@miranova.com>.
+(defun nnheader-xmas-insert-file-contents-literally (filename &optional visit beg end replace)
+  "Like `insert-file-contents', q.v., but only reads in the file.
+A buffer may be modified in several ways after reading into the buffer due
+to advanced Emacs features, such as file-name-handlers, format decoding,
+find-file-hooks, etc.
+  This function ensures that none of these modifications will take place."
+  (let (                                ; (file-name-handler-alist nil)
+        (format-alist nil)
+        (after-insert-file-functions nil)
+        (find-buffer-file-type-function 
+         (if (fboundp 'find-buffer-file-type)
+             (symbol-function 'find-buffer-file-type)
+           nil)))
+    (unwind-protect
+        (progn
+          (fset 'find-buffer-file-type (lambda (filename) t))
+          (insert-file-contents filename visit beg end replace))
+      (if find-buffer-file-type-function
+          (fset 'find-buffer-file-type find-buffer-file-type-function)
+        (fmakunbound 'find-buffer-file-type)))))
+
+(defun nnheader-xmas-find-file-noselect (filename &optional nowarn rawfile)
+  "Read file FILENAME into a buffer and return the buffer.
+If a buffer exists visiting FILENAME, return that one, but
+verify that the file has not changed since visited or saved.
+The buffer is not selected, just returned to the caller."
+  (setq filename
+       (abbreviate-file-name
+        (expand-file-name filename)))
+  (if (file-directory-p filename)
+      (if find-file-run-dired
+         (dired-noselect filename)
+       (error "%s is a directory." filename))
+    (let* ((buf (get-file-buffer filename))
+          (truename (abbreviate-file-name (file-truename filename)))
+          (number (nthcdr 10 (file-attributes truename)))
+          ;; Find any buffer for a file which has same truename.
+          (other (and (not buf) 
+                      (if (fboundp 'find-buffer-visiting)
+                          (find-buffer-visiting filename)
+                        (get-file-buffer filename))))
+          error)
+      ;; Let user know if there is a buffer with the same truename.
+      (if other
+         (progn
+           (or nowarn
+               (string-equal filename (buffer-file-name other))
+               (message "%s and %s are the same file"
+                        filename (buffer-file-name other)))
+           ;; Optionally also find that buffer.
+           (if (or (and (boundp 'find-file-existing-other-name)
+                        find-file-existing-other-name)
+                   find-file-visit-truename)
+               (setq buf other))))
+      (if buf
+         (or nowarn
+             (verify-visited-file-modtime buf)
+             (cond ((not (file-exists-p filename))
+                    (error "File %s no longer exists!" filename))
+                   ((yes-or-no-p
+                     (if (string= (file-name-nondirectory filename)
+                                  (buffer-name buf))
+                         (format
+                          (if (buffer-modified-p buf)
+                              "File %s changed on disk.  Discard your edits? "
+                            "File %s changed on disk.  Reread from disk? ")
+                          (file-name-nondirectory filename))
+                       (format
+                        (if (buffer-modified-p buf)
+                            "File %s changed on disk.  Discard your edits in %s? "
+                          "File %s changed on disk.  Reread from disk into %s? ")
+                        (file-name-nondirectory filename)
+                        (buffer-name buf))))
+                    (save-excursion
+                      (set-buffer buf)
+                      (revert-buffer t t)))))
+       (save-excursion
+;;; The truename stuff makes this obsolete.
+;;;      (let* ((link-name (car (file-attributes filename)))
+;;;             (linked-buf (and (stringp link-name)
+;;;                              (get-file-buffer link-name))))
+;;;        (if (bufferp linked-buf)
+;;;            (message "Symbolic link to file in buffer %s"
+;;;                     (buffer-name linked-buf))))
+         (setq buf (create-file-buffer filename))
+         ;;      (set-buffer-major-mode buf)
+         (set-buffer buf)
+         (erase-buffer)
+         (if rawfile
+             (condition-case ()
+                 (nnheader-insert-file-contents-literally filename t)
+               (file-error
+                ;; Unconditionally set error
+                (setq error t)))
+           (condition-case ()
+               (insert-file-contents filename t)
+             (file-error
+              ;; Run find-file-not-found-hooks until one returns non-nil.
+              (or t                    ; (run-hook-with-args-until-success 'find-file-not-found-hooks)
+                  ;; If they fail too, set error.
+                  (setq error t)))))
+         ;; Find the file's truename, and maybe use that as visited name.
+         (setq buffer-file-truename truename)
+         (setq buffer-file-number number)
+         ;; On VMS, we may want to remember which directory in a search list
+         ;; the file was found in.
+         (and (eq system-type 'vax-vms)
+              (let (logical)
+                (if (string-match ":" (file-name-directory filename))
+                    (setq logical (substring (file-name-directory filename)
+                                             0 (match-beginning 0))))
+                (not (member logical find-file-not-true-dirname-list)))
+              (setq buffer-file-name buffer-file-truename))
+         (if find-file-visit-truename
+             (setq buffer-file-name
+                   (setq filename
+                         (expand-file-name buffer-file-truename))))
+         ;; Set buffer's default directory to that of the file.
+         (setq default-directory (file-name-directory filename))
+         ;; Turn off backup files for certain file names.  Since
+         ;; this is a permanent local, the major mode won't eliminate it.
+         (and (not (funcall backup-enable-predicate buffer-file-name))
+              (progn
+                (make-local-variable 'backup-inhibited)
+                (setq backup-inhibited t)))
+         (if rawfile
+             nil
+           (after-find-file error (not nowarn)))))
+      buf)))
+
+(fset 'nnheader-run-at-time 'nnheader-xmas-run-at-time)
+(fset 'nnheader-cancel-timer 'nnheader-xmas-cancel-timer)
+(fset 'nnheader-find-file-noselect 'nnheader-xmas-find-file-noselect)
+(fset 'nnheader-insert-file-contents-literally
+      (if (fboundp 'insert-file-contents-literally)
+         'insert-file-contents-literally
+       'nnheader-xmas-insert-file-contents-literally))
+
+(provide 'nnheaderxm)
+
+;;; nnheaderxm.el ends here.
index 53a387e..b968a33 100644 (file)
@@ -137,6 +137,12 @@ links, you could set this variable to `copy-file' instead.")
   "*A command to be executed to move mail from the inbox.
 The default is \"movemail\".")
 
+(defvar nnmail-pop-password nil
+  "*Password to use when reading mail from a POP server, if required.")
+
+(defvar nnmail-pop-password-required nil
+  "*Non-nil if a password is required when reading mail using POP.")
+
 (defvar nnmail-read-incoming-hook nil
   "*Hook that will be run after the incoming mail has been transferred.
 The incoming mail is moved from `nnmail-spool-file' (which normally is
@@ -164,6 +170,9 @@ If you use `display-time', you could use something like this:
            (if (eq (process-status \"display-time\") 'run)
                (display-time-filter display-time-process \"\"))))") 
 
+(when (eq system-type 'windows-nt)
+  (add-hook 'nnmail-prepare-incoming-hook 'nnheader-ms-strip-cr))
+
 ;; Suggested by Erik Selberg <speed@cs.washington.edu>.
 (defvar nnmail-prepare-incoming-hook nil
   "*Hook called before treating incoming mail.
@@ -260,6 +269,9 @@ parameter.  It should return nil, `warn' or `delete'.")
 
 ;;; Internal variables.
 
+(eval-and-compile
+  (autoload 'ange-ftp-read-passwd "ange-ftp"))
+
 (defvar nnmail-split-fancy-syntax-table
   (copy-syntax-table (standard-syntax-table))
   "Syntax table used by `nnmail-split-fancy'.")
@@ -339,14 +351,14 @@ parameter.  It should return nil, `warn' or `delete'.")
     (list (- (+ (car current) (if rest -1 0)) (car time))
          (- (+ (or rest 0) (nth 1 current)) (nth 1 time)))))
 
-;; Function taken from rmail.el.
+;; Function rewritten from rmail.el.
 (defun nnmail-move-inbox (inbox)
   "Move INBOX to `nnmail-crash-box'."
   (let ((inbox (file-truename
                (expand-file-name (substitute-in-file-name inbox))))
        (tofile (file-truename (expand-file-name 
                                (substitute-in-file-name nnmail-crash-box))))
-       movemail popmail errors)
+       movemail popmail errors password)
     ;; If getting from mail spool directory,
     ;; use movemail to move rather than just renaming,
     ;; so as to interlock with the mailer.
@@ -362,7 +374,14 @@ parameter.  It should return nil, `warn' or `delete'.")
     (if (member inbox nnmail-moved-inboxes)
        nil
       (if popmail
-         (message "Getting mail from post office ...")
+         (progn
+           (setq password nnmail-pop-password)
+           (when (and nnmail-pop-password-required (not nnmail-pop-password))
+             (setq password
+                   (ange-ftp-read-passwd
+                    (format "Password for %s: "
+                            (substring inbox (+ popmail 3))))))
+           (message "Getting mail from post office ..."))
        (when (or (and (file-exists-p tofile)
                       (/= 0 (nth 7 (file-attributes tofile))))
                  (and (file-exists-p inbox)
@@ -400,9 +419,13 @@ parameter.  It should return nil, `warn' or `delete'.")
              (setq errors (generate-new-buffer " *nnmail loss*"))
              (buffer-disable-undo errors)
              (let ((default-directory "/"))
-               (call-process
-                (expand-file-name nnmail-movemail-program exec-directory)
-                nil errors nil inbox tofile))
+               (apply 
+                'call-process
+                (append
+                 (list
+                  (expand-file-name nnmail-movemail-program exec-directory)
+                  nil errors nil inbox tofile)
+                 (when password (list password)))))
              (if (not (buffer-modified-p errors))
                  ;; No output => movemail won
                  (push tofile nnmail-moved-inboxes)
index 009f940..3417e98 100644 (file)
@@ -87,7 +87,6 @@
                                          nnmh-current-directory)
                                         (int-to-string
                                          (setq article (pop articles))))))
-
                     (not (file-directory-p file)))
            (insert (format "221 %d Article retrieved.\n" article))
            (setq beg (point))
        dir)
     ;; Recurse down directories.
     (while (setq dir (pop dirs))
-      (when (and (not (member (file-name-nondirectory file) '("." "..")))
+      (when (and (not (member (file-name-nondirectory dir) '("." "..")))
                 (file-directory-p dir)
                 (file-readable-p dir))
        (nnmh-request-list-1 dir))))
index 8f2c494..cdc5ef5 100644 (file)
@@ -681,7 +681,7 @@ all. This may very well take some time.")
        dir)
     (while dirs 
       (setq dir (pop dirs))
-      (when (and (not (member (file-name-nondirectory file) '("." "..")))
+      (when (and (not (member (file-name-nondirectory dir) '("." "..")))
                 (file-directory-p dir))
        (nnml-generate-nov-databases-1 dir))))
   ;; Do this directory.
index 0185a20..4756223 100644 (file)
@@ -1054,7 +1054,8 @@ It will prompt for a password."
       ;; large, so we send it piecemeal.
       (let ((last (point-min))
            (size 100))                 ;Size of text sent at once.
-       (while (/= last (point-max))
+       (while (and (/= last (point-max))
+                   (memq (process-status nntp-server-process) '(open run)))
          (process-send-region 
           nntp-server-process
           last (setq last (min (+ last size) (point-max))))
index 0a9fc20..9f67b7c 100644 (file)
@@ -1950,9 +1950,9 @@ then attempt to contact this server and let you browse the groups there
 (@code{gnus-group-browse-foreign-server}).
 @end table
 
-@findex gnus-browse-server-mode
+@findex gnus-browse-mode
 A new buffer with a list of available groups will appear.  This buffer
-will be use the @code{gnus-browse-server-mode}.  This buffer looks a bit
+will be use the @code{gnus-browse-mode}.  This buffer looks a bit
 (well, a lot) like a normal group buffer, but with one major difference
 - you can't enter any of the groups.  If you want to read any of the
 news available on that server, you have to subscribe to the groups you
@@ -3033,15 +3033,12 @@ Send a mail to some other person
 @item S D b
 @kindex S D b (Summary)
 @findex gnus-summary-resend-bounced-mail
-@vindex gnus-bounced-headers-junk
 @cindex bouncing mail
 If you have sent a mail, but the mail was bounced back to you for some
 reason (wrong address, transient failure), you can use this command to
 resend that bounced mail (@code{gnus-summary-resend-bounced-mail}).  You
 will be popped into a mail buffer where you can edit the headers before
-sending the mail off again.  The headers that match the regexp
-@code{gnus-bounced-headers-junk} (default @samp{^Received:}) are
-automatically deleted first.  If you give a prefix to this command, and
+sending the mail off again.  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.
@@ -3049,7 +3046,6 @@ very well fail, though.
 @item S D r
 @kindex S D r (Summary)
 @findex gnus-summary-resend-message
-@vindex gnus-ignored-resent-headers
 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
@@ -3057,10 +3053,7 @@ headers of the message won't be altered---but lots of headers that say
 @code{Resent-To}, @code{Resent-From} and so on will be added.  This
 means that you actually send a mail to someone that has a @code{To}
 header that (probably) points to yourself.  This will confuse people.
-So, natcherly you'll only do that if you're really eVIl.  All old
-headers that match the regular expression
-@code{gnus-ignored-resent-headers} will be deleted before resending the
-message.  The default is @samp{"^Return-receipt"}.
+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
@@ -5501,13 +5494,13 @@ Unpick the region (@code{gnus-uu-unmark-region}).
 
 @item e
 @kindex e (Pick)
-@findex gnus-uu-unmark-regexp
-Pick articles that match a regexp (@code{gnus-uu-unmark-regexp}). 
+@findex gnus-uu-mark-by-regexp
+Pick articles that match a regexp (@code{gnus-uu-mark-by-regexp}). 
 
 @item E
 @kindex E (Pick)
-@findex gnus-uu-unmark-regexp
-Unpick articles that match a regexp (@code{gnus-uu-unmark-regexp}). 
+@findex gnus-uu-unmark-by-regexp
+Unpick articles that match a regexp (@code{gnus-uu-unmark-by-regexp}). 
 
 @item b
 @kindex b (Pick)
@@ -5706,7 +5699,7 @@ disappear forever into that big @file{/dev/null} in the sky.
 
 @item B DEL
 @kindex B DEL (Summary)
-@findex gnus-summary-delete-articles
+@findex gnus-summary-delete-article
 Delete the mail article.  This is ``delete'' as in ``delete it from your
 disk forever and ever, never to return again.'' Use with caution.
 (@code{gnus-summary-delete-article}).
@@ -6028,7 +6021,8 @@ by law required to send nasty-grams to anyone who perpetrates such a
 heinous crime.
 
 Remember: Cross-posting is kinda ok, but posting the same article
-separately to several groups is not.
+separately to several groups is not.  Massive cross-posting (aka.
+@dfn{velveeta}) is to be avoided.  
 
 @cindex cross-posting
 @cindex Xref
@@ -6376,10 +6370,10 @@ This is the delimiter mentioned above.  By default, it is @samp{^L}
 @kindex C-c C-c (Post)
 All commands for posting and mailing will put you in a message buffer
 where you can edit the article all you like, before you send the article
-by pressing @kbd{C-c C-c}.  (@pxref{(message)Top}).  If you are in a
-foreign news group, and you wish to post the article using the foreign
-server, you can give a prefix to @kbd{C-c C-c} to make Gnus try to post
-using the foreign server.
+by pressing @kbd{C-c C-c}.  @xref{Top, , Top, message, The Message
+Manual}.  If you are in a foreign news group, and you wish to post the
+article using the foreign server, you can give a prefix to @kbd{C-c C-c}
+to make Gnus try to post using the foreign server.
 
 @menu 
 * Mail::                 Mailing and replying.
@@ -6495,7 +6489,6 @@ You may want to do spell-checking on messages that you send out.  Or, if
 you don't want to spell-check by hand, you could add automatic
 spell-checking via the @code{ispell} package:
 
-@vindex news-inews-hook
 @cindex ispell
 @findex ispell-message
 @lisp
@@ -6609,31 +6602,6 @@ use a different value for @code{gnus-message-archive-group} there.
 
 
 @table @code
-@item gnus-author-copy
-@vindex gnus-author-copy
-@cindex AUTHORCOPY
-This is a file name, and all outgoing articles will be saved in that
-file.  Initialized from the @code{AUTHORCOPY} environment variable.
-
-If this variable begins with the character @samp{|}, outgoing articles
-will be piped to the named program. It is possible to save an article in
-an MH folder as follows:
-
-@lisp
-(setq gnus-author-copy 
-      "|/usr/local/lib/mh/rcvstore +Article")
-@end lisp
-
-If the first character is not a pipe, articles are saved using the
-function specified by the @code{gnus-author-copy-saver} variable.
-
-@item gnus-author-copy-saver
-@vindex gnus-author-copy-saver
-@findex rmail-output
-A function called to save outgoing articles.  This function will be
-called with the same of the file to store the article in. The default
-function is @code{rmail-output} which saves in the Unix mailbox format.
-
 @item gnus-outgoing-message-group 
 @vindex gnus-outgoing-message-group 
 All outgoing messages will be put in this group.  If you want to store
@@ -7556,6 +7524,8 @@ use this hook to notify any mail watch programs, if you want to.
 @cindex POP mail
 @cindex MAILHOST
 @cindex movemail
+@vindex nnmail-pop-password
+@vindex nnmail-pop-password-required
 The backends will look for new mail in this file.  If this variable is
 @code{nil}, the mail backends will never attempt to fetch mail by
 themselves.  If you are using a POP mail server and your name is
@@ -7565,7 +7535,10 @@ slightly, but you may have guessed that already, you smart & handsome
 devil!  You can also set this variable to @code{pop}, and Gnus will try
 to figure out the POP mail string by itself.  In any case, Gnus will
 call @code{movemail} which will contact the POP server named in the
-@code{MAILHOST} environment variable.
+@code{MAILHOST} environment variable.  If the POP server needs a
+password, you can either set @code{nnmail-pop-password-required} to
+@code{t} and be prompted for the password, or set
+@code{nnmail-pop-password} to the password itself.
 
 When you use a mail backend, Gnus will slurp all your mail from your
 inbox and plonk it down in your home directory.  Gnus doesn't move any
@@ -7937,10 +7910,9 @@ with!  So there!
 @node Duplicates
 @subsection Duplicates
 
-@vindex nnmail-delete-duplicates
+@vindex nnmail-treat-duplicates
 @vindex nnmail-message-id-cache-length
 @vindex nnmail-message-id-cache-file
-@vindex nnmail-treat-duplicates
 @cindex duplicate mails
 If you are a member of a couple of mailing list, you will sometime
 receive two copies of the same mail.  This can be quite annoying, so
@@ -7951,7 +7923,7 @@ default.  The approximate maximum number of @code{Message-ID}s stored
 there is controlled by the @code{nnmail-message-id-cache-length}
 variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be
 stored.) If all this sounds scary to you, you can set
-@code{nnmail-delete-duplicates} to @code{warn} (which is what it is by
+@code{nnmail-treat-duplicates} to @code{warn} (which is what it is by
 default), and @code{nnmail} won't delete duplicate mails.  Instead it
 will generate a brand new @code{Message-ID} for the mail and insert a
 warning into the head of the mail saying that it thinks that this is a
@@ -10127,11 +10099,6 @@ matter how strange.
 Require confirmation before catching up a group if non-@code{nil}.  It
 is @code{t} by default.
 
-@item gnus-interactive-post
-@vindex gnus-interactive-post
-If non-@code{nil}, the user will be prompted for a group name when
-posting an article.  It is @code{t} by default.
-
 @item gnus-interactive-exit
 @vindex gnus-interactive-exit
 Require confirmation before exiting Gnus.  This variable is @code{t} by
@@ -10393,7 +10360,8 @@ configuration in the first (or ``main'') frame, while a small additional
 frame will be created where picons will be shown.  As you can see,
 instead of the normal @code{1.0} top-level spec, each additional split
 should have a frame parameter alist as the size spec.
-@xref{(elisp)Frame Parameters}.
+@xref{Frame Parameters, , Frame Parameters, elisp, The GNU Emacs Lisp
+Reference Manual}.
 
 Here's a list of all possible keys for
 @code{gnus-buffer-configuration}:
@@ -11054,8 +11022,8 @@ This is a list of properties to use to hide ``invisible'' text.  It is
 @code{(invisible t intangible t)} by default on most systems, which
 makes invisible text invisible and intangible.
 
-@item gnus-parse-header-hook
-@vindex gnus-parse-header-hook
+@item gnus-parse-headers-hook
+@vindex gnus-parse-headers-hook
 A hook called before parsing headers.  It can be used, for instance, to
 gather statistics on the headers fetched, or perhaps you'd like to prune
 some headers.  I don't see why you'd want that, though.