*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 08:03:55 +0000 (08:03 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 08:03:55 +0000 (08:03 +0000)
18 files changed:
lisp/ChangeLog
lisp/gnus-cache.el
lisp/gnus-cite.el
lisp/gnus-ems.el
lisp/gnus-gl.el
lisp/gnus-msg.el
lisp/gnus-picon.el
lisp/gnus-salt.el
lisp/gnus-soup.el
lisp/gnus-topic.el
lisp/gnus-vis.el
lisp/gnus-xmas.el
lisp/gnus.el
lisp/nndoc.el
lisp/nndraft.el
lisp/nnvirtual.el
texi/ChangeLog
texi/gnus.texi

index 0c110a1..5a2cd9e 100644 (file)
@@ -1,5 +1,100 @@
+Sat Mar  2 11:38:26 1996  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-vis.el (gnus-article-button-next-page): New function.
+       (gnus-article-button-prev-page): New function.
+       (gnus-insert-next-page-button): Use them.
+       (gnus-article-next-button): Wrong function name.
+
+       * gnus.el (gnus-get-unread-articles-in-group): Also reactivate
+       groups that alter their info.
+       (gnus-summary-next-thread): Would react badly to dummy roots. 
+
+       * nndraft.el (nndraft-request-update-info): Return success. 
+
+       * gnus.el (gnus-set-global-variables): Also copy the summary
+       buffer value.
+
+       * gnus-cite.el (gnus-cited-text-button-line-format): New default.
+       (gnus-article-hide-citation): Would add invisible buttons under
+       XEmacs. 
+
+Fri Mar  1 20:52:28 1996  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-msg.el (gnus-summary-resend-bounced-mail): Use
+       `mail-unsent-separator'.
+
+       * gnus.el (gnus-gather-threads-by-references): Change name.
+
+Fri Mar  1 20:25:21 1996  Brad Miller  <bmiller@cs.umn.edu>
+
+       * gnus-gl.el: New version.
+
+Fri Mar  1 20:04:51 1996  Robert Pluim  <pluim@xylint.co.uk>
+
+       * gnus-msg.el (gnus-mail-reply): Would handle Mail-Copies-To
+       `always'. 
+
+Fri Mar  1 08:17:01 1996  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.el: Autoload `gnus-binary-mode'.
+       (gnus-group-prefixed-name): Would append "+" to group methods.
+
+       * gnus-topic.el (gnus-topic-list-active): Use the `force' param.
+
+       * gnus.el (gnus-group-change-level): Would bug out on ranks.
+       (gnus-backlog-request-article): Would choke on Message-IDs.
+       (gnus-group-change-level): Would bug out sometimes.
+       (gnus-configure-frame): Just push newly-created frames on the list
+       of frames to be closed on exit.
+       (gnus-method-equal): New function.
+
+       * nndoc.el (nndoc-generate-clari-briefs-head): Peel off whitespace
+       from the subjects.
+
+       * gnus-vis.el (gnus-group-make-menu-bar): Sorting entries were
+       wrong. 
+
+       * gnus-cache.el (gnus-cache-update-article): New function.
+
+       * gnus.el (gnus-article-prev-page): Put point at first line. 
+       (gnus-article-next-page): Ditto.
+       (gnus-get-unread-articles-in-group): Would bug out on dead
+       groups. 
+       (gnus-summary-edit-article-done): Update cache.
+
+Thu Feb 29 10:50:02 1996  Steven L. Baur  <steve@miranova.com>
+
+       * gnus-xmas.el (gnus-xmas-redefine): Add wrapper to
+       mail-strip-quoted-names.
+       (gnus-xmas-mail-strip-quoted-names): New function.
+
+       * gnus-msg.el (gnus-mail-reply): Use it.
+
+       * gnus-soup.el (gnus-soup-store): Use it.
+
+       * gnus-ems.el: mail-strip-quoted-names -> gnus-mail-strip-quoted-names.
+
+Fri Mar  1 07:12:38 1996  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.el (gnus-read-newsrc-file): Make sure the .newsrc file
+       exists before reading it.
+       (gnus-group-restart): Ask before executing.
+
+Thu Feb 29 18:15:13 1996  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-xmas.el (gnus-xmas-pick-menu-add,
+       gnus-xmas-binary-menu-add, gnus-xmas-tree-menu-add,
+       gnus-xmas-grouplens-menu-add): New functions.
+       (gnus-xmas-redefine): Use them.
+
+Thu Feb 29 18:10:05 1996  Brad Miller  <bmiller@cs.umn.edu>
+
+       * gnus-gl.el: New version.
+
 Thu Feb 29 14:28:06 1996  Lars Magne Ingebrigtsen  <larsi@hler.ifi.uio.no>
 
+       * gnus.el: 0.48 is released.
+       
        * gnus.el (gnus-read-active-file): Wouldn't work on `some'.
 
 Thu Feb 29 09:15:05 1996  Lars Ingebrigtsen  <lars@eyesore.no>
index 94f69d4..3faac3f 100644 (file)
@@ -356,6 +356,13 @@ Returns the list of articles removed."
               (nnheader-replace-chars-in-string group ?. ?/))))
          (if (stringp article) article (int-to-string article))))
 
+(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)))
+
 (defun gnus-cache-possibly-remove-article 
   (article ticked dormant unread &optional force)
   "Possibly remove ARTICLE from the cache."
index 259b331..1ab9ab0 100644 (file)
@@ -35,7 +35,7 @@
 
 ;;; Customization:
 
-(defvar gnus-cited-text-button-line-format "%(%{[...]%}%)"
+(defvar gnus-cited-text-button-line-format "%(%{[...]%}%)\n"
   "Format of cited text buttons.")
 
 (defvar gnus-cited-lines-visible nil
@@ -325,7 +325,7 @@ always hide."
              (setq beg (point))))
          (when (and beg end)
            (add-text-properties beg end props)
-           (goto-char beg)
+           (goto-char (1- beg))
            (put-text-property beg end 'gnus-type 'cite)
            (gnus-article-add-button
             (point)
@@ -337,7 +337,7 @@ always hide."
   (let (buffer-read-only)
     (funcall
      (if (text-property-any
-         (car region) (cdr region) 
+         (car region) (1- (cdr region))
          (car gnus-hidden-properties) (cadr gnus-hidden-properties))
         'remove-text-properties 'add-text-properties)
      (car region) (cdr region) gnus-hidden-properties)))
index 8f1a4d7..34ef6c4 100644 (file)
@@ -39,6 +39,7 @@
 (defalias 'gnus-extent-start-open 'ignore)
 (defalias 'gnus-set-text-properties 'set-text-properties)
 (defalias 'gnus-appt-select-lowest-window 'appt-select-lowest-window)
+(defalias 'gnus-mail-strip-quoted-names 'mail-strip-quoted-names)
 
 (eval-and-compile 
   (autoload 'gnus-xmas-define "gnus-xmas")
index d9b97a6..4717261 100644 (file)
@@ -67,7 +67,9 @@
 ;;                              USING GROUPLENS
 ;; How do I Rate an article??
 ;;   Before you type n to go to the next article, hit a number from 1-5
-;;   Type V r in the summary buffer and you will be prompted.
+;;   Type r in the summary buffer and you will be prompted.
+;;   Note that when you're in grouplens-minor-mode 'r' maskes the
+;;   usual reply binding for 'r'
 ;;
 ;; What if, Gasp, I find a bug???
 ;; Please type M-x gnus-gl-submit-bug-report.  This will set up a
@@ -292,12 +294,12 @@ The scale factor is applied after the offset.")
              (bbb-send-command bbb-process 
                                (concat "login " grouplens-pseudonym))
              (if (bbb-read-response bbb-process)
-                 (setq grouplens-bbb-token (extract-token-number))
+                 (setq grouplens-bbb-token (bbb-extract-token-number))
                (gnus-message 3 "Error: Grouplens login failed")))))
     (gnus-message 3 "Error: you must set a pseudonym"))
   grouplens-bbb-token)
 
