*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 01:27:39 +0000 (01:27 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Wed, 5 Mar 1997 01:27:39 +0000 (01:27 +0000)
20 files changed:
lisp/ChangeLog
lisp/gnus-art.el
lisp/gnus-bcklg.el
lisp/gnus-cache.el
lisp/gnus-move.el
lisp/gnus-msg.el
lisp/gnus-nocem.el
lisp/gnus-srvr.el
lisp/gnus-start.el
lisp/gnus-sum.el
lisp/gnus-topic.el
lisp/gnus-util.el
lisp/gnus.el
lisp/nnbabyl.el
lisp/nndoc.el
lisp/nnfolder.el
lisp/nnmail.el
lisp/nntp.el
texi/ChangeLog
texi/gnus.texi

index 405d912..0b005f2 100644 (file)
@@ -1,3 +1,76 @@
+Mon Dec 16 14:33:58 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-msg.el (gnus-bug): Insert nntp server type.
+       (gnus-copy-article-buffer): Remove prev/next buttons.
+
+       * gnus-cache.el (gnus-jog-cache): Let the call func be
+       interactive. 
+
+       * gnus-art.el (gnus-summary-save-in-pipe): Include number of
+       articles. 
+       (gnus-article-add-buttons): Don't add buttons to already
+       buttonized areas.
+
+       * nntp.el (nntp-open-connection): Allow `C-g' to continue.
+
+       * nnbabyl.el (nnbabyl-retrieve-headers): Wouldn't find all
+       articles sometimes.
+
+       * gnus-sum.el (gnus-data-compute-positions): Reinstated.
+       (gnus-remove-thread): Do the right thing with dummy roots.
+
+       * nndoc.el (nndoc-request-article): Only return valid articles.
+
+       * nnfolder.el (nnfolder-delete-mail): Wouldn't delete From lines. 
+
+       * gnus-topic.el (gnus-topic-find-groups): Ignore nil groups. 
+
+       * nnfolder.el (nnfolder-save-mail): Quote all "From " lines.
+
+Sat Dec 14 11:49:21 1996  David Moore  <dmoore@ucsd.edu>
+
+       * gnus-nocem.el (gnus-nocem-groups):
+       news.admin.net-abuse.bulletins is to replace
+       news.admin.net-abuse.announce for nocemish postings.
+
+Mon Dec 16 13:38:38 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * nnmail.el (nnmail-move-inbox): Message at end.
+
+       * gnus-sum.el (gnus-summary-refer-parent-article): Use
+       "in-reply-to" header.
+
+       * gnus-topic.el (gnus-topic-set-parameters): Enter into dribble. 
+
+       * gnus-sum.el (gnus-summary-save-newsrc): Change.
+       (gnus-summary-catchup): Only catch up the limited articles. 
+       (gnus-simplify-subject-fuzzy-regexp): Changed to nil.
+       (gnus-simplify-buffer-fuzzy): Ignore nil
+       gnus-simplify-subject-fuzzy-regexp. 
+
+       * gnus-srvr.el (gnus-server-prepare): Don't insert servers twice.
+
+Thu Dec 12 18:18:11 1996  David Moore  <dmoore@ucsd.edu>
+
+       * gnus-start.el (gnus-setup-news): Use gnus-make-hashtable.
+       (gnus-update-active-hashtb-from-killed): ditto.
+       (gnus-newsrc-to-gnus-format): ditto.
+       
+       * gnus-bcklg.el (gnus-backlog-setup): ditto.
+
+       * gnus-sum.el (gnus-create-xref-hashtb): ditto.
+
+       * gnus-move.el (gnus-move-group-to-server): ditto.
+
+       * gnus-util.el (gnus-create-hash-size): Power of 2 hashtables can
+       be _significantly_ faster than 2^x-1 tables on many risc
+       machines.  Any gains of 2^x-1 are comparably small on other
+       machines. 
+
+Fri Dec 13 05:05:03 1996  Lars Magne Ingebrigtsen  <menja.larsi@ifi.uio.no>
+
+       * gnus.el: Red Gnus v0.75 is released.
+
 Fri Dec 13 04:49:21 1996  Andre Deparade  <deparade@i3.informatik.rwth-aachen.de>
 
        * gnus-cite.el (gnus-cited-text-button-line-format-alist): Make %b
index c84272f..22102bf 100644 (file)
@@ -546,8 +546,15 @@ The directory to save in defaults to `gnus-article-save-directory'."
        (cond ((eq command 'default)
               gnus-last-shell-command)
              (command command)
-             (t (read-string "Shell command on article: "
-                             gnus-last-shell-command))))
+             (t (read-string 
+                 (format
+                  "Shell command on %s: "
+                  (if (and gnus-number-of-articles-to-be-saved
+                           (> gnus-number-of-articles-to-be-saved 1))
+                      (format "these %d articles"
+                              gnus-number-of-articles-to-be-saved)
+                    "this article"))
+                 gnus-last-shell-command))))
   (when (string-equal command "")
     (setq command gnus-last-shell-command))
   (gnus-eval-in-buffer-window gnus-article-buffer
@@ -1734,8 +1741,9 @@ specified by `gnus-button-alist'."
          (let* ((start (and entry (match-beginning (nth 1 entry))))
                 (end (and entry (match-end (nth 1 entry))))
                 (from (match-beginning 0)))
-           (when (or (eq t (nth 1 entry))
-                     (eval (nth 1 entry)))
+           (when (and (or (eq t (nth 1 entry))
+                          (eval (nth 1 entry)))
+                      (not (get-text-property (point) 'gnus-callback)))
              ;; That optional form returned non-nil, so we add the
              ;; button. 
              (gnus-article-add-button 
index 5f30c3c..ee01d5c 100644 (file)
@@ -48,7 +48,7 @@
 (defun gnus-backlog-setup ()
   "Initialize backlog variables."
   (unless gnus-backlog-hashtb
-    (setq gnus-backlog-hashtb (make-vector 1023 0))))
+    (setq gnus-backlog-hashtb (gnus-make-hashtable 1024))))
 
 (gnus-add-shutdown 'gnus-backlog-shutdown 'gnus)
 
index 721b4ff..00136f1 100644 (file)
@@ -541,6 +541,7 @@ $ emacs -batch -l ~/.emacs -l gnus -f gnus-jog-cache"
     (gnus-group-universal-argument 
      nil nil 
      (lambda ()
+       (interactive)
        (gnus-summary-read-group (gnus-group-group-name) nil t)
        ;; ... and enter the articles into the cache.
        (when (eq major-mode 'gnus-summary-mode)
index 12c9260..8be17e7 100644 (file)
@@ -63,7 +63,7 @@ Update the .newsrc.eld file to reflect the change of nntp server."
     (gnus-message 7 "Translating %s..." group)
     (when (gnus-request-group group nil to-server)
       (setq to-active (gnus-parse-active)
-           hashtb (make-vector 1023 0))
+           hashtb (gnus-make-hashtable 1024))
       ;; Fetch the headers from the `to-server'.
       (when (and to-active
                 (setq type (gnus-retrieve-headers
index df5ec15..04fd058 100644 (file)
@@ -328,6 +328,8 @@ header line with the old Message-ID."
          (copy-to-buffer gnus-article-copy (point-min) (point-max))
          (set-buffer gnus-article-copy)
          (article-delete-text-of-type 'annotation)
+         (gnus-remove-text-with-property 'gnus-prev)
+         (gnus-remove-text-with-property 'gnus-next)
          (insert
           (prog1
               (format "%s" (buffer-string))
@@ -745,6 +747,7 @@ If YANK is non-nil, include the original article."
       (when yank
        (gnus-inews-yank-articles (list (cdr gnus-article-current)))))))
 
+(defvar nntp-server-type)
 (defun gnus-bug ()
   "Send a bug report to the Gnus maintainers."
   (interactive)
@@ -763,7 +766,10 @@ If YANK is non-nil, include the original article."
     (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
     (forward-line 1)
     (insert (gnus-version) "\n")
-    (insert (emacs-version))
+    (insert (emacs-version) "\n")
+    (when (and (boundp 'nntp-server-type)
+              (stringp nntp-server-type))
+      (insert nntp-server-type))
     (insert "\n\n\n\n\n")
     (gnus-debug)
     (goto-char (point-min))
index d5b1f6a..4e80e2f 100644 (file)
@@ -36,7 +36,8 @@
   :group 'gnus-score)
 
 (defcustom gnus-nocem-groups 
-  '("news.lists.filters" "alt.nocem.misc" "news.admin.net-abuse.announce")
+  '("news.lists.filters" "news.admin.net-abuse.bulletins"
+    "alt.nocem.misc" "news.admin.net-abuse.announce")
   "List of groups that will be searched for NoCeM messages."
   :group 'gnus-nocem
   :type '(repeat (string :tag "Group")))
index 9df232a..0cbfc23 100644 (file)
@@ -206,14 +206,15 @@ The following commands are available:
     (setq gnus-inserted-opened-servers nil)
     ;; First we do the real list of servers.
     (while alist
-      (push (cdr (setq server (pop alist))) done)
+      (push (caar alist) done)
+      (cdr (setq server (pop alist))) 
       (when (and server (car server) (cdr 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 (caar opened) done)
-       (push (caar opened) done)
+      (unless (member (cadaar opened) done)
+       (push (cadaar opened) done)
        (gnus-server-insert-server-line 
         (setq op-ser (format "%s:%s" (caaar opened) (nth 1 (caar opened))))
         (caar opened))
index d12c188..0f45e50 100644 (file)
@@ -832,7 +832,7 @@ If LEVEL is non-nil, the news will be set up at level LEVEL."
         (gnus-read-active-file))
 
     (unless gnus-active-hashtb
-      (setq gnus-active-hashtb (make-vector 4095 0)))
+      (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
 
     ;; Initialize the cache.
     (when gnus-use-cache
@@ -1503,7 +1503,7 @@ newsgroup."
 
 ;; Enter all dead groups into the hashtb.
 (defun gnus-update-active-hashtb-from-killed ()
-  (let ((hashtb (setq gnus-active-hashtb (make-vector 4095 0)))
+  (let ((hashtb (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
        (lists (list gnus-killed-list gnus-zombie-list))
        killed)
     (while lists
@@ -1683,7 +1683,7 @@ newsgroup."
                    ;; if group is moderated, stick in moderation table
                    (when (= (following-char) ?m)
                      (unless gnus-moderated-hashtb
-                       (setq gnus-moderated-hashtb (make-vector 127 0)))
+                       (setq gnus-moderated-hashtb (gnus-make-hashtable)))
                      (gnus-sethash (symbol-name group) t
                                    gnus-moderated-hashtb)))
                (set group nil)))
@@ -1898,7 +1898,7 @@ If FORCE is non-nil, the .newsrc file is read."
   (setq gnus-newsrc-options-n nil)
 
   (unless gnus-active-hashtb
-    (setq gnus-active-hashtb (make-vector 4095 0)))
+    (setq gnus-active-hashtb (gnus-make-hashtable 4096)))
   (let ((buf (current-buffer))
        (already-read (> (length gnus-newsrc-alist) 1))
        group subscribed options-symbol newsrc Options-symbol
index 879ef9d..9f21ed5 100644 (file)
@@ -261,7 +261,7 @@ will not be marked."
   :group 'gnus-summary-format
   :type 'integer)
 
-(defcustom gnus-simplify-subject-fuzzy-regexp ""
+(defcustom gnus-simplify-subject-fuzzy-regexp nil
   "*Strings to be removed when doing fuzzy matches.
 This can either be a regular expression or list of regular expressions
 that will be removed from subject strings if fuzzy subject
@@ -1189,13 +1189,16 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
     (re-search-forward "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *" nil t)
     (goto-char (match-beginning 0))
     (while (or
-           (looking-at gnus-simplify-subject-fuzzy-regexp)
+           (and 
+            gnus-simplify-subject-fuzzy-regexp
+            (looking-at gnus-simplify-subject-fuzzy-regexp))
            (looking-at "^ *\\(re\\|fwd\\)[[{(^0-9]*[])}]?[:;] *")
            (looking-at "^[[].*: .*[]]$"))
       (goto-char (point-min))
-      (while (re-search-forward gnus-simplify-subject-fuzzy-regexp
-                               nil t)
-       (replace-match "" t t))
+      (when gnus-simplify-subject-fuzzy-regexp
+       (while (re-search-forward gnus-simplify-subject-fuzzy-regexp
+                                 nil t)
+         (replace-match "" t t)))
       (goto-char (point-min))
       (while (re-search-forward "^ *\\(re\\|fw\\|fwd\\)[[{(^0-9]*[])}]?[:;] *"
                                nil t)
@@ -1975,7 +1978,7 @@ increase the score of each group you read."
        ["Exit and goto prev group" gnus-summary-prev-group t]
        ["Reselect group" gnus-summary-reselect-current-group t]
        ["Rescan group" gnus-summary-rescan-group t]
-       ["Save newsrc" gnus-summary-save-newsrc t])))
+       ["Update dribble" gnus-summary-save-newsrc t])))
 
     (run-hooks 'gnus-summary-menu-hook)))
 
@@ -2246,6 +2249,17 @@ The following commands are available:
     (setcar (nthcdr 2 (car data)) (+ offset (nth 2 (car data))))
     (setq data (cdr data))))
 
+(defun gnus-data-compute-positions ()
+  "Compute the positions of all articles."
+  (let ((data gnus-newsgroup-data)
+       pos)
+    (while data
+      (when (setq pos (text-property-any
+                      (point-min) (point-max)
+                      'gnus-number (gnus-data-number (car data))))
+       (gnus-data-set-pos (car data) (+ pos 3)))
+      (setq data (cdr data)))))
+
 (defun gnus-summary-article-pseudo-p (article)
   "Say whether this article is a pseudo article or not."
   (not (vectorp (gnus-data-header (gnus-data-find article)))))
@@ -2874,7 +2888,7 @@ If NO-DISPLAY, don't generate a summary buffer."
   "Gather threads by looking at Subject headers."
   (if (not gnus-summary-make-false-root)
       threads
-    (let ((hashtb (gnus-make-hashtable 1023))
+    (let ((hashtb (gnus-make-hashtable 1024))
          (prev threads)
          (result threads)
          subject hthread whole-subject)
@@ -2904,8 +2918,8 @@ If NO-DISPLAY, don't generate a summary buffer."
 
 (defun gnus-gather-threads-by-references (threads)
   "Gather threads by looking at References headers."
-  (let ((idhashtb (gnus-make-hashtable 1023))
-       (thhashtb (gnus-make-hashtable 1023))
+  (let ((idhashtb (gnus-make-hashtable 1024))
+       (thhashtb (gnus-make-hashtable 1024))
        (prev threads)
        (result threads)
        ids references id gthread gid entered ref)
@@ -3317,8 +3331,8 @@ If NO-DISPLAY, don't generate a summary buffer."
                  ;; If we use dummy roots, then we have to remove the
                  ;; dummy root as well.
                  (when (eq gnus-summary-make-false-root 'dummy)
-                   ;; Uhm.
-                   )
+                   (gnus-delete-line)
+                   (gnus-data-compute-positions))
                  (setq thread (cdr thread))
                  (while thread
                    (gnus-remove-thread-1 (car thread))
@@ -4102,7 +4116,7 @@ If WHERE is `summary', the summary mode line format will be used."
 The resulting hash table is returned, or nil if no Xrefs were found."
   (let* ((virtual (gnus-virtual-group-p from-newsgroup))
         (prefix (if virtual "" (gnus-group-real-prefix from-newsgroup)))
-        (xref-hashtb (make-vector 63 0))
+        (xref-hashtb (gnus-make-hashtable))
         start group entry number xrefs header)
     (while headers
       (setq header (pop headers))
@@ -4940,13 +4954,13 @@ The prefix argument ALL means to select all articles."
        (unless (gnus-ephemeral-group-p gnus-newsgroup-name)
          (gnus-group-update-group group))))))
 
-(defun gnus-summary-save-newsrc ()
-  "Save the .newsrc file.
-The current number of read/marked articles in the summary buffer
-will also be saved."
+(defun gnus-summary-save-newsrc (&optional force)
+  "Save the current number of read/marked articles in the dribble buffer.
+If FORCE (the prefix), also save the .newsrc file(s)."
   (interactive)
   (gnus-summary-update-info)
-  (gnus-save-newsrc-file))
+  (when force
+    (gnus-save-newsrc-file)))
 
 (defun gnus-summary-exit (&optional temporary)
   "Exit reading current newsgroup, and then return to group selection mode.
@@ -6164,22 +6178,22 @@ The difference between N and the number of articles fetched is returned."
     (while (and (> n 0)
                (not error))
       (setq header (gnus-summary-article-header))
-      (setq ref
-           ;; If we try to find the parent of the currently
-           ;; displayed article, then we take a look at the actual
-           ;; References header, since this is slightly more
-           ;; reliable than the References field we got from the
-           ;; server.
-           (if (and (eq (mail-header-number header)
-                        (cdr gnus-article-current))
-                    (equal gnus-newsgroup-name
-                           (car gnus-article-current)))
-               (save-excursion
-                 (set-buffer gnus-original-article-buffer)
-                 (nnheader-narrow-to-headers)
-                 (prog1
-                     (message-fetch-field "references")
-                   (widen)))
+      (if (and (eq (mail-header-number header)
+                  (cdr gnus-article-current))
+              (equal gnus-newsgroup-name
+                     (car gnus-article-current)))
+         ;; If we try to find the parent of the currently
+         ;; displayed article, then we take a look at the actual
+         ;; References header, since this is slightly more
+         ;; reliable than the References field we got from the
+         ;; server.
+         (save-excursion
+           (set-buffer gnus-original-article-buffer)
+           (nnheader-narrow-to-headers)
+           (unless (setq ref (message-fetch-field "references"))
+             (setq ref (message-fetch-field "in-reply-to")))
+           (widen))
+       (setq ref
              ;; It's not the current article, so we take a bet on
              ;; the value we got from the server.
              (mail-header-references header)))
@@ -7716,11 +7730,14 @@ even ticked and dormant ones."
        t))))
 
 (defun gnus-summary-catchup (&optional all quietly to-here not-mark)
-  "Mark all articles not marked as unread in this newsgroup as read.
-If prefix argument ALL is non-nil, all articles are marked as read.
+  "Mark all unread articles in this newsgroup as read.
+If prefix argument ALL is non-nil, ticked and dormant articles will 
+also be marked as read.
 If QUIETLY is non-nil, no questions will be asked.
 If TO-HERE is non-nil, it should be a point in the buffer.  All
 articles before this point will be marked as read.
+Note that this function will only catch up the unread article
+in the current summary buffer limitation.
 The number of articles marked as read is returned."
   (interactive "P")
   (gnus-set-global-variables)
@@ -7750,8 +7767,6 @@ The number of articles marked as read is returned."
                      (if to-here (< (point) to-here) t)
                      (gnus-summary-mark-article-as-read gnus-catchup-mark)
                      (gnus-summary-find-next (not all)))))
-           (unless to-here
-             (setq gnus-newsgroup-unreads nil))
            (gnus-set-mode-line 'summary))
          t))
     (gnus-summary-position-point)))
index dd7d963..6d4902e 100644 (file)
@@ -188,16 +188,17 @@ with some simple extensions.
     (setq level (or level 7))
     ;; We go through the newsrc to look for matches.
     (while groups
-      (setq entry (gnus-gethash (setq group (pop groups)) gnus-newsrc-hashtb)
-           info (nth 2 entry)
-           params (gnus-info-params info)
-           active (gnus-active group)
-            unread (or (car entry)
-                      (and (not (equal group "dummy.group"))
-                           active
-                           (- (1+ (cdr active)) (car active))))
-           clevel (or (gnus-info-level info)
-                      (if (member group gnus-zombie-list) 8 9)))
+      (when (setq group (pop groups))
+       (setq entry (gnus-gethash group gnus-newsrc-hashtb)
+             info (nth 2 entry)
+             params (gnus-info-params info)
+             active (gnus-active group)
+             unread (or (car entry)
+                        (and (not (equal group "dummy.group"))
+                             active
+                             (- (1+ (cdr active)) (car active))))
+             clevel (or (gnus-info-level info)
+                        (if (member group gnus-zombie-list) 8 9))))
       (and 
        unread                          ; nil means that the group is dead.
        (<= clevel level)
@@ -302,7 +303,9 @@ with some simple extensions.
       (nconc (cadr top) (list nil)))
     (unless (nthcdr 3 (cadr top))
       (nconc (cadr top) (list nil)))
-    (setcar (nthcdr 3 (cadr top)) parameters)))
+    (setcar (nthcdr 3 (cadr top)) parameters)
+    (gnus-dribble-enter
+     (format "(gnus-topic-set-parameters %s '%S)" topic parameters))))
 
 (defun gnus-group-topic-parameters (group)
   "Compute the group parameters for GROUP taking into account inheritance from topics."
@@ -699,7 +702,7 @@ articles in the topic and its subtopics."
          (forward-line -1)
          (when (setq alist (assoc (gnus-current-topic) gnus-topic-alist))
            (setcdr alist (gnus-delete-first group (cdr alist))))))
-      ;; If the group is subscribed.  then we enter it into the topics.
+      ;; If the group is subscribed we enter it into the topics.
       (when (and (< level gnus-level-zombie)
                 (>= oldlevel gnus-level-zombie))
        (let* ((prev (gnus-group-group-name))
index 4e26802..caf08dc 100644 (file)
@@ -383,18 +383,22 @@ Cache the result as a text property stored in DATE."
       (insert "%"))
     (buffer-string)))
 
-;; Make a hash table (default and minimum size is 255).
+;; Make a hash table (default and minimum size is 256).
 ;; Optional argument HASHSIZE specifies the table size.
 (defun gnus-make-hashtable (&optional hashsize)
-  (make-vector (if hashsize (max (gnus-create-hash-size hashsize) 255) 255) 0))
-
-;; Make a number that is suitable for hashing; bigger than MIN and one
-;; less than 2^x.
+  (make-vector (if hashsize (max (gnus-create-hash-size hashsize) 256) 256) 0))
+
+;; Make a number that is suitable for hashing; bigger than MIN and
+;; equal to some 2^x.  Many machines (such as sparcs) do not have a
+;; hardware modulo operation, so they implement it in software.  On
+;; many sparcs over 50% of the time to intern is spent in the modulo.
+;; Yes, it's slower than actually computing the hash from the string!
+;; So we use powers of 2 so people can optimize the modulo to a mask.
 (defun gnus-create-hash-size (min)
   (let ((i 1))
     (while (< i min)
       (setq i (* 2 i)))
-    (1- i)))
+    i))
 
 (defcustom gnus-verbose 7
   "*Integer that says how verbose Gnus should be.
index bfbd4d5..33cc8a6 100644 (file)
@@ -42,7 +42,7 @@
   "Score and kill file handling."
   :group 'gnus )
 
-(defconst gnus-version-number "0.75"
+(defconst gnus-version-number "0.76"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Red Gnus v%s" gnus-version-number)
index 5d5bc10..0d37445 100644 (file)
@@ -85,7 +85,7 @@
       (while (setq article (pop articles))
        (setq art-string (nnbabyl-article-string article))
        (set-buffer nnbabyl-mbox-buffer)
-       (beginning-of-line)
+       (end-of-line)
        (when (or (search-forward art-string nil t)
                  (search-backward art-string nil t))
          (unless (re-search-backward delim nil t)
                               (buffer-substring
                                (match-beginning 1) (match-end 1))))
                        (cdadar alist)))
-           (setcdr (cadar alist) (1+ number)))
+           (setcdr (cadar alist) number))
          (setq alist (cdr alist)))
        
        ;; We go through the mbox and make sure that each and 
index 3a3c6c4..cfa382a 100644 (file)
@@ -182,20 +182,21 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
          beg)
       (set-buffer buffer)
       (erase-buffer)
-      (if (stringp article)
-         nil
-       (insert-buffer-substring 
-        nndoc-current-buffer (car entry) (nth 1 entry))
-       (insert "\n")
-       (setq beg (point))
-       (insert-buffer-substring 
-        nndoc-current-buffer (nth 2 entry) (nth 3 entry))
-       (goto-char beg)
-       (when nndoc-prepare-body-function
-         (funcall nndoc-prepare-body-function))
-       (when nndoc-article-transform-function
-         (funcall nndoc-article-transform-function article))
-       t))))
+      (when entry
+       (if (stringp article)
+           nil
+         (insert-buffer-substring 
+          nndoc-current-buffer (car entry) (nth 1 entry))
+         (insert "\n")
+         (setq beg (point))
+         (insert-buffer-substring 
+          nndoc-current-buffer (nth 2 entry) (nth 3 entry))
+         (goto-char beg)
+         (when nndoc-prepare-body-function
+           (funcall nndoc-prepare-body-function))
+         (when nndoc-article-transform-function
+           (funcall nndoc-article-transform-function article))
+         t)))))
 
 (deffoo nndoc-request-group (group &optional server dont-check)
   "Select news GROUP."
index ba998ef..ccc2f92 100644 (file)
@@ -457,13 +457,13 @@ time saver for large mailboxes.")
      (save-excursion
        (nnmail-search-unix-mail-delim-backward)
        (if leave-delim (progn (forward-line 1) (point))
-        (match-beginning 0)))
+        (point)))
      (progn
        (forward-line 1)
        (if (nnmail-search-unix-mail-delim)
           (if (and (not (bobp)) leave-delim)
               (progn (forward-line -2) (point))
-            (match-beginning 0))
+            (point))
         (point-max))))))
 
 ;; When scanning, we're not looking t immediately switch into the group - if
@@ -539,7 +539,7 @@ time saver for large mailboxes.")
       (goto-char (point-min)))
     ;; Quote all "From " lines in the article.
     (forward-line 1)
-    (while (re-search-forward delim nil t)
+    (while (re-search-forward "^From " nil t)
       (beginning-of-line)
       (insert "> "))
     (setq save-list group-art-list)
index be73f2b..d1b0a18 100644 (file)
@@ -577,6 +577,7 @@ parameter.  It should return nil, `warn' or `delete'."
                                     (buffer-string)))
                      (error "%s" (buffer-string)))
                    (setq tofile nil)))))))
+       (message "Getting mail from %s...done" inbox)
        (and errors
             (buffer-name errors)
             (kill-buffer errors))
index 6038511..bc61fef 100644 (file)
@@ -652,8 +652,10 @@ It will prompt for a password."
   (run-hooks 'nntp-prepare-server-hook)
   (let* ((pbuffer (nntp-make-process-buffer buffer))
         (process
-         (ignore-errors
-           (funcall nntp-open-connection-function pbuffer))))
+         (condition-case ()
+             (funcall nntp-open-connection-function pbuffer)
+           (error nil)
+           (quit nil))))
     (when process
       (process-kill-without-query process)
       (nntp-wait-for process "^.*\n" buffer nil t)
index 6ebd396..deed89c 100644 (file)
@@ -1,3 +1,7 @@
+Mon Dec 16 13:53:28 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus.texi (Exiting the Summary Buffer): Update.
+
 Fri Dec 13 01:04:41 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
 
        * gnus.texi (Limiting): Addition.
index 16d3539..6f78b1d 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Red Gnus 0.75 Manual
+@settitle Red Gnus 0.76 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -287,7 +287,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
-@title Red Gnus 0.75 Manual
+@title Red Gnus 0.76 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -323,7 +323,7 @@ can be gotten by any nefarious means you can think of---@sc{nntp}, local
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Red Gnus 0.75
+This manual corresponds to Red Gnus 0.76
 
 @end ifinfo
 
@@ -4488,6 +4488,13 @@ Don't gather loose threads.
 If non-@code{nil}, all threads will be hidden when the summary buffer is
 generated.
 
+@item gnus-thread-expunge-below
+@vindex gnus-thread-expunge-below
+All threads that have a total score (as defined by
+@code{gnus-thread-score-function}) less than this number will be
+expunged.  This variable is @code{nil} by default, which means that no
+threads are expunged.
+
 @item gnus-thread-hide-killed
 @vindex gnus-thread-hide-killed
 if you kill a thread and this variable is non-@code{nil}, the subtree
@@ -4504,6 +4511,14 @@ in a new thread.
 @vindex gnus-thread-indent-level
 This is a number that says how much each sub-thread should be indented.
 The default is 4.
+
+@item gnus-parse-headers-hook
+@vindex gnus-parse-headers-hook
+Hook run before parsing any headers.  The default value is
+@code{(gnus-decode-rfc1522)}, which means that QPized headers will be
+slightly decoded in a hackish way.  This is likely to change in the
+future when Gnus becomes @sc{MIME}ified.
+
 @end table
 
 
@@ -6600,6 +6615,9 @@ name, a @code{From} header and a @code{Subject} header.
 @kindex B r (Summary)
 @findex gnus-summary-respool-article
 Respool the mail article (@code{gnus-summary-move-article}).
+@code{gnus-summary-respool-default-method} will be used as the default
+method when respooling.  This variable is @code{nil} by default, which
+means that the current group method will be used instead.
 
 @item B w
 @itemx e
@@ -6836,7 +6854,8 @@ Exit the current group and update all information on the group
 called before doing much of the exiting, and calls
 @code{gnus-summary-expire-articles} by default.
 @code{gnus-summary-exit-hook} is called after finishing the exiting
-process. 
+process.  @code{gnus-group-no-more-groups-hook} is run when returning to
+group mode having no more (unread) groups.
 
 @item Z E
 @itemx Q
@@ -6897,9 +6916,10 @@ Exit the group and go to the previous group
 @item Z s
 @kindex Z s (Summary)
 @findex gnus-summary-save-newsrc
-Save the @file{.newsrc} file(s).  The current number of read/marked
-articles in the summary buffer will also be saved.  This will make exit
-without updating (the @kbd{Q} command) worthless.
+Save the current number of read/marked articles in the dribble buffer
+(@code{gnus-summary-save-newsrc}).  If given a prefix, also save the
+@file{.newsrc} file(s).  Using this command will make exit without
+updating (the @kbd{Q} command) worthless.
 @end table
 
 @vindex gnus-exit-group-hook
@@ -10692,6 +10712,12 @@ manually entered data.
 @vindex gnus-summary-default-score
 Default score of an article, which is 0 by default.
 
+@item gnus-summary-expunge-below
+@vindex gnus-summary-expunge-below
+Don't display the summary lines of articles that have scores lower than
+this variable.  This is @code{nil} by default, which means that no
+articles will be hidden.
+
 @item gnus-score-over-mark
 @vindex gnus-score-over-mark
 Mark (in the third column) used for articles with a score over the