Sync up with Gnus 5.6.30.
authorshuhei-k <shuhei-k>
Sun, 16 Aug 1998 21:34:58 +0000 (21:34 +0000)
committershuhei-k <shuhei-k>
Sun, 16 Aug 1998 21:34:58 +0000 (21:34 +0000)
24 files changed:
ChangeLog
Makefile.in
lisp/ChangeLog
lisp/gnus-agent.el
lisp/gnus-art.el
lisp/gnus-cache.el
lisp/gnus-group.el
lisp/gnus-salt.el
lisp/gnus-score.el
lisp/gnus-soup.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-uu.el
lisp/gnus.el
lisp/message.el
lisp/nndir.el
lisp/nndoc.el
lisp/nnmail.el
lisp/nntp.el
make.bat
texi/ChangeLog
texi/gnus.texi
texi/message.texi

index 7ff6340..dca94e4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+1998-08-16  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
+
+       * lisp/gnus.el (gnus-version-number): Update to 6.8.4.
+
+       * Sync up with Gnus 5.6.30.
+
 1998-07-28  Shuhei KOBAYASHI  <shuhei-k@jaist.ac.jp>
 
        * lisp/gnus.el (gnus-version-number): Update to 6.8.3.
index c6205a8..7c675a4 100644 (file)
@@ -37,7 +37,7 @@ x:
 
 distclean:
        make clean
-       rm -r *~
+       rm -rf *~
        for i in lisp texi; do (cd $$i; make distclean); done
        rm -f config.log config.status Makefile
 
index 7b41fcb..ed55690 100644 (file)
@@ -1,3 +1,129 @@
+Sun Aug  9 15:46:16 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.30 is released.
+
+1998-08-09 10:48:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * message.el (message-cite-original-without-signature): Peel off
+       blank lines.
+
+       * gnus-art.el (gnus-article-maybe-highlight): Doc fix.
+
+       * gnus-sum.el (gnus-data-enter-list): Threw away all new list data
+       at the beginning of the buffer.
+
+1998-08-07 01:41:29  Gareth Jones  <gdj1@gdjones.demon.co.uk>
+
+       * gnus-score.el (gnus-summary-increase-score): Don't downcase
+       before lookin in char-to-header.
+
+1998-08-07 01:33:22  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.el (gnus-predefined-server-alist): Too many parentheses.
+
+1998-08-06 11:20:08  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.el (gnus-continuum-version): Include quassia.
+
+       * gnus-sum.el (gnus-data-enter-list): Check before entering list. 
+
+1998-08-06 11:13:56  Francois Felix Ingrand  <felix@dial.oleane.com>
+
+       * gnus-salt.el (gnus-generate-vertical-tree): Don't go too far to
+       the left.
+
+Thu Aug  6 07:58:17 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.29 is released.
+
+1998-08-06 07:10:31  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-agent.el (gnus-agent-expire): Check whether (caar
+       gnus-agent-article-alist) is nil.
+
+       * gnus.el (gnus-read-method): Allow selecting predefined servers. 
+
+       * gnus-topic.el (gnus-topic-update-topic-line): Compute right
+       number when inserting missing topic lines.
+
+       * gnus-start.el (gnus-get-unread-articles): Check that the group
+       is alive.
+
+       * gnus-score.el (gnus-score-load-score-alist): Better error
+       messaging. 
+
+Tue Aug  4 09:42:31 1998  Kurt Swanson  <ksw@dna.lth.se>
+
+       * gnus-salt.el (gnus-pick-mouse-pick-region): Fix picking bug due
+       to use of gnus-read-event-char.
+
+1998-07-28  Dave Love  <d.love@dl.ac.uk>
+
+       * gnus-group.el (gnus-group-fetch-faq): Don't mung dots in group
+       name.
+
+1998-07-27  Dave Love  <d.love@dl.ac.uk>
+
+       * gnus-topic.el (gnus-topic-mode-map): Provide Emacs tty
+       alternatives to [tab], [(meta tab)].
+
+1998-08-06 04:41:38  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-start.el (gnus-startup-file-coding-system): New variable.
+       (gnus-read-init-file): Use it.
+       (gnus-read-newsrc-el-file): Ditto.
+
+       * gnus-sum.el (gnus-thread-ignore-subject): Changed default.
+
+1998-08-06 04:38:02  Richard Stallman  <rms@gnu.org>
+
+       * message.el (sendmail): Required.
+
+1998-08-06 02:11:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-sum.el (gnus-auto-select-same): Dix fix.
+
+1998-08-04  Mike McEwan  <mike@lotusland.demon.co.uk>
+
+       * gnus-sum.el (gnus-select-newsgroup): Set
+       `gnus-newsgroup-unselected' when selecting specific articles via
+       SELECT-ARTICLE - there may be more headers to fetch if
+       `gnus-fetch-old-headers' is non-nil. 
+       (gnus-summary-read-group): pass SELECT-ARTICLE to
+       `gnus-summary-read-group-1' and reset to nil when going to next group.
+       (gnus-summary-read-group): Change `select-article' to
+       `select-articles' for consistency.
+
+Tue Aug  4 05:25:01 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.28 is released.
+
+1998-08-03 22:00:25  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * nndoc.el (nndoc-set-delims): Removed article-end.
+       (nndoc-dissect-buffer): Use eobp.
+
+1998-08-03 19:59:36  Trung Tran-Duc  <trung.tranduc@prague.ixoskillspam.cz>
+
+       * nntp.el (nntp-open-connection): Bind coding-system-for-write.
+
+1998-07-31 16:45:36  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-group.el (gnus-group-read-ephemeral-group): Make the server
+       unique.
+
+1998-07-28  François Pinard  <pinard@iro.umontreal.ca>
+
+       * gnus-uu.el (gnus-uu-reginize-string): Consider the number of
+       parts as part of the fixed subject, instead of a wild quantity.
+
+1998-07-30 21:47:23  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus-cache.el (gnus-summary-insert-cached-articles): Sort
+       articles. 
+
+       * nndir.el (nndir): Use nnml functions.
+
 Mon Jul 27 03:26:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.27 is released.
@@ -39,9 +165,10 @@ Mon Jul 27 03:26:00 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
        * gnus-sum.el (gnus-summary-update-article): Don't pass along
        iheader to regeneration routine.
 
-1998-07-26 17:33:03  KOSEKI Yoshinori  <kose@yk.NetLaputa.ne.jp>
+1998-07-27  KOSEKI Yoshinori  <kose@yk.NetLaputa.ne.jp>
 
-       * nnmail.el (nnmail-move-inbox): Nix out password on errors.
+       * nnmail.el (nnmail-move-inbox): Clear nnmail-internal-password,
+       when supplied Password is incorrect.
 
 Sat Jul 25 19:31:36 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
index a525a0e..33ab63c 100644 (file)
@@ -1369,9 +1369,11 @@ The following commands are available:
               (setq gnus-agent-article-alist (cdr first))
               ;;; Mark all articles up to the first article
               ;;; in `gnus-article-alist' as read.
