* nnheader.el (nnheader-generate-fake-message-id): accept a
authorTeodor Zlatanov <tzz@lifelogs.com>
Mon, 14 Jun 2004 17:34:07 +0000 (17:34 +0000)
committerTeodor Zlatanov <tzz@lifelogs.com>
Mon, 14 Jun 2004 17:34:07 +0000 (17:34 +0000)
number and build a fake message ID localized to a group and
article number (so it's repeatable from that point on)
(nnheader-fake-message-id-p): change regex to accomodate new fake
ID format

* gnus-sum.el (gnus-get-newsgroup-headers): call
nnheader-generate-fake-message-id with the article number

lisp/ChangeLog
lisp/gnus-sum.el
lisp/nnheader.el

index c90daf1..ed47569 100644 (file)
@@ -1,3 +1,14 @@
+2004-06-14  Teodor Zlatanov  <tzz@lifelogs.com>
+
+       * nnheader.el (nnheader-generate-fake-message-id): accept a
+       number and build a fake message ID localized to a group and
+       article number (so it's repeatable from that point on)
+       (nnheader-fake-message-id-p): change regex to accomodate new fake
+       ID format
+
+       * gnus-sum.el (gnus-get-newsgroup-headers): call
+       nnheader-generate-fake-message-id with the article number
+
 2004-06-12  YAGI Tatsuya  <ynyaaa@ybb.ne.jp>  (tiny change)
 
        * gnus-art.el (gnus-article-next-page): Fix the way to find a real
index 687ef2b..24872f9 100644 (file)
@@ -5787,7 +5787,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
         (or dependencies
             (with-current-buffer gnus-summary-buffer
               gnus-newsgroup-dependencies)))
-       headers id end ref
+       headers id end ref number
        (mail-parse-charset gnus-newsgroup-charset)
        (mail-parse-ignored-charsets
         (save-excursion (condition-case nil
@@ -5820,7 +5820,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
           (vector
            ;; Number.
            (prog1
-               (read cur)
+               (setq number (read cur))
              (end-of-line)
              (setq p (point))
              (narrow-to-region (point)
@@ -5857,7 +5857,7 @@ The resulting hash table is returned, or nil if no Xrefs were found."
                                             (match-end 1))
                         ;; If there was no message-id, we just fake one
                         ;; to make subsequent routines simpler.
-                        (nnheader-generate-fake-message-id))))
+                        (nnheader-generate-fake-message-id number))))
            ;; References.
            (progn
              (goto-char p)
index 793dc6f..78f256c 100644 (file)
@@ -216,12 +216,16 @@ on your system, you could say something like:
 
 (defvar nnheader-fake-message-id 1)
 
-(defsubst nnheader-generate-fake-message-id ()
-  (concat "fake+none+" (int-to-string (incf nnheader-fake-message-id))))
+(defsubst nnheader-generate-fake-message-id (&optional number)
+  (if (numberp number)
+      (format "fake+none+%s+%d" gnus-newsgroup-name number)
+  (format "fake+none+%s+%s" 
+         gnus-newsgroup-name 
+         (int-to-string (incf nnheader-fake-message-id)))))
 
 (defsubst nnheader-fake-message-id-p (id)
   (save-match-data                    ; regular message-id's are <.*>
-    (string-match "\\`fake\\+none\\+[0-9]+\\'" id)))
+    (string-match "\\`fake\\+none\\+.*\\+[0-9]+\\'" id)))
 
 ;; Parsing headers and NOV lines.
 
@@ -283,7 +287,7 @@ on your system, you could say something like:
                (or (search-forward ">" (point-at-eol) t) (point)))
             ;; If there was no message-id, we just fake one to make
             ;; subsequent routines simpler.
-            (nnheader-generate-fake-message-id)))
+            (nnheader-generate-fake-message-id number)))
         ;; References.
         (progn
           (goto-char p)
@@ -381,20 +385,21 @@ on your system, you could say something like:
               out)))
      out))
 
-(defmacro nnheader-nov-read-message-id ()
+(defmacro nnheader-nov-read-message-id (&optional number)
   '(let ((id (nnheader-nov-field)))
      (if (string-match "^<[^>]+>$" id)
         id
-       (nnheader-generate-fake-message-id))))
+       (nnheader-generate-fake-message-id number))))
 
 (defun nnheader-parse-nov ()
-  (let ((eol (point-at-eol)))
+  (let ((eol (point-at-eol))
+       (number (nnheader-nov-read-integer)))
     (vector
-     (nnheader-nov-read-integer)       ; number
+     number                            ; number
      (nnheader-nov-field)              ; subject
      (nnheader-nov-field)              ; from
      (nnheader-nov-field)              ; date
-     (nnheader-nov-read-message-id)    ; id
+     (nnheader-nov-read-message-id number) ; id
      (nnheader-nov-field)              ; refs
      (nnheader-nov-read-integer)       ; chars
      (nnheader-nov-read-integer)       ; lines