-(defun extract-token-number ()
+(defun bbb-extract-token-number ()
   (let ((token-pos (search-forward "token=" nil t) ))
     (if (looking-at "[0-9]+")
        (buffer-substring token-pos (match-end 0)))))
@@ -327,7 +329,7 @@ you should see the offset and scale variables.  At this point, I don't
 recommend using both scores and grouplens predictions together."
   (setq grouplens-current-group groupname)
   (if (member groupname grouplens-newsgroups)
-      (let* ((mid-list (get-all-mids))
+      (let* ((mid-list (bbb-get-all-mids))
             (predict-list (bbb-get-predictions mid-list groupname)))
        (setq grouplens-previous-article nil)
        ;; scores-alist should be a list of lists:
@@ -357,7 +359,7 @@ recommend using both scores and grouplens predictions together."
              (ding))))
       (setq bbb-alist predict-list))))
 
-(defun get-all-mids ()
+(defun bbb-get-all-mids ()
   (let ((index (nth 1 (assoc "message-id" gnus-header-index)))
        (articles gnus-newsgroup-headers)
        art this)
@@ -400,20 +402,20 @@ recommend using both scores and grouplens predictions together."
     (setq grouplens-current-hashtable (make-hash-table :test 'equal :size 100))
     (while
        (cond ((looking-at "\\(<.*>\\) :nopred=")
-              (push `(,(get-mid) ,gnus-summary-default-score nil s) resp)
+              (push `(,(bbb-get-mid) ,gnus-summary-default-score nil s) resp)
               (forward-line 1)
               t)
              ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\) :conflow=\\([0-9]\.[0-9][0-9]\\) :confhigh=\\([0-9]\.[0-9][0-9]\\)")
-              (push `(,(get-mid) ,(get-pred) nil s) resp)
-              (cl-puthash (get-mid)
-                          (list (get-pred) (get-confl) (get-confh))
+              (push `(,(bbb-get-mid) ,(bbb-get-pred) nil s) resp)
+              (cl-puthash (bbb-get-mid)
+                          (list (bbb-get-pred) (bbb-get-confl) (bbb-get-confh))
                           grouplens-current-hashtable)
               (forward-line 1)
               t)
              ((looking-at "\\(<.*>\\) :pred=\\([0-9]\.[0-9][0-9]\\)")
-              (push `(,(get-mid) ,(get-pred) nil s) resp)
-              (cl-puthash (get-mid)
-                          (list (get-pred) 0 0)
+              (push `(,(bbb-get-mid) ,(bbb-get-pred) nil s) resp)
+              (cl-puthash (bbb-get-mid)
+                          (list (bbb-get-pred) 0 0)
                           grouplens-current-hashtable)
               (forward-line 1)
               t)
@@ -424,10 +426,10 @@ recommend using both scores and grouplens predictions together."
 ;; around.  Where the first parenthesized expression is the
 ;; message-id, and the second is the prediction.  Since gnus assumes
 ;; that scores are integer values?? we round the prediction.
-(defun get-mid ()
+(defun bbb-get-mid ()
   (buffer-substring (match-beginning 1) (match-end 1)))
 
-(defun get-pred ()
+(defun bbb-get-pred ()
   (let ((tpred (round (string-to-int (buffer-substring  
                                      (match-beginning 2) 
                                      (match-end 2))))))
@@ -435,16 +437,16 @@ recommend using both scores and grouplens predictions together."
        (* grouplens-score-scale-factor (+ grouplens-score-offset  tpred))
       1)))
 
-(defun get-confl ()
+(defun bbb-get-confl ()
   (string-to-number (buffer-substring (match-beginning 3) (match-end 3))))
 
-(defun get-confh ()
+(defun bbb-get-confh ()
   (string-to-number (buffer-substring (match-beginning 4) (match-end 4))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;      Prediction Display
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defconst rating-range 4.0)
+(defconst grplens-rating-range 4.0)
 (defconst grplens-maxrating 5)
 (defconst grplens-minrating 1)
 (defconst grplens-predstringsize 12)
@@ -471,18 +473,18 @@ recommend using both scores and grouplens predictions together."
               (setq iscore 5))))
       (setq low 0) 
       (setq high 0))
-    (if (and (grouplens-valid-score iscore) 
+    (if (and (bbb-valid-score iscore) 
             (not (null mid)))
        (cond 
         ;; prediction-spot
         ((equal grouplens-prediction-display 'prediction-spot)
-         (setq rate-string (fmt-prediction-spot rate-string iscore)))
+         (setq rate-string (bbb-fmt-prediction-spot rate-string iscore)))
         ;; confidence-interval
         ((equal grouplens-prediction-display 'confidence-interval)
-         (setq rate-string (fmt-confidence-interval iscore low high)))
+         (setq rate-string (bbb-fmt-confidence-interval iscore low high)))
         ;; prediction-bar
         ((equal grouplens-prediction-display 'prediction-bar)
-         (setq rate-string (fmt-prediction-bar rate-string iscore)))
+         (setq rate-string (bbb-fmt-prediction-bar rate-string iscore)))
         ;; confidence-bar
         ((equal grouplens-prediction-display 'confidence-bar)
          (setq rate-string (format "|   %4.2f   |" iscore)))
@@ -491,10 +493,10 @@ recommend using both scores and grouplens predictions together."
          (setq rate-string (format "|   %4.2f   |" iscore)))
         ;; prediction-num
         ((equal grouplens-prediction-display 'prediction-num)
-         (setq rate-string (fmt-prediction-num iscore)))
+         (setq rate-string (bbb-fmt-prediction-num iscore)))
         ;; confidence-plus-minus
         ((equal grouplens-prediction-display 'confidence-plus-minus)
-              (setq rate-string (fmt-confidence-plus-minus iscore low high))
+              (setq rate-string (bbb-fmt-confidence-plus-minus iscore low high))
               )
         (t (gnus-message 3 "Invalid prediction display type")))
       (aset rate-string 5 ?N) (aset rate-string 6 ?A))
@@ -518,7 +520,11 @@ recommend using both scores and grouplens predictions together."
       ;; Init rate-string
       (aset rate-string 0 ?|) 
       (aset rate-string 11 ?|)
-      
+      (unless (equal grouplens-prediction-display 'prediction-num)
+       (cond ((< pred 0)
+              (setq pred 1))
+             ((> pred 5)
+              (setq pred 5))))
       ;; If no entry in BBB hash mark rate string as NA and return
       (cond 
        ((null hashent) 
@@ -527,13 +533,13 @@ recommend using both scores and grouplens predictions together."
        rate-string)
 
        ((equal grouplens-prediction-display 'prediction-spot)
-       (fmt-prediction-spot rate-string pred))
+       (bbb-fmt-prediction-spot rate-string pred))
        
        ((equal grouplens-prediction-display 'confidence-interval)
-       (fmt-confidence-interval pred low high))
+       (bbb-fmt-confidence-interval pred low high))
        
        ((equal grouplens-prediction-display 'prediction-bar)
-       (fmt-prediction-bar rate-string pred))
+       (bbb-fmt-prediction-bar rate-string pred))
 
        ((equal grouplens-prediction-display 'confidence-bar)
        (format "|   %4.2f   |" pred))
@@ -542,10 +548,10 @@ recommend using both scores and grouplens predictions together."
        (format "|   %4.2f   |" pred))
        
        ((equal grouplens-prediction-display 'prediction-num)
-       (fmt-prediction-num pred))
+       (bbb-fmt-prediction-num pred))
        
        ((equal grouplens-prediction-display 'confidence-plus-minus)
-       (fmt-confidence-plus-minus pred low high))
+       (bbb-fmt-confidence-plus-minus pred low high))
        
        (t 
        (gnus-message 3 "Invalid prediction display type")
@@ -553,40 +559,40 @@ recommend using both scores and grouplens predictions together."
        (aset rate-string 11 ?|)
        rate-string)))))
 
-(defun grouplens-valid-score (score)
+(defun bbb-valid-score (score)
   (or (equal grouplens-prediction-display 'prediction-num)
       (and (>= score grplens-minrating)
           (<= score grplens-maxrating))))
 
-(defun requires-confidence (format-type)
+(defun bbb-requires-confidence (format-type)
   (or (equal format-type 'confidence-plus-minus)
       (equal format-type 'confidence-spot)
       (equal format-type 'confidence-interval)))
 
-(defun have-confidence (clow chigh)
+(defun bbb-have-confidence (clow chigh)
   (not (or (null clow)
           (null chigh))))
 
-(defun fmt-prediction-spot (rate-string score)
+(defun bbb-fmt-prediction-spot (rate-string score)
   (aset rate-string
-       (round (* (/ (- score grplens-minrating) rating-range)
+       (round (* (/ (- score grplens-minrating) grplens-rating-range)
                  (+ (- grplens-predstringsize 4) 1.49)))
        ?*)
   rate-string)
 
-(defun fmt-confidence-interval (score low high)
-  (if (have-confidence low high)
+(defun bbb-fmt-confidence-interval (score low high)
+  (if (bbb-have-confidence low high)
       (format "|%4.2f-%4.2f |" low high)
-    (fmt-prediction-num score)))
+    (bbb-fmt-prediction-num score)))
 
-(defun fmt-confidence-plus-minus (score low high)
-  (if (have-confidence low high)
+(defun bbb-fmt-confidence-plus-minus (score low high)
+  (if (bbb-have-confidence low high)
       (format "|%3.1f+/-%4.2f|" score (/ (- high low) 2.0))
-    (fmt-prediction-num score)))
+    (bbb-fmt-prediction-num score)))
 
-(defun fmt-prediction-bar (rate-string score)
+(defun bbb-fmt-prediction-bar (rate-string score)
   (let* ((i 1) 
-        (step (/ rating-range (- grplens-predstringsize 4)))
+        (step (/ grplens-rating-range (- grplens-predstringsize 4)))
         (half-step (/ step 2))
         (loc (- grplens-minrating half-step)))
     (while (< i (- grplens-predstringsize 2))
@@ -598,7 +604,7 @@ recommend using both scores and grouplens predictions together."
     )
   rate-string)
 
-(defun fmt-prediction-num (score)
+(defun bbb-fmt-prediction-num (score)
   (format "|   %4.2f   |" score))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -643,7 +649,7 @@ recommend using both scores and grouplens predictions together."
 (defun bbb-summary-rate-article (rating &optional midin)
   (interactive "nRating: ")
   (when (member gnus-newsgroup-name grouplens-newsgroups)
-    (let ((mid (or midin (get-current-id))))
+    (let ((mid (or midin (bbb-get-current-id))))
       (if (and rating 
               (>= rating grplens-minrating) 
               (<= rating grplens-maxrating)
@@ -701,7 +707,7 @@ recommend using both scores and grouplens predictions together."
   (gnus-set-mode-line 'summary))
 
 
-(defun get-current-id ()
+(defun bbb-get-current-id ()
   (if gnus-current-headers
       (aref gnus-current-headers 
            (nth 1 (assoc "message-id" gnus-header-index)))
@@ -727,10 +733,10 @@ recommend using both scores and grouplens predictions together."
   (setq grouplens-current-starting-time (current-time)))
 
 (defun grouplens-elapsed-time ()
-  (let ((et (time-float (current-time))))
-    (- et (time-float grouplens-current-starting-time))))
+  (let ((et (bbb-time-float (current-time))))
+    (- et (bbb-time-float grouplens-current-starting-time))))
 
-(defun time-float (timeval)
+(defun bbb-time-float (timeval)
   (+ (* (car timeval) 65536) 
        (cadr timeval)))
 
@@ -745,13 +751,13 @@ recommend using both scores and grouplens predictions together."
                  grouplens-rating-alist)
          (setcdr oldrating (cons (cadr oldrating) elapsed-time)))))
     (grouplens-start-timer)
-    (setq grouplens-previous-article (get-current-id))))
+    (setq grouplens-previous-article (bbb-get-current-id))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;          BUG REPORTING
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defconst gnus-gl-version "gnus-gl.el 2.5lars/rrh")
+(defconst gnus-gl-version "gnus-gl.el 2.9")
 (defconst gnus-gl-maintainer-address "grouplens-bug@cs.umn.edu")
 (defun gnus-gl-submit-bug-report ()
   "Submit via mail a bug report on gnus-gl"
@@ -820,13 +826,13 @@ recommend using both scores and grouplens predictions together."
            (> (prefix-numeric-value arg) 0)))
     (when gnus-grouplens-mode
       (if (not (fboundp 'make-local-hook))
-         (add-hook 'gnus-select-article-hook 'grouplens-do-time)
-       (make-local-hook 'gnus-select-article-hook)
-       (add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local))
+         (add-hook 'gnus-select-article-hook 'grouplens-do-time)
+       (make-local-hook 'gnus-select-article-hook)
+       (add-hook 'gnus-select-article-hook 'grouplens-do-time nil 'local))
       (if (not (fboundp 'make-local-hook))
-         (add-hook 'gnus-exit-group-hook 'bbb-put-ratings)
-       (make-local-hook 'gnus-exit-group-hook)
-       (add-hook 'gnus-exit-group-hook 'bbb-put-ratings nil 'local))
+         (add-hook 'gnus-exit-group-hook 'bbb-put-ratings)
+       (make-local-hook 'gnus-exit-group-hook)
+       (add-hook 'gnus-exit-group-hook 'bbb-put-ratings nil 'local))
       (make-local-variable 'gnus-score-find-score-files-function)
       (if gnus-grouplens-override-scoring
           (setq gnus-score-find-score-files-function 
@@ -852,3 +858,4 @@ recommend using both scores and grouplens predictions together."
 (provide 'gnus-gl)
 
 ;;; end gnus-gl.el
+
index 4d27451..c5f9af5 100644 (file)
@@ -481,9 +481,9 @@ header line with the old Message-ID."
   (gnus-summary-select-article t)
   ;; Check whether the user owns the article that is to be superseded. 
   (unless (string-equal
-          (downcase (mail-strip-quoted-names 
+          (downcase (gnus-mail-strip-quoted-names 
                      (mail-header-from gnus-current-headers)))
-          (downcase (mail-strip-quoted-names (gnus-inews-user-name))))
+          (downcase (gnus-mail-strip-quoted-names (gnus-inews-user-name))))
     (error "This article is not yours."))
   ;; Get a normal *Post News* buffer.
   (gnus-new-news gnus-newsgroup-name t)
@@ -1035,8 +1035,9 @@ called."
          ;; user id with value of its From: field.
          (if (not
               (string-equal
-               (downcase (mail-strip-quoted-names from))
-               (downcase (mail-strip-quoted-names (gnus-inews-user-name)))))
+               (downcase (gnus-mail-strip-quoted-names from))
+               (downcase (gnus-mail-strip-quoted-names
+                          (gnus-inews-user-name)))))
              (progn
                (ding) (gnus-message 3 "This article is not yours.")
                nil)
@@ -1882,7 +1883,7 @@ mailer."
                       (string-match "<[^>]+>" gnus-warning))
              (setq message-id (match-string 0 gnus-warning)))
            
-           (setq mctdo (not (equal mct "never")))
+           (setq mctdo (and mct (not (equal mct "never"))))
            (when (and mct (string= (downcase mct) "always"))
              (setq mct (or reply-to from)))
 
@@ -1891,8 +1892,8 @@ mailer."
                      new-cc 
                      (if (and mctdo
                               (not (string= 
-                                    (mail-strip-quoted-names mct)
-                                    (mail-strip-quoted-names
+                                    (gnus-mail-strip-quoted-names mct)
+                                    (gnus-mail-strip-quoted-names
                                      (or to-address 
                                          (if (and follow-to 
                                                   (not (stringp follow-to)))
@@ -1917,7 +1918,7 @@ mailer."
                  (setq ccalist
                        (mapcar
                         (lambda (addr)
-                          (cons (mail-strip-quoted-names addr) addr))
+                          (cons (gnus-mail-strip-quoted-names addr) addr))
                         (nreverse (gnus-mail-parse-comma-list))))
                  (let ((s ccalist))
                    (while s
@@ -2591,6 +2592,8 @@ The source file has to be in the Emacs load path."
 ;;; Treatment of rejected articles.
 ;;; Bounced mail.
 
+(defvar mail-unsent-separator)
+
 (defun gnus-summary-resend-bounced-mail (fetch)
   "Re-mail the current message.
 This only makes sense if the current message is a bounce message than
@@ -2599,13 +2602,14 @@ you.
 If FETCH, try to fetch the article that this is a reply to, if indeed
 this is a reply."
   (interactive "P")
+  (require 'rmail)
   (gnus-summary-select-article t)
   ;; Create a mail buffer.
   (gnus-new-empty-mail)
   (erase-buffer)
   (insert-buffer-substring gnus-article-buffer)
   (goto-char (point-min))
-  (or (re-search-forward "--- *Original message.*\n" nil t)
+  (or (re-search-forward mail-unsent-separator nil t)
       (and (search-forward "\n\n" nil t)
           (re-search-forward "^Return-Path:.*\n" nil t)))
   ;; We remove everything before the bounced mail.
index 377fab1..326af48 100644 (file)
@@ -15,7 +15,7 @@
 ;;       1) display the icons in its own buffer:
 ;;
 ;;          (add-hook 'gnus-article-display-hook 'gnus-article-display-picons t)
-;;          (add-hook 'gnus-summary-display-hook 'gnus-group-display-picons t)
+;;          (add-hook 'gnus-summary-prepare-hook 'gnus-group-display-picons t)
 ;;          (setq gnus-picons-display-where 'picons)
 ;;
 ;;          Then add the picons buffer to your display configuration:
 ;;       2) display the icons in the summary buffer
 ;;
 ;;          (add-hook 'gnus-article-display-hook 'gnus-article-display-picons t)
-;;          (add-hook 'gnus-summary-display-hook 'gnus-group-display-picons t)
+;;          (add-hook 'gnus-summary-prepare-hook 'gnus-group-display-picons t)
 ;;          (setq gnus-picons-display-where 'summary)
 ;;
 ;;       3) display the icons in the article buffer
 ;;
 ;;          (add-hook 'gnus-article-display-hook 'gnus-article-display-picons t)
-;;          (add-hook 'gnus-article-display-hook 'gnus-group-display-picons t)
+;;          (add-hook 'gnus-article-prepare-hook 'gnus-group-display-picons t)
 ;;          (setq gnus-picons-display-where 'article)
 ;;
 ;;
index 1dc2ba9..ce26dbe 100644 (file)
@@ -253,7 +253,10 @@ Two predefined functions are available:
    'undefined 'gnus-tree-read-summary-keys gnus-tree-mode-map))
 
 (defun gnus-tree-make-menu-bar ()
-  )
+  (unless (boundp 'gnus-tree-menu)
+    (easy-menu-define
+     gnus-tree-menu gnus-tree-mode-map ""
+     '("Tree"))))
 
 (defun gnus-tree-mode ()
   "Major mode for displaying thread trees."
index ae02f3d..1c66cde 100644 (file)
@@ -223,7 +223,7 @@ $ emacs -batch -f gnus-batch-brew-soup ^nnml \".*emacs.*\""
       ;; Find the "from".
       (goto-char (point-min))
       (setq from
-           (mail-strip-quoted-names
+           (gnus-mail-strip-quoted-names
             (or (mail-fetch-field "from")
                 (mail-fetch-field "really-from")
                 (mail-fetch-field "sender"))))
index 1b88add..1585708 100644 (file)
@@ -466,13 +466,15 @@ articles in the topic and its subtopics."
       (gnus-delete-line))
     unread))
 
-(defun gnus-topic-grok-active (&optional force)
+(defun gnus-topic-grok-active (&optional force read-active)
   "Parse all active groups and create topic structures for them."
   ;; First we make sure that we have really read the active file. 
   (when (or force
            (not gnus-topic-active-alist))
-    (when (or force
-             (not (member gnus-select-method gnus-have-read-active-file)))
+    (when (and read-active
+              (or force
+                  (not (member gnus-select-method 
+                               gnus-have-read-active-file))))
       (let ((gnus-read-active-file t))
        (gnus-read-active-file)))
     (let (topology groups alist)
@@ -923,7 +925,7 @@ If UNINDENT, remove an indentation."
   "List all groups that Gnus knows about in a topicsified fashion.
 If FORCE, always re-read the active file."
   (interactive "P")
-  (gnus-topic-grok-active)
+  (gnus-topic-grok-active force)
   (let ((gnus-topic-topology gnus-topic-active-topology)
        (gnus-topic-alist gnus-topic-active-alist)
        gnus-killed-list gnus-zombie-list)
index fa7e7be..d8573ff 100644 (file)
@@ -354,12 +354,12 @@ ticked: The number of ticked articles in the group.
         ["List active file" gnus-group-list-active t])
        ("Sort"
         ["Default sort" gnus-group-sort-groups t]
-        ["Sort by method" gnus-group-sort-by-method t]
-        ["Sort by rank" gnus-group-sort-by-rank t]
-        ["Sort by score" gnus-group-sort-by-score t]
-        ["Sort by level" gnus-group-sort-by-level t]
-        ["Sort by unread" gnus-group-sort-by-unread t]
-        ["Sort by name" gnus-group-sort-by-alphabet t])
+        ["Sort by method" gnus-group-sort-groups-by-method t]
+        ["Sort by rank" gnus-group-sort-groups-by-rank t]
+        ["Sort by score" gnus-group-sort-groups-by-score t]
+        ["Sort by level" gnus-group-sort-groups-by-level t]
+        ["Sort by unread" gnus-group-sort-groups-by-unread t]
+        ["Sort by name" gnus-group-sort-groups-by-alphabet t])
        ("Mark"
         ["Mark group" gnus-group-mark-group t]
         ["Unmark group" gnus-group-unmark-group t]
@@ -1227,7 +1227,7 @@ If N is negative, move forward instead."
   "Move point to N buttons forward.
 If N is negative, move backward instead."
   (interactive "p")
-  (let ((function (if (< n 0) 'prev-single-property-change
+  (let ((function (if (< n 0) 'previous-single-property-change
                    'next-single-property-change))
        (inhibit-point-motion-hooks t)
        (limit (if (< n 0) (point-min) (point-max))))
@@ -1418,6 +1418,7 @@ specified by `gnus-button-alist'."
    from to
    (nconc (and gnus-article-mouse-face
               (list gnus-mouse-face-prop gnus-article-mouse-face))
+         (list 'invisible nil)
          (list 'gnus-callback fun)
          (and data (list 'gnus-data data)))))
 
@@ -1502,7 +1503,7 @@ specified by `gnus-button-alist'."
     (gnus-eval-format 
      gnus-prev-page-line-format nil
      `(gnus-prev t local-map ,gnus-prev-page-map
-                gnus-callback gnus-article-prev-page))))
+                gnus-callback gnus-article-button-prev-page))))
 
 (defvar gnus-next-page-map nil)
 (unless gnus-next-page-map
@@ -1515,7 +1516,24 @@ specified by `gnus-button-alist'."
   (let ((buffer-read-only nil))
     (gnus-eval-format gnus-next-page-line-format nil
                      `(gnus-next t local-map ,gnus-next-page-map
-                                 gnus-callback gnus-article-prev-page))))
+                                 gnus-callback 
+                                 gnus-article-button-next-page))))
+
+(defun gnus-article-button-next-page (arg)
+  "Go to the next page."
+  (interactive "P")
+  (let ((win (selected-window)))
+    (select-window (get-buffer-window gnus-article-buffer t))
+    (gnus-article-next-page)
+    (select-window win)))
+
+(defun gnus-article-button-prev-page (arg)
+  "Go to the prev page."
+  (interactive "P")
+  (let ((win (selected-window)))
+    (select-window (get-buffer-window gnus-article-buffer t))
+    (gnus-article-prev-page)
+    (select-window win)))
 
 ;;; Compatibility Functions:
 
index 5ec2c56..07cddee 100644 (file)
@@ -255,6 +255,18 @@ call it with the value of the `gnus-data' text property."
   (easy-menu-add gnus-article-article-menu)
   (easy-menu-add gnus-article-treatment-menu))
 
+(defun gnus-xmas-pick-menu-add ()
+  (easy-menu-add gnus-pich-menu))
+
+(defun gnus-xmas-binary-menu-add ()
+  (easy-menu-add gnus-binary-menu))
+
+(defun gnus-xmas-tree-menu-add ()
+  (easy-menu-add gnus-tree-menu))
+
+(defun gnus-xmas-grouplens-menu-add ()
+  (easy-menu-add gnus-grouplens-menu))
+
 (defun gnus-xmas-read-event-char ()
   "Get the next event."
   (let ((event (next-event)))
@@ -397,11 +409,17 @@ pounce directly on the real variables themselves.")
   (fset 'gnus-tree-minimize 'gnus-xmas-tree-minimize)
   (fset 'gnus-appt-select-lowest-window 
        'gnus-xmas-appt-select-lowest-window)
+  (fset 'gnus-mail-strip-quoted-names 'gnus-xmas-mail-strip-quoted-names)
 
   (add-hook 'gnus-group-mode-hook 'gnus-xmas-group-menu-add)
   (add-hook 'gnus-summary-mode-hook 'gnus-xmas-summary-menu-add)
   (add-hook 'gnus-article-mode-hook 'gnus-xmas-article-menu-add)
 
+  (add-hook 'gnus-pick-mode-hook 'gnus-xmas-pick-menu-add)
+  (add-hook 'gnus-tree-mode-hook 'gnus-xmas-tree-menu-add)
+  (add-hook 'gnus-binary-mode-hook 'gnus-xmas-binary-menu-add)
+  (add-hook 'gnus-grouplens-mode-hook 'gnus-xmas-grouplens-menu-add)
+
   (add-hook 'gnus-group-mode-hook 'gnus-xmas-setup-group-toolbar)
   (add-hook 'gnus-summary-mode-hook 'gnus-xmas-setup-summary-toolbar))
 
@@ -710,5 +728,11 @@ The buffer is not selected, just returned to the caller."
            (after-find-file error (not nowarn)))))
       buf)))
 
+(defun gnus-xmas-mail-strip-quoted-names (address)
+  "Protect mail-strip-quoted-names from NIL input.
+XEmacs compatibility workaround."
+  (if (null address)
+      nil
+    (mail-strip-quoted-names address)))
 
 ;;; gnus-xmas.el ends here
index c31bf25..504469c 100644 (file)
@@ -18,8 +18,9 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; 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:
 
@@ -1708,7 +1709,7 @@ variable (string, integer, character, etc).")
   "gnus-bug@ifi.uio.no (The Gnus Bugfixing Girls + Boys)"
   "The mail address of the Gnus maintainers.")
 
-(defconst gnus-version "September Gnus v0.48"
+(defconst gnus-version "September Gnus v0.49"
   "Version number for this version of Gnus.")
 
 (defvar gnus-info-nodes
@@ -2023,7 +2024,7 @@ Thank you for your help in stamping out bugs.
       gnus-cache-possibly-remove-articles gnus-cache-request-article
       gnus-cache-retrieve-headers gnus-cache-possibly-alter-active
       gnus-cache-enter-remove-article gnus-cached-article-p
-      gnus-cache-open gnus-cache-close)
+      gnus-cache-open gnus-cache-close gnus-cache-update-article)
      ("gnus-cache" :interactive t gnus-jog-cache gnus-cache-enter-article
       gnus-cache-remove-article)
      ("gnus-score" :interactive t
@@ -2041,7 +2042,7 @@ Thank you for your help in stamping out bugs.
      ("gnus-edit" :interactive t gnus-score-customize)
      ("gnus-topic" :interactive t gnus-topic-mode)
      ("gnus-topic" gnus-topic-remove-group)
-     ("gnus-salt" :interactive t gnus-pick-mode)
+     ("gnus-salt" :interactive t gnus-pick-mode gnus-binary-mode)
      ("gnus-uu" (gnus-uu-extract-map keymap) (gnus-uu-mark-map keymap))
      ("gnus-uu" :interactive t
       gnus-uu-digest-mail-forward gnus-uu-digest-post-forward
@@ -3246,8 +3247,8 @@ If RE-ONLY is non-nil, strip leading `Re:'s only."
            (setq params nil))
          ;; Create a new frame?
          (unless (setq frame (elt gnus-frame-list i))
-           (nconc gnus-frame-list (list (setq frame (make-frame params)))))
-         (push frame gnus-created-frames)
+           (nconc gnus-frame-list (list (setq frame (make-frame params))))
+           (push frame gnus-created-frames))
          ;; Is the old frame still alive?
          (unless (frame-live-p frame)
            (setcar (nthcdr i gnus-frame-list)
@@ -4533,7 +4534,7 @@ If REGEXP, only list groups matching REGEXP."
        (pop opened))
      (caar opened))))
 
-(defmacro gnus-server-equal (ss1 ss2)
+(defmacro gnus-method-equal (ss1 ss2)
   "Say whether two servers are equal."
   `(let ((s1 ,ss1)
         (s2 ,ss2))
@@ -4544,6 +4545,16 @@ If REGEXP, only list groups matching REGEXP."
                  (setq s1 (cdr s1)))
                (null s1))))))
 
+(defun gnus-server-equal (m1 m2)
+  "Say whether two methods are equal."
+  (let ((m1 (cond ((null m1) gnus-select-method)
+                 ((stringp m1) (gnus-server-to-method m1))
+                 (t m1)))
+       (m2 (cond ((null m2) gnus-select-method)
+                 ((stringp m2) (gnus-server-to-method m2))
+                 (t m2))))
+    (gnus-method-equal m1 m2)))
+
 (defun gnus-group-prefixed-name (group method)
   "Return the whole name from GROUP and METHOD."
   (and (stringp method) (setq method (gnus-server-to-method method)))
@@ -4551,7 +4562,8 @@ If REGEXP, only list groups matching REGEXP."
          (if (and
               (or (assoc (format "%s" (car method)) 
                          (gnus-methods-using 'address))
-                  (equal method gnus-message-archive-method))
+                  (gnus-server-equal method gnus-message-archive-method))
+              (nth 1 method)
               (not (string= (nth 1 method) "")))
              (concat "+" (nth 1 method)))
          ":" group))
@@ -4662,7 +4674,8 @@ increase the score of each group you read."
                 (or method-only-group (gnus-info-group info))
                 gnus-newsrc-hashtb))
         (part-info info)
-        (info (if method-only-group (nth 2 entry) info)))
+        (info (if method-only-group (nth 2 entry) info))
+        method)
     (when method-only-group
       (unless entry
        (error "Trying to change non-existent group %s" method-only-group))
@@ -4680,12 +4693,17 @@ increase the score of each group you read."
       ;; This is a new group, so we just create it.
       (save-excursion
        (set-buffer gnus-group-buffer)
-       (if (gnus-info-method info)
+       (setq method (gnus-info-method info))
+       (when (gnus-server-equal method "native")
+         (setq method nil))
+       (if method
            ;; It's a foreign group...
            (gnus-group-make-group
             (gnus-group-real-name (gnus-info-group info))
-            (prin1-to-string (car (gnus-info-method info)))
-            (nth 1 (gnus-info-method info)))
+            (if (stringp method) method
+              (prin1-to-string (car method)))
+            (and (consp method)
+                 (nth 1 (gnus-info-method info))))
          ;; It's a native group.
          (gnus-group-make-group (gnus-info-group info)))
        (gnus-message 6 "Note: New group created")
@@ -5513,7 +5531,12 @@ of the Earth\".   There is no undo."
        (progn
          (setq info (gnus-copy-sequence info))
          (setcar info new-group)
-         (setcar (cddddr info) method)
+         (unless (gnus-server-equal method "native")
+           (unless (nthcdr 3 info)
+             (nconc info (list nil nil)))
+           (unless (nthcdr 4 info)
+             (nconc info (list nil)))
+           (gnus-info-set-method info method))
          (gnus-group-set-info info))
       (gnus-group-set-info form (or new-group group) part))
     (kill-buffer (current-buffer))
@@ -6055,11 +6078,10 @@ of groups killed."
          (gnus-group-remove-mark group)
          (setq level (gnus-group-group-level))
          (gnus-delete-line)
-         (if (and (not discard)
-                  (setq entry (gnus-gethash group gnus-newsrc-hashtb)))
-             (setq gnus-list-of-killed-groups
-                   (cons (cons (car entry) (nth 2 entry))
-                         gnus-list-of-killed-groups)))
+         (when (and (not discard)
+                    (setq entry (gnus-gethash group gnus-newsrc-hashtb)))
+           (push (cons (car entry) (nth 2 entry))
+                 gnus-list-of-killed-groups))
          (gnus-group-change-level
           (if entry entry group) gnus-level-killed (if entry nil level)))
       ;; If there are lots and lots of groups to be killed, we use
@@ -6424,9 +6446,12 @@ If FORCE, force saving whether it is necessary or not."
 (defun gnus-group-restart (&optional arg)
   "Force Gnus to read the .newsrc file."
   (interactive "P")
-  (gnus-save-newsrc-file)
-  (gnus-setup-news 'force)
-  (gnus-group-list-groups arg))
+  (when (gnus-yes-or-no-p
+        (format "Are you sure you want to read %s? "
+                gnus-current-startup-file))
+    (gnus-save-newsrc-file)
+    (gnus-setup-news 'force)
+    (gnus-group-list-groups arg)))
 
 (defun gnus-group-read-init-file ()
   "Read the Gnus elisp init file."
@@ -7245,6 +7270,7 @@ This is all marks except unread, ticked, dormant, and expirable."
          (unread gnus-newsgroup-unreads)
          (headers gnus-current-headers)
          (data gnus-newsgroup-data)
+         (summary gnus-summary-buffer)
          (article-buffer gnus-article-buffer)
          (original gnus-original-article-buffer)
          (score-file gnus-current-score-file))
@@ -7255,6 +7281,7 @@ This is all marks except unread, ticked, dormant, and expirable."
        (setq gnus-newsgroup-unreads unread)
        (setq gnus-current-headers headers)
        (setq gnus-newsgroup-data data)
+       (setq gnus-summary-buffer summary)
        (setq gnus-article-buffer article-buffer)
        (setq gnus-original-article-buffer original)
        (setq gnus-current-score-file score-file)))))
@@ -7628,7 +7655,7 @@ If NO-DISPLAY, don't generate a summary buffer."
        (setq threads (cdr threads)))
       result)))
 
-(defun gnus-summary-gather-threads-by-references (threads)
+(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))
@@ -11412,7 +11439,10 @@ groups."
        (setq buffer-read-only t)
        (buffer-disable-undo (current-buffer))
        (gnus-configure-windows 'summary)
-       (gnus-summary-update-article (cdr gnus-article-current)))
+       (gnus-summary-update-article (cdr gnus-article-current))
+       (when gnus-use-cache
+         (gnus-cache-update-article 
+          (cdr gnus-article-current) (car gnus-article-current))))
       (run-hooks 'gnus-article-display-hook)
       (and (gnus-visual-p 'summary-highlight 'highlight)
           (run-hooks 'gnus-visual-mark-article-hook)))))
@@ -12329,10 +12359,14 @@ If SILENT, don't output messages."
   (gnus-set-global-variables)
   (let ((backward (< n 0))
        (n (abs n))
-       old dum)
+       old dum int)
     (while (and (> n 0)
-               (setq old (save-excursion (forward-line 1) (point)))
-               (gnus-summary-go-to-next-thread backward))
+               (setq old (save-excursion 
+                           (forward-line 1) 
+                           (setq int (gnus-summary-article-intangible-p))
+                           (point)))
+               (or int 
+                   (gnus-summary-go-to-next-thread backward)))
       (when (and (eq gnus-summary-make-false-root 'dummy)
                 (setq dum (text-property-not-all
                            old (point) 'gnus-intangible nil)))
@@ -14110,6 +14144,7 @@ Argument LINES specifies lines to be scrolled up."
       (end-of-buffer
        ;; Long lines may cause an end-of-buffer error.
        (goto-char (point-max))))
+    (move-to-window-line 0)
     nil))
 
 (defun gnus-article-prev-page (&optional lines)
@@ -14124,9 +14159,11 @@ Argument LINES specifies lines to be scrolled down."
        (gnus-narrow-to-page -1)        ;Go to previous page.
        (goto-char (point-max))
        (recenter -1))
-    (condition-case ()
-       (scroll-down lines)
-      (error nil))))
+    (prog1
+       (condition-case ()
+           (scroll-down lines)
+         (error nil))
+      (move-to-window-line 0))))
 
 (defun gnus-article-refer-article ()
   "Read article specified by message-id around point."
@@ -15076,7 +15113,8 @@ the server for new groups."
        (setq entry (gnus-gethash entry gnus-newsrc-hashtb)))
     (if (and (not oldlevel)
             (consp entry))
-       (setq oldlevel (cadr (nth 2 entry))))
+       (setq oldlevel (gnus-info-level (nth 2 entry)))
+      (setq oldlevel 9))
     (if (stringp previous)
        (setq previous (gnus-gethash previous gnus-newsrc-hashtb)))
 
@@ -15314,15 +15352,16 @@ newsgroup."
 (defun gnus-get-unread-articles-in-group (info active &optional update)
   (when active
     ;; Allow the backend to update the info in the group.
-    (when update 
-      (gnus-request-update-info
-       info (gnus-find-method-for-group (gnus-info-group info))))
+    (when (and update 
+              (gnus-request-update-info
+               info (gnus-find-method-for-group (gnus-info-group info))))
+      (gnus-activate-group (gnus-info-group info)))
     (let* ((range (gnus-info-read info))
           (num 0)
           (marked (gnus-info-marks info)))
       ;; If a cache is present, we may have to alter the active info.
-      (and gnus-use-cache
-          (gnus-cache-possibly-alter-active (gnus-info-group info) active))
+      (when (and gnus-use-cache info)
+       (gnus-cache-possibly-alter-active (gnus-info-group info) active))
       ;; Modify the list of read articles according to what articles
       ;; are available; then tally the unread articles and add the
       ;; number to the group hash table entry.
@@ -15388,7 +15427,8 @@ newsgroup."
          (setq range (cdr range)))
        (setq num (max 0 (- (cdr active) num)))))
       ;; Set the number of unread articles.
-      (setcar (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb) num)
+      (when info
+       (setcar (gnus-gethash (gnus-info-group info) gnus-newsrc-hashtb) num))
       num)))
 
 (defun gnus-activate-group (group &optional scan)
@@ -15735,11 +15775,12 @@ If FORCE is non-nil, the .newsrc file is read."
       ;; file (ticked articles, killed groups, foreign methods, etc.)
       (gnus-read-newsrc-el-file quick-file)
 
-      (if (or force
-             (and (file-newer-than-file-p newsrc-file quick-file)
-                  (file-newer-than-file-p newsrc-file
-                                          (concat quick-file "d")))
-             (not gnus-newsrc-alist))
+      (if (and (file-exists-p gnus-current-startup-file)
+              (or force
+                  (and (file-newer-than-file-p newsrc-file quick-file)
+                       (file-newer-than-file-p newsrc-file
+                                               (concat quick-file "d")))
+                  (not gnus-newsrc-alist)))
          ;; We read the .newsrc file.  Note that if there if a
          ;; .newsrc.eld file exists, it has already been read, and
          ;; the `gnus-newsrc-hashtb' has been created.  While reading
@@ -16416,28 +16457,29 @@ If FORCE is non-nil, the .newsrc file is read."
                  (1+ (point)) 'gnus-backlog nil (point-max)))))))
 
 (defun gnus-backlog-request-article (group number buffer)
-  (gnus-backlog-setup)
-  (let ((ident (intern (concat group ":" (int-to-string number))
-                      gnus-backlog-hashtb))
-       beg end)
-    (when (memq ident gnus-backlog-articles)
-      ;; It was in the backlog.
-      (save-excursion
-       (set-buffer (gnus-backlog-buffer))
-       (if (not (setq beg (text-property-any
-                           (point-min) (point-max) 'gnus-backlog
-                           ident)))
-           ;; It wasn't in the backlog after all.
-           (ignore
-            (setq gnus-backlog-articles (delq ident gnus-backlog-articles)))
-         ;; Find the end (i. e., the beginning of the next article).
-         (setq end
-               (next-single-property-change
-                (1+ beg) 'gnus-backlog (current-buffer) (point-max)))))
-      (let ((buffer-read-only nil))
-       (erase-buffer)
-       (insert-buffer-substring gnus-backlog-buffer beg end)
-       t))))
+  (when (numberp number)
+    (gnus-backlog-setup)
+    (let ((ident (intern (concat group ":" (int-to-string number))
+                        gnus-backlog-hashtb))
+         beg end)
+      (when (memq ident gnus-backlog-articles)
+       ;; It was in the backlog.
+       (save-excursion
+         (set-buffer (gnus-backlog-buffer))
+         (if (not (setq beg (text-property-any
+                             (point-min) (point-max) 'gnus-backlog
+                             ident)))
+             ;; It wasn't in the backlog after all.
+             (ignore
+              (setq gnus-backlog-articles (delq ident gnus-backlog-articles)))
+           ;; Find the end (i. e., the beginning of the next article).
+           (setq end
+                 (next-single-property-change
+                  (1+ beg) 'gnus-backlog (current-buffer) (point-max)))))
+       (let ((buffer-read-only nil))
+         (erase-buffer)
+         (insert-buffer-substring gnus-backlog-buffer beg end)
+         t)))))
 
 ;; Allow redefinition of Gnus functions.
 
index 5825614..13297b3 100644 (file)
@@ -478,7 +478,9 @@ One of `mbox', `babyl', `digest', `news', `rnews', `mmdf', `forward',
        (narrow-to-region (car entry) (nth 3 entry))
        (goto-char (point-min))
        (when (looking-at " *\\*\\(.*\\)$")
-         (setq subject (match-string 1)))
+         (setq subject (match-string 1))
+         (when (string-match "[ \t]+$" subject)
+           (setq subject (substring subject 0 (match-beginning 0)))))
        (when
            (let ((case-fold-search nil))
              (re-search-forward
index f19c7a9..0419e6a 100644 (file)
 (defun nndraft-request-update-info (group info &optional server)
   (setcar (cddr info) nil)
   (when (nth 3 info)
-    (setcar (nthcdr 3 info) nil)))
+    (setcar (nthcdr 3 info) nil))
+  t)
 
 (defun nndraft-request-associate-buffer (group)
   "Associate the current buffer with some article in the draft group."
index 4d74334..bf89df3 100644 (file)
@@ -375,7 +375,7 @@ virtual group.")
 
 (defun nnvirtual-create-mapping ()
   "Create an article mapping for the current group."
-  (let* (div m marks article list
+  (let* (div m marks list article
         (map (sort
               (apply 
                'nconc
index 5b78f35..e242ca5 100644 (file)
@@ -1,3 +1,7 @@
+Fri Mar  1 20:52:50 1996  Lars Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus.texi (Customizing Threading): Change.
+
 Wed Feb 28 04:54:41 1996  Lars Ingebrigtsen  <lars@eyesore.no>
 
        * gnus.texi (Slow Terminal Connection): Addition.
index a331fa6..2012e4e 100644 (file)
@@ -3876,13 +3876,13 @@ newsreaders won't be gathered properly.  The choice is yours---plague or
 cholera:
 
 @table @code
-@item gnus-summary-gather-threads-by-subject
-@findex gnus-summary-gather-threads-by-subject
+@item gnus-gather-threads-by-subject
+@findex gnus-gather-threads-by-subject
 This function is the default gathering function and looks at
 @code{Subject}s exclusively.
 
-@item gnus-summary-gather-threads-by-references
-@findex gnus-summary-gather-threads-by-references
+@item gnus-gather-threads-by-references
+@findex gnus-gather-threads-by-references
 This function looks at @code{References} headers exclusively.
 @end table
 
@@ -3891,7 +3891,7 @@ something like:
 
 @lisp
 (setq gnus-summary-thread-gathering-function
-      'gnus-summary-gather-threads-by-references)
+      'gnus-gather-threads-by-references)
 @end lisp
 
 @item gnus-summary-make-false-root
@@ -4279,7 +4279,7 @@ increase memory usage some.
 If you set @code{gnus-keep-backlog} to a number @var{n}, Gnus will store
 at most @var{n} old articles in a buffer for later re-fetching.  If this
 variable is non-@code{nil} and is not a number, Gnus will store
-@emph{all} read articles, which means that your Emacs will group without
+@emph{all} read articles, which means that your Emacs will grow without
 bound before exploding and taking your machine down with you.  I put
 that in there just to keep y'all on your toes.