-              (setcar (nthcdr 2 info)
-                      (gnus-range-add
-                       (nth 2 info) (cons 1 (- (caar gnus-agent-article-alist) 1))))
+              (when (caar gnus-agent-article-alist)
+                (setcar (nthcdr 2 info)
+                        (gnus-range-add
+                         (nth 2 info)
+                         (cons 1 (- (caar gnus-agent-article-alist) 1)))))
               (gnus-dribble-enter
                (concat "(gnus-group-set-info '"
                        (gnus-prin1-to-string info)
index 4d26303..224408b 100644 (file)
@@ -2073,7 +2073,12 @@ If ALL-HEADERS is non-nil, no headers are hidden."
                (unless (vectorp gnus-current-headers)
                  (setq gnus-current-headers nil))
                (gnus-summary-goto-subject gnus-current-article)
-               (gnus-summary-show-thread)
+               (when (gnus-summary-show-thread)
+                 ;; If the summary buffer really was folded, the
+                 ;; previous goto may not actually have gone to
+                 ;; the right article, but the thread root instead.
+                 ;; So we go again.
+                 (gnus-summary-goto-subject gnus-current-article))
                (gnus-run-hooks 'gnus-mark-article-hook)
                (gnus-set-mode-line 'summary)
                (when (gnus-visual-p 'article-highlight 'highlight)
@@ -2387,7 +2392,7 @@ If given a prefix, show the hidden text instead."
   (gnus-article-hide-signature arg))
 
 (defun gnus-article-maybe-highlight ()
-  "Do some article highlighting if `article-visual' is non-nil."
+  "Do some article highlighting if article highlighting is requested."
   (when (gnus-visual-p 'article-highlight 'highlight)
     (gnus-article-highlight-some)))
 
index 5f6fdf6..ff070f8 100644 (file)
@@ -351,7 +351,7 @@ Returns the list of articles removed."
 (defun gnus-summary-insert-cached-articles ()
   "Insert all the articles cached for this group into the current buffer."
   (interactive)
-  (let ((cached gnus-newsgroup-cached)
+  (let ((cached (sort (copy-sequence gnus-newsgroup-cached) '<))
        (gnus-verbose (max 6 gnus-verbose)))
     (unless cached
       (gnus-message 3 "No cached articles for this group"))
index a7c0328..f79b976 100644 (file)
@@ -1554,10 +1554,6 @@ be permanent."
         gnus-summary-mode-hook gnus-select-group-hook
         (group (gnus-group-group-name))
         (method (gnus-find-method-for-group group)))
-    (setq method
-         `(,(car method) ,(concat (cadr method) "-ephemeral")
-           (,(intern (format "%s-address" (car method))) ,(cadr method))
-           ,@(cddr method)))
     (gnus-group-read-ephemeral-group
      (gnus-group-prefixed-name group method) method)))
 
@@ -1588,6 +1584,10 @@ Return the name of the group is selection was successful."
   ;; Transform the select method into a unique server.
   (when (stringp method)
     (setq method (gnus-server-to-method method)))
+  (setq method
+       `(,(car method) ,(concat (cadr method) "-ephemeral")
+         (,(intern (format "%s-address" (car method))) ,(cadr method))
+         ,@(cddr method)))
   (let ((group (if (gnus-group-foreign-p group) group
                 (gnus-group-prefixed-name group method))))
     (gnus-sethash
@@ -1786,6 +1786,8 @@ ADDRESS."
     (gnus-read-group "Group name: ")
     (gnus-read-method "From method: ")))
 
+  (when (stringp method)
+    (setq method (gnus-server-to-method method)))
   (let* ((meth (when (and method
                          (not (gnus-server-equal method gnus-select-method)))
                 (if address (list (intern method) address)
@@ -2954,8 +2956,6 @@ to use."
     (while (and (not found)
                (setq dir (pop dirs)))
       (let ((name (gnus-group-real-name group)))
-       (while (string-match "\\." name)
-         (setq name (replace-match "/" t t name)))
        (setq file (concat (file-name-as-directory dir) name)))
       (if (not (file-exists-p file))
          (gnus-message 1 "No such file: %s" file)
index 1f881cf..d3c5ccf 100644 (file)
@@ -241,48 +241,48 @@ This must be bound to a button-down mouse event."
     ;; (but not outside the window where the drag started).
     (let (event end end-point last-end-point (end-of-range (point)))
       (track-mouse
-       (while (progn
-               (setq event (gnus-read-event-char))
-               (or (mouse-movement-p event)
-                   (eq (car-safe event) 'switch-frame)))
-        (if (eq (car-safe event) 'switch-frame)
-            nil
-          (setq end (event-end event)
-                end-point (posn-point end))
-          (when end-point
-            (setq last-end-point end-point))
-
-          (cond
-           ;; Are we moving within the original window?
-           ((and (eq (posn-window end) start-window)
-                 (integer-or-marker-p end-point))
-            ;; Go to START-POINT first, so that when we move to END-POINT,
-            ;; if it's in the middle of intangible text,
-            ;; point jumps in the direction away from START-POINT.
-            (goto-char start-point)
-            (goto-char end-point)
-            (gnus-pick-article)
-            ;; In case the user moved his mouse really fast, pick
-            ;; articles on the line between this one and the last one.
-            (let* ((this-line (1+ (count-lines 1 end-point)))
-                   (min-line (min this-line start-line))
-                   (max-line (max this-line start-line)))
-              (while (< min-line max-line)
-                (goto-line min-line)
-                (gnus-pick-article)
-                (setq min-line (1+ min-line)))
-              (setq start-line this-line))
-            (when (zerop (% click-count 3))
-              (setq end-of-range (point))))
-           (t
-            (let ((mouse-row (cdr (cdr (mouse-position)))))
-              (cond
-               ((null mouse-row))
-               ((< mouse-row top)
-                (mouse-scroll-subr start-window (- mouse-row top)))
-               ((>= mouse-row bottom)
-                (mouse-scroll-subr start-window
-                                   (1+ (- mouse-row bottom)))))))))))
+       (while (progn
+                (setq event (cdr (gnus-read-event-char)))
+                (or (mouse-movement-p event)
+                    (eq (car-safe event) 'switch-frame)))
+         (if (eq (car-safe event) 'switch-frame)
+             nil
+           (setq end (event-end event)
+                 end-point (posn-point end))
+           (when end-point
+             (setq last-end-point end-point))
+
+           (cond
+            ;; Are we moving within the original window?
+            ((and (eq (posn-window end) start-window)
+                  (integer-or-marker-p end-point))
+             ;; Go to START-POINT first, so that when we move to END-POINT,
+             ;; if it's in the middle of intangible text,
+             ;; point jumps in the direction away from START-POINT.
+             (goto-char start-point)
+             (goto-char end-point)
+             (gnus-pick-article)
+             ;; In case the user moved his mouse really fast, pick
+             ;; articles on the line between this one and the last one.
+             (let* ((this-line (1+ (count-lines 1 end-point)))
+                    (min-line (min this-line start-line))
+                    (max-line (max this-line start-line)))
+               (while (< min-line max-line)
+                 (goto-line min-line)
+                 (gnus-pick-article)
+                 (setq min-line (1+ min-line)))
+               (setq start-line this-line))
+             (when (zerop (% click-count 3))
+               (setq end-of-range (point))))
+            (t
+             (let ((mouse-row (cdr (cdr (mouse-position)))))
+               (cond
+                ((null mouse-row))
+                ((< mouse-row top)
+                 (mouse-scroll-subr start-window (- mouse-row top)))
+                ((>= mouse-row bottom)
+                 (mouse-scroll-subr start-window
+                                    (1+ (- mouse-row bottom)))))))))))
       (when (consp event)
        (let ((fun (key-binding (vector (car event)))))
          ;; Run the binding of the terminating up-event, if possible.
@@ -763,7 +763,8 @@ Two predefined functions are available:
          (setq beg (point))
          (forward-char -1)
          ;; Draw "-" lines leftwards.
-         (while (= (char-after (1- (point))) ? )
+         (while (and (> (point) 1)
+                     (= (char-after (1- (point))) ? ))
            (delete-char -1)
            (insert (car gnus-tree-parent-child-edges))
            (forward-char -1))
index b7b203d..141fbd9 100644 (file)
@@ -550,7 +550,7 @@ used as score."
              (gnus-score-insert-help "Match on header" char-to-header 1)))
 
          (gnus-score-kill-help-buffer)
-         (unless (setq entry (assq (downcase hchar) char-to-header))
+         (unless (setq entry (assq hchar char-to-header))
            (if mimic (error "%c %c" prefix hchar)
              (error "Illegal header type")))
 
@@ -1213,10 +1213,16 @@ SCORE is the score to add."
                    (read (current-buffer))
                  (error
                   (gnus-error 3.2 "Problem with score file %s" file))))))
-      (if (eq (car alist) 'setq)
-         ;; This is an old-style score file.
-         (setq gnus-score-alist (gnus-score-transform-old-to-new alist))
-       (setq gnus-score-alist alist))
+      (cond
+       ((and alist
+            (atom alist))
+       ;; Bogus score file.
+       (error "Invalid syntax with score file %s" file))
+       ((eq (car alist) 'setq)
+       ;; This is an old-style score file.
+       (setq gnus-score-alist (gnus-score-transform-old-to-new alist)))
+       (t
+       (setq gnus-score-alist alist)))
       ;; Check the syntax of the score file.
       (setq gnus-score-alist
            (gnus-score-check-syntax gnus-score-alist file)))))
index fe78c9d..3842c20 100644 (file)
@@ -205,7 +205,9 @@ for matching on group names.
 For instance, if you want to brew on all the nnml groups, as well as
 groups with \"emacs\" in the name, you could say something like:
 
-$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
+$ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\"
+
+Note -- this function hasn't been implemented yet."
   (interactive)
   nil)
 
index 07f2a9a..581ed9f 100644 (file)
@@ -388,7 +388,7 @@ Can be used to turn version control on or off."
   :group 'gnus-newsrc
   :type 'boolean)
 
-(defvar gnus-startup-file-coding-system 'binary
+(defvar gnus-startup-file-coding-system 'ctext
   "*Coding system for startup file.")
 
 ;;; Internal variables
@@ -429,7 +429,9 @@ Can be used to turn version control on or off."
                   (file-exists-p (concat file ".el"))
                   (file-exists-p (concat file ".elc")))
               (condition-case var
-                  (load file nil t)
+                  (let ((coding-system-for-read
+                         gnus-startup-file-coding-system))
+                    (load file nil t))
                 (error
                  (error "Error in %s: %s" file var)))))))))
 
@@ -1489,7 +1491,7 @@ newsgroup."
          (when (<= (gnus-info-level info) foreign-level)
            (setq active (gnus-activate-group group 'scan))
            ;; Let the Gnus agent save the active file.
-           (when (and gnus-agent gnus-plugged)
+           (when (and gnus-agent gnus-plugged active)
              (gnus-agent-save-group-info
               method (gnus-group-real-name group) active))
            (unless (inline (gnus-virtual-group-p group))
index e036b1e..766a736 100644 (file)
@@ -222,10 +222,10 @@ to expose hidden threads."
   :group 'gnus-thread
   :type 'boolean)
 
-(defcustom gnus-thread-ignore-subject nil
-  "*If non-nil, ignore subjects and do all threading based on the Reference header.
-If nil, which is the default, articles that have different subjects
-from their parents will start separate threads."
+(defcustom gnus-thread-ignore-subject t
+  "*If non-nil, which is the default, ignore subjects and do all threading based on the Reference header.
+If nil, articles that have different subjects from their parents will
+start separate threads."
   :group 'gnus-thread
   :type 'boolean)
 
@@ -286,7 +286,9 @@ will go to the next group without confirmation."
                 (sexp :menu-tag "on" t)))
 
 (defcustom gnus-auto-select-same nil
-  "*If non-nil, select the next article with the same subject."
+  "*If non-nil, select the next article with the same subject.
+If there are no more articles with the same subject, go to
+the first unread article."
   :group 'gnus-summary-maneuvering
   :type 'boolean)
 
@@ -1984,21 +1986,26 @@ The following commands are available:
   (when list
     (let ((data (and after-article (gnus-data-find-list after-article)))
          (ilist list))
-      (or data (not after-article) (error "No such article: %d" after-article))
-      ;; Find the last element in the list to be spliced into the main
-      ;; list.
-      (while (cdr list)
-       (setq list (cdr list)))
-      (if (not data)
-         (progn
-           (setcdr list gnus-newsgroup-data)
-           (setq gnus-newsgroup-data ilist)
+      (if (not (or data
+                  after-article))
+         (let ((odata gnus-newsgroup-data))
+           (setq gnus-newsgroup-data (nconc list gnus-newsgroup-data))
            (when offset
-             (gnus-data-update-list (cdr list) offset)))
-       (setcdr list (cdr data))
-       (setcdr data ilist)
-       (when offset
-         (gnus-data-update-list (cdr list) offset)))
+             (gnus-data-update-list odata offset)))
+       ;; Find the last element in the list to be spliced into the main
+       ;; list.
+       (while (cdr list)
+         (setq list (cdr list)))
+       (if (not data)
+           (progn
+             (setcdr list gnus-newsgroup-data)
+             (setq gnus-newsgroup-data ilist)
+             (when offset
+               (gnus-data-update-list (cdr list) offset)))
+         (setcdr list (cdr data))
+         (setcdr data ilist)
+         (when offset
+           (gnus-data-update-list (cdr list) offset))))
       (setq gnus-newsgroup-data-reverse nil))))
 
 (defun gnus-data-remove (article &optional offset)
@@ -2518,7 +2525,7 @@ the thread are to be displayed."
 
 (defun gnus-summary-read-group (group &optional show-all no-article
                                      kill-buffer no-display backward
-                                     select-article)
+                                     select-articles)
   "Start reading news in newsgroup GROUP.
 If SHOW-ALL is non-nil, already read articles are also listed.
 If NO-ARTICLE is non-nil, no article is selected initially.
@@ -2529,9 +2536,10 @@ If NO-DISPLAY, don't generate a summary buffer."
                            (let ((gnus-auto-select-next nil))
                              (or (gnus-summary-read-group-1
                                   group show-all no-article
-                                  kill-buffer no-display)
-                                 (setq show-all nil)
-                                 select-article))))
+                                  kill-buffer no-display
+                                  select-articles)
+                                 (setq show-all nil
+                                  select-articles nil)))))
                (eq gnus-auto-select-next 'quietly))
       (set-buffer gnus-group-buffer)
       ;; The entry function called above goes to the next
@@ -3269,10 +3277,11 @@ If LINE, insert the rebuilt thread starting on line LINE."
       ;;!!! then we want to insert at the beginning of the buffer.
       ;;!!! That happens to be true with Gnus now, but that may
       ;;!!! change in the future.  Perhaps.
-      (gnus-data-enter-list (if line nil current) data (- (point) old-pos))
-      (setq gnus-newsgroup-threads (nconc threads gnus-newsgroup-threads))
-      (when line
-       (gnus-data-compute-positions)))))
+      (gnus-data-enter-list
+       (if line nil current) data (- (point) old-pos))
+      (setq gnus-newsgroup-threads
+           (nconc threads gnus-newsgroup-threads))
+      (gnus-data-compute-positions))))
 
 (defun gnus-number-to-header (number)
   "Return the header for article NUMBER."
@@ -3894,7 +3903,12 @@ If SELECT-ARTICLES, only select those articles from GROUP."
     (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
       (gnus-group-update-group group))
 
-    (setq articles (or select-articles (gnus-articles-to-read group read-all)))
+    (if (setq articles select-articles)
+       (setq gnus-newsgroup-unselected
+             (gnus-sorted-intersection
+              gnus-newsgroup-unreads
+              (gnus-sorted-complement gnus-newsgroup-unreads articles)))
+      (setq articles (gnus-articles-to-read group read-all)))
 
     (cond
      ((null articles)
index 108f3bc..cd211a7 100644 (file)
@@ -647,7 +647,8 @@ articles in the topic and its subtopics."
     (when parent
       (forward-line -1)
       (gnus-topic-update-topic-line
-       parent (- (or old-unread 0) (or (gnus-group-topic-unread) 0))))
+       parent
+       (max 0 (- (or old-unread 0) (or (gnus-group-topic-unread) 0)))))
     unread))
 
 (defun gnus-topic-group-indentation ()
@@ -912,6 +913,8 @@ articles in the topic and its subtopics."
     "\M-#" gnus-topic-unmark-topic
     [tab] gnus-topic-indent
     [(meta tab)] gnus-topic-unindent
+    "\C-i" gnus-topic-indent
+    "\M-\C-i" gnus-topic-unindent
     gnus-mouse-2 gnus-mouse-pick-topic)
 
   ;; Define a new submap.
index 7d7cc8a..dca97f0 100644 (file)
@@ -1020,9 +1020,9 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
 
 (defun gnus-uu-reginize-string (string)
   ;; Takes a string and puts a \ in front of every special character;
-  ;; replaces the last thing that looks like "2/3" with "[0-9]+/[0-9]+"
+  ;; replaces the last thing that looks like "2/3" with "[0-9]+/3"
   ;; or, if it can't find something like that, tries "2 of 3", then
-  ;; finally just replaces the last two numbers with "[0-9]+".
+  ;; finally just replaces the next to last number with "[0-9]+".
   (let ((count 2))
     (save-excursion
       (set-buffer (get-buffer-create gnus-uu-output-buffer-name))
@@ -1033,12 +1033,13 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
       (setq case-fold-search nil)
 
       (end-of-line)
-      (if (re-search-backward "\\([^0-9]\\)[0-9]+/[0-9]+" nil t)
-         (replace-match "\\1[0-9]+/[0-9]+")
+      (if (re-search-backward "\\([^0-9]\\)[0-9]+/\\([0-9]+\\)" nil t)
+         (replace-match "\\1[0-9]+/\\2")
 
        (end-of-line)
-       (if (re-search-backward "\\([^0-9]\\)[0-9]+[ \t]*of[ \t]*[0-9]+" nil t)
-           (replace-match "\\1[0-9]+ of [0-9]+")
+       (if (re-search-backward "\\([^0-9]\\)[0-9]+[ \t]*of[ \t]*\\([0-9]+\\)"
+                               nil t)
+           (replace-match "\\1[0-9]+ of \\2")
 
          (end-of-line)
           (if (re-search-backward "\\([^0-9]\\)[0-9]+\\([^0-9]+\\)[0-9]+"
@@ -1290,7 +1291,8 @@ didn't work, and overwrite existing files.  Otherwise, ask each time."
           (file-exists-p result-file)
           (not gnus-uu-be-dangerous)
           (or (eq gnus-uu-be-dangerous t)
-              (gnus-y-or-n-p (format "Delete incomplete file %s? " result-file)))
+              (gnus-y-or-n-p
+               (format "Delete incomplete file %s? " result-file)))
           (delete-file result-file))
 
       ;; If this was a file of the wrong sort, then
index 008f69a..a25977f 100644 (file)
@@ -253,11 +253,11 @@ is restarted, and sometimes reloaded."
 (defconst gnus-product-name "Shoe-gnus"
   "Product name of this version of gnus.")
 
-(defconst gnus-version-number "6.8.3"
+(defconst gnus-version-number "6.8.4"
   "Version number for this version of gnus.")
 
 (defconst gnus-version
-  (format "%s %s (based on Gnus 5.6.27; for SEMI 1.8, FLIM 1.8/1.9)"
+  (format "%s %s (based on Gnus 5.6.30; for SEMI 1.8, FLIM 1.8/1.9)"
           gnus-product-name gnus-version-number)
   "Version string for this version of gnus.")
 
@@ -1425,11 +1425,11 @@ want."
 
 (defvar gnus-predefined-server-alist
   `(("cache"
-     (nnspool "cache"
-             (nnspool-spool-directory gnus-cache-directory)
-             (nnspool-nov-directory gnus-cache-directory)
-             (nnspool-active-file
-              (nnheader-concat gnus-cache-directory "active")))))
+     nnspool "cache"
+     (nnspool-spool-directory gnus-cache-directory)
+     (nnspool-nov-directory gnus-cache-directory)
+     (nnspool-active-file
+      (nnheader-concat gnus-cache-directory "active"))))
   "List of predefined (convenience) servers.")
 
 (defvar gnus-topic-indentation "") ;; Obsolete variable.
@@ -1980,13 +1980,15 @@ If ARG, insert string at point."
   "Return VERSION as a floating point number."
   (when (or (string-match "^\\([^ ]+\\)? ?Gnus v?\\([0-9.]+\\)$" version)
            (string-match "^\\(.?\\)gnus-\\([0-9.]+\\)$" version))
-    (let* ((alpha (and (match-beginning 1) (match-string 1 version)))
-          (number (match-string 2 version))
-          major minor least)
-      (string-match "\\([0-9]\\)\\.\\([0-9]+\\)\\.?\\([0-9]+\\)?" number)
-      (setq major (string-to-number (match-string 1 number)))
-      (setq minor (string-to-number (match-string 2 number)))
-      (setq least (if (match-beginning 3)
+    (let ((alpha (and (match-beginning 1) (match-string 1 version)))
+         (number (match-string 2 version))
+         major minor least)
+      (unless (string-match
+              "\\([0-9]\\)\\.\\([0-9]+\\)\\.?\\([0-9]+\\)?" number)
+       (error "Invalid version string: %s" version))
+      (setq major (string-to-number (match-string 1 number))
+           minor (string-to-number (match-string 2 number))
+           least (if (match-beginning 3)
                      (string-to-number (match-string 3 number))
                    0))
       (string-to-number
@@ -1995,7 +1997,11 @@ If ARG, insert string at point."
                   (cond
                    ((member alpha '("(ding)" "d")) "4.99")
                    ((member alpha '("September" "s")) "5.01")
-                   ((member alpha '("Red" "r")) "5.03"))
+                   ((member alpha '("Red" "r")) "5.03")
+                   ((member alpha '("Quassia" "q")) "5.05")
+                   ((member alpha '("p")) "5.07")
+                   ((member alpha '("o")) "5.09")
+                   ((member alpha '("n")) "5.11"))
                   minor least)
         (format "%d.%02d%02d" major minor least))))))
 
@@ -2038,7 +2044,7 @@ g -- Group name."
        (setq prompt (match-string 1 string)))
       (setq i (match-end 0))
       ;; We basically emulate just about everything that
-      ;; `interactive' does, but adds the "g" and "G" specs.
+      ;; `interactive' does, but add the specs listed above.
       (push
        (cond
        ((= c ?a)
@@ -2689,11 +2695,14 @@ Disallow illegal group names."
 (defun gnus-read-method (prompt)
   "Prompt the user for a method.
 Allow completion over sensible values."
-  (let ((method
-        (completing-read
-         prompt (append gnus-valid-select-methods gnus-predefined-server-alist
-                        gnus-server-alist)
-         nil t nil 'gnus-method-history)))
+  (let* ((servers
+         (append gnus-valid-select-methods
+                 gnus-predefined-server-alist
+                 gnus-server-alist))
+        (method
+         (completing-read
+          prompt servers
+          nil t nil 'gnus-method-history)))
     (cond
      ((equal method "")
       (setq method gnus-select-method))
@@ -2703,7 +2712,7 @@ Allow completion over sensible values."
                      (assoc method gnus-valid-select-methods))
                (read-string "Address: ")
              "")))
-     ((assoc method gnus-server-alist)
+     ((assoc method servers)
       method)
      (t
       (list (intern method) "")))))
index a30d68e..485b07b 100644 (file)
@@ -1845,6 +1845,11 @@ prefix, and don't delete any headers."
             (list message-indent-citation-function)))))
     (goto-char end)
     (when (re-search-backward "^-- $" start t)
+      ;; Also peel off any blank lines before the signature.
+      (forward-line -1)
+      (while (looking-at "^[ \t]*$")
+       (forward-line -1))
+      (forward-line 1)
       (delete-region (point) end))
     (goto-char start)
     (while functions
index 5a32cbd..c4c7509 100644 (file)
 (nnoo-map-functions nndir
   (nnml-retrieve-headers 0 nndir-current-group 0 0)
   (nnml-request-article 0 nndir-current-group 0 0)
-  (nnmh-request-group nndir-current-group 0 0)
+  (nnml-request-group nndir-current-group 0 0)
   (nnml-close-group nndir-current-group 0)
-  (nnmh-request-list (nnoo-current-server 'nndir) nndir-directory)
-  (nnmh-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
+  (nnml-request-list (nnoo-current-server 'nndir) nndir-directory)
+  (nnml-request-newsgroups (nnoo-current-server 'nndir) nndir-directory))
 
 (provide 'nndir)
 
index c32f50f..e4c79c1 100644 (file)
@@ -131,7 +131,6 @@ from the document.")
 
 (defvoo nndoc-file-begin nil)
 (defvoo nndoc-first-article nil)
-(defvoo nndoc-article-end nil)
 (defvoo nndoc-article-begin nil)
 (defvoo nndoc-head-begin nil)
 (defvoo nndoc-head-end nil)
@@ -307,7 +306,8 @@ from the document.")
   "Set the nndoc delimiter variables according to the type of the document."
   (let ((vars '(nndoc-file-begin
                nndoc-first-article
-               nndoc-article-end nndoc-head-begin nndoc-head-end
+               nndoc-article-begin-function
+               nndoc-head-begin nndoc-head-end
                nndoc-file-end nndoc-article-begin
                nndoc-body-begin nndoc-body-end-function nndoc-body-end
                nndoc-prepare-body-function nndoc-article-transform-function
@@ -572,7 +572,7 @@ from the document.")
               (funcall nndoc-head-begin-function))
              (nndoc-head-begin
               (nndoc-search nndoc-head-begin)))
-       (if (or (>= (point) (point-max))
+       (if (or (eobp)
                (and nndoc-file-end
                     (looking-at nndoc-file-end)))
            (goto-char (point-max))
index 4888255..a03c195 100644 (file)
@@ -1351,14 +1351,14 @@ See the documentation for the variable `nnmail-split-fancy' for documentation."
       (unless (= beg pos)
        (push (substring newtext beg pos) expanded))
       (when (< pos len)
-       ;; we hit a \, expand it.
-       (setq did-expand t)
-       (setq pos (1+ pos))
-       (setq c (aref newtext pos))
+       ;; We hit a \; expand it.
+       (setq did-expand t
+             pos (1+ pos)
+             c (aref newtext pos))
        (if (not (or (= c ?\&)
                     (and (>= c ?1)
                          (<= c ?9))))
-           ;; \ followed by some character we don't expand
+           ;; \ followed by some character we don't expand.
            (push (char-to-string c) expanded)
          ;; \& or \N
          (if (= c ?\&)
index cb06d09..5b6545f 100644 (file)
@@ -832,7 +832,8 @@ password contained in '~/.nntp-authinfo'."
   (let* ((pbuffer (nntp-make-process-buffer buffer))
         (process
          (condition-case ()
-             (let ((coding-system-for-read nntp-coding-system-for-read))
+             (let ((coding-system-for-read nntp-coding-system-for-read)
+                    (coding-system-for-write nntp-coding-system-for-write))
                (funcall nntp-open-connection-function pbuffer))
            (error nil)
            (quit nil))))
index d183af9..4a6b8a0 100755 (executable)
--- a/make.bat
+++ b/make.bat
@@ -1,57 +1,57 @@
-@echo off
-
-rem Written by David Charlap <shamino@writeme.com>
-
-rem There are two catches, however.  The emacs.bat batch file may not exist
-rem in all distributions.  It is part of the Voelker build of Emacs 19.34
-rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user
-rem installs Gnus with some other build, he may have to replace calls to
-rem %1\emacs.bat with something else.
-rem 
-rem Also, the emacs.bat file that Voelker ships does not accept more than 9
-rem parameters, so the attempts to compile the .texi files will fail.  To
-rem fix that (at least on NT.  I don't know about Win95), the following
-rem change should be made to emacs.bat:
-rem 
-rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9
-rem 
-rem should become
-rem 
-rem     %emacs_dir%\bin\emacs.exe %*
-rem 
-rem which will allow the batch file to accept an unlimited number of
-rem parameters.
-
-if "%1" == "" goto usage
-
-cd lisp
-call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile
-if not "%2" == "copy" goto info
-copy *.el* %1\lisp
-
-:info
-cd ..\texi
-call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer
-if not "%2" == "copy" goto done
-copy gnus %1\info
-copy gnus-?? %1\info
-copy message %1\info
-
-:etc
-cd ..\etc
-copy gnus-tut.txt %1\etc
-
-:done
-cd ..
-goto end
-
-:usage
-echo Usage: make ^<emacs-dir^> [copy]
-echo.
-echo where: ^<emacs-dir^> is the directory you installed emacs in
-echo                    eg. d:\emacs\19.34
-echo        copy indicates that the compiled files should be copied to your
-echo             emacs lisp, info, and etc directories
-
-:end
+@echo off\r
+\r
+rem Written by David Charlap <shamino@writeme.com>\r
+\r
+rem There are two catches, however.  The emacs.bat batch file may not exist\r
+rem in all distributions.  It is part of the Voelker build of Emacs 19.34\r
+rem (http://www.cs.washington.edu/homes/voelker/ntemacs.html).  If the user\r
+rem installs Gnus with some other build, he may have to replace calls to\r
+rem %1\emacs.bat with something else.\r
+rem \r
+rem Also, the emacs.bat file that Voelker ships does not accept more than 9\r
+rem parameters, so the attempts to compile the .texi files will fail.  To\r
+rem fix that (at least on NT.  I don't know about Win95), the following\r
+rem change should be made to emacs.bat:\r
+rem \r
+rem     %emacs_dir%\bin\emacs.exe %1 %2 %3 %4 %5 %6 %7 %8 %9\r
+rem \r
+rem should become\r
+rem \r
+rem     %emacs_dir%\bin\emacs.exe %*\r
+rem \r
+rem which will allow the batch file to accept an unlimited number of\r
+rem parameters.\r
+\r
+if "%1" == "" goto usage\r
+\r
+cd lisp\r
+call %1\bin\emacs.bat -batch -q -no-site-file -l ./dgnushack.el -f dgnushack-compile\r
+if not "%2" == "copy" goto info\r
+copy *.el* %1\lisp\r
+\r
+:info\r
+cd ..\texi\r
+call %1\bin\emacs.bat -batch -q -no-site-file gnus.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+call %1\bin\emacs.bat -batch -q -no-site-file message.texi -l texinfmt -f texinfo-every-node-update -f texinfo-format-buffer -f save-buffer\r
+if not "%2" == "copy" goto done\r
+copy gnus %1\info\r
+copy gnus-?? %1\info\r
+copy message %1\info\r
+\r
+:etc\r
+cd ..\etc\r
+copy gnus-tut.txt %1\etc\r
+\r
+:done\r
+cd ..\r
+goto end\r
+\r
+:usage\r
+echo Usage: make ^<emacs-dir^> [copy]\r
+echo.\r
+echo where: ^<emacs-dir^> is the directory you installed emacs in\r
+echo                    eg. d:\emacs\19.34\r
+echo        copy indicates that the compiled files should be copied to your\r
+echo             emacs lisp, info, and etc directories\r
+\r
+:end\r
index 386b9b1..a2ec074 100644 (file)
@@ -1,3 +1,19 @@
+1998-08-09 15:32:24  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Hiding Headers): Fix.
+
+1998-08-08 06:06:37  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi (Fancy Mail Splitting): Change.
+
+1998-08-06 02:12:04  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+       * gnus.texi: De-legalize.
+
+       * message.texi: De-legalize.
+
+       * gnus.texi (Summary Maneuvering): Fix.
+
 1998-07-21 17:51  Simon Josefsson  <jas@pdc.kth.se>
 
        * gnus.texi (Splitting Mail): junk is fancy splitting only
index 962f2a2..c8449b9 100644 (file)
@@ -3511,8 +3511,10 @@ without confirmation.  Also @pxref{Group Levels}.
 If non-@code{nil}, all the movement commands will try to go to the next
 article with the same subject as the current.  (@dfn{Same} here might
 mean @dfn{roughly equal}.  See @code{gnus-summary-gather-subject-limit}
-for details (@pxref{Customizing Threading}).)  This variable is not
-particularly useful if you use a threaded display.
+for details (@pxref{Customizing Threading}).)  If there are no more
+articles with the same subject, go to the first unread article.
+
+This variable is not particularly useful if you use a threaded display.
 
 @item gnus-summary-check-current
 @vindex gnus-summary-check-current
@@ -7772,15 +7774,15 @@ These conditions are:
 @table @code
 @item empty
 Remove all empty headers.
-@item newsgroups
-Remove the @code{Newsgroups} header if it only contains the current group
-name.
 @item followup-to
 Remove the @code{Followup-To} header if it is identical to the
 @code{Newsgroups} header.
 @item reply-to
 Remove the @code{Reply-To} header if it lists the same address as the
 @code{From} header.
+@item newsgroups
+Remove the @code{Newsgroups} header if it only contains the current group
+name.
 @item date
 Remove the @code{Date} header if the article is less than three days
 old.
@@ -7790,11 +7792,11 @@ Remove the @code{To} header if it is very long.
 Remove all @code{To} headers if there are more than one.
 @end table
 
-To include the four first elements, you could say something like;
+To include the four three elements, you could say something like;
 
 @lisp
 (setq gnus-boring-article-headers
-      '(empty newsgroups followup-to reply-to))
+      '(empty followup-to reply-to))
 @end lisp
 
 This is also the default value for this variable.
@@ -8359,6 +8361,7 @@ So here's a new example:
          (signature-file "~/.mail-signature"))))
 @end lisp
 
+
 @node Drafts
 @section Drafts
 @cindex drafts
@@ -9672,7 +9675,7 @@ information in the headers (i.e., do @code{replace-match}-like
 substitutions in the group names), you can say things like:
 
 @example
-(any "debian-\\(\\w*\\)@@lists.debian.org" "mail.debian.\\1")
+(any "debian-\\b\\(\\w+\\)@@lists.debian.org" "mail.debian.\\1")
 @end example
 
 If the string contains the element @samp{\&}, then the previously
@@ -11536,7 +11539,7 @@ Hook run in category buffers.
 @item gnus-category-line-format
 @vindex gnus-category-line-format
 Format of the lines in the category buffer (@pxref{Formatting
-Variables}).  Legal elements are:
+Variables}).  Valid elements are:
 
 @table @samp
 @item c
@@ -15078,7 +15081,7 @@ foreground and background color of the splash page glyph.
 @item gnus-xmas-logo-color-style
 @vindex gnus-xmas-logo-color-style
 This is the key used to look up the color in the alist described above.
-Legal values include @code{flame}, @code{pine}, @code{moss},
+Valid values include @code{flame}, @code{pine}, @code{moss},
 @code{irish}, @code{sky}, @code{tin}, @code{velvet}, @code{grape},
 @code{labia}, @code{berry}, @code{neutral}, and @code{september}.
 
@@ -15385,7 +15388,7 @@ On July 28th 1996 work on Red Gnus was begun, and it was released on
 January 25th 1997 (after 84 releases) as ``Gnus 5.4'' (67 releases).
 
 On September 13th 1997, Quassia Gnus was started and lasted 37
-releases.  If was released as ``Gnus 5.6.27' on March 8th 1998.
+releases.  If was released as ``Gnus 5.6.30' on March 8th 1998.
 
 If you happen upon a version of Gnus that has a prefixed name --
 ``(ding) Gnus'', ``September Gnus'', ``Red Gnus'', ``Quassia Gnus'' --
@@ -15862,7 +15865,7 @@ actually are people who are using Gnus.  Who'd'a thunk it!
 * ding Gnus::          New things in Gnus 5.0/5.1, the first new Gnus.
 * September Gnus::     The Thing Formally Known As Gnus 5.3/5.3.
 * Red Gnus::           Third time best---Gnus 5.4/5.5.
-* Quassia Gnus::       Two times two is four, or Gnus 5.6.27.
+* Quassia Gnus::       Two times two is four, or Gnus 5.6.30.
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
@@ -16397,7 +16400,7 @@ Emphasized text can be properly fontisized:
 @node Quassia Gnus
 @subsubsection Quassia Gnus
 
-New features in Gnus 5.6.27:
+New features in Gnus 5.6.30:
 
 @itemize @bullet
 
@@ -17718,6 +17721,9 @@ many articles in the cache, since it regenerates big parts of the
 summary buffer for each article.
 
 @item
+Implement gnus-batch-brew-soup.
+
+@item
 Solve the halting problem.
 
 @c TODO
index cb8a914..1d194f9 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.6.27 Manual
+@settitle Message 5.6.30 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -42,7 +42,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Message 5.6.27 Manual
+@title Message 5.6.30 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.6.27.  Message is distributed with
+This manual corresponds to Message 5.6.30.  Message is distributed with
 the Gnus distribution bearing the same version number as this manual
 has. 
 
@@ -680,7 +680,7 @@ message.
 
 @item message-from-style
 @vindex message-from-style
-Specifies how @code{From} headers should look.  There are four legal
+Specifies how @code{From} headers should look.  There are four valid
 values:
 
 @table @code
@@ -782,7 +782,7 @@ headers.
 @vindex message-required-news-headers
 @code{message-required-news-headers} a list of header symbols.  These
 headers will either be automatically generated, or, if that's
-impossible, they will be prompted for.  The following symbols are legal:
+impossible, they will be prompted for.  The following symbols are valid:
 
 @table @code
 
@@ -888,10 +888,16 @@ Other variables for customizing outgoing news articles:
 
 @item message-syntax-checks
 @vindex message-syntax-checks
-If non-@code{nil}, Message will attempt to check the legality of the
-headers, as well as some other stuff, before posting.  You can control
-the granularity of the check by adding or removing elements from this
-list.  Legal elements are:
+Controls what syntax checks should not be performed on outgoing posts.
+To disable checking of long signatures, for instance, add
+
+@lisp
+(signature . disabled)
+@end lisp
+
+to this list.
+
+Valid checks are:
 
 @table @code
 @item subject-cmsg 
@@ -912,7 +918,7 @@ Check whether the @code{From} header seems nice.
 @cindex long lines
 Check for too long lines.
 @item control-chars
-Check for illegal characters.
+Check for invalid characters.
 @item size
 Check for excessive size.
 @item new-text