*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Fri, 1 May 1998 17:46:28 +0000 (17:46 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Fri, 1 May 1998 17:46:28 +0000 (17:46 +0000)
16 files changed:
lisp/ChangeLog
lisp/gnus-agent.el
lisp/gnus-cite.el
lisp/gnus-draft.el
lisp/gnus-msg.el
lisp/gnus-score.el
lisp/gnus-soup.el
lisp/gnus-sum.el
lisp/gnus-util.el
lisp/gnus.el
lisp/message.el
lisp/nnagent.el
lisp/nnfolder.el
lisp/nntp.el
texi/gnus.texi
texi/message.texi

index a08a9b9..eef2a1f 100644 (file)
@@ -1,3 +1,54 @@
+Fri May  1 19:45:50 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
+
+       * gnus.el: Gnus v5.6.8 is released.
+
+Fri May  1 18:51:21 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * nntp.el (nntp-request-newgroups): Use format-time-string.
+
+       * message.el (message-fetch-field): Inhibit point-motion hooks.
+
+Fri May  1 18:33:06 1998  Wes Hardaker  <wjhardaker@ucdavis.edu>
+
+       * gnus-score.el (gnus-adaptive-word-no-group-words): New variable.
+
+Fri May  1 16:56:32 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-agent.el (gnus-agent-expire): Put point at the start of the
+       buffer.
+
+       * gnus-soup.el (gnus-soup-parse-areas): Check whether the file
+       exists. 
+
+       * gnus-draft.el (gnus-draft-send): Use meta-information.
+
+       * nnagent.el (nnagent-request-post): Store meta-information.
+
+       * gnus-agent.el (gnus-agent-meta-information-header): New variable.
+       (gnus-agent-insert-meta-information): New function.
+
+Fri May  1 16:43:35 1998  Paul Franklin  <paul@cs.washington.edu>
+
+       * message.el (message-generate-headers): Insert Sender when
+       required. 
+
+Fri May  1 15:28:55 1998  Lars Magne Ingebrigtsen  <larsi@ifi.uio.no>
+
+       * gnus-util.el (gnus-dd-mmm): Accept "" dates.
+
+       * gnus-cite.el (gnus-article-hide-citation): Don't remove button
+       when hiding.
+
+       * gnus-msg.el (gnus-post-method): Allow ARG to override
+       `current'. 
+
+       * gnus-sum.el (gnus-remove-thread): Remove the dummy root
+       properly. 
+
+       * nnfolder.el (nnfolder-goto-article): New function.
+       (nnfolder-retrieve-headers): Use it.
+       (nnfolder-request-article): Ditto.
+
 Wed Apr 29 22:48:33 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.7 is released.
 Wed Apr 29 22:48:33 1998  Lars Magne Ingebrigtsen  <larsi@menja.ifi.uio.no>
 
        * gnus.el: Gnus v5.6.7 is released.
index fc1a773..10668b7 100644 (file)
@@ -77,6 +77,8 @@ If nil, only read articles will be expired."
 
 ;;; Internal variables
 
 
 ;;; Internal variables
 
+(defvar gnus-agent-meta-information-header "X-Gnus-Agent-Meta-Information")
+
 (defvar gnus-agent-history-buffers nil)
 (defvar gnus-agent-buffer-alist nil)
 (defvar gnus-agent-article-alist nil)
 (defvar gnus-agent-history-buffers nil)
 (defvar gnus-agent-buffer-alist nil)
 (defvar gnus-agent-article-alist nil)
@@ -330,8 +332,23 @@ agent minor mode in all Gnus buffers."
     (re-search-forward
      (concat "^" (regexp-quote mail-header-separator) "\n"))
     (replace-match "\n")
     (re-search-forward
      (concat "^" (regexp-quote mail-header-separator) "\n"))
     (replace-match "\n")
+    (gnus-agent-insert-meta-information 'mail)
     (gnus-request-accept-article "nndraft:queue")))
 
     (gnus-request-accept-article "nndraft:queue")))
 
+(defun gnus-agent-insert-meta-information (type &optional method)
+  "Insert meta-information into the message that says how it's to be posted.
+TYPE can be either `mail' or `news'.  If the latter METHOD can
+be a select method."
+  (save-excursion
+    (message-remove-header gnus-agent-meta-information-header)
+    (goto-char (point-min))
+    (insert gnus-agent-meta-information-header ": "
+           (symbol-name type) " " (format "%S" method)
+           "\n")
+    (forward-char -1)
+    (while (search-backward "\n" nil t)
+      (replace-match "\\n" t t))))
+
 ;;;
 ;;; Group mode commands
 ;;;
 ;;;
 ;;; Group mode commands
 ;;;
@@ -1246,6 +1263,7 @@ The following commands are available:
        (set-buffer
         (setq gnus-agent-current-history
               (setq history (gnus-agent-history-buffer))))
        (set-buffer
         (setq gnus-agent-current-history
               (setq history (gnus-agent-history-buffer))))
+       (goto-char (point-min))
        (unless (zerop (buffer-size))
          (goto-char (point-min))
          (while (not (eobp))
        (unless (zerop (buffer-size))
          (goto-char (point-min))
          (while (not (eobp))
index 4230388..5dd0f89 100644 (file)
@@ -485,6 +485,10 @@ always hide."
                (setq beg nil)
              (setq beg (point-marker))))
          (when (and beg end)
                (setq beg nil)
              (setq beg (point-marker))))
          (when (and beg end)
+           ;; We use markers for the end-points to facilitate later
+           ;; wrapping and mangling of text.
+           (setq beg (set-marker (make-marker) beg)
+                 end (set-marker (make-marker) end))
            (gnus-add-text-properties beg end props)
            (goto-char beg)
            (unless (save-excursion (search-backward "\n\n" nil t))
            (gnus-add-text-properties beg end props)
            (goto-char beg)
            (unless (save-excursion (search-backward "\n\n" nil t))
@@ -496,10 +500,7 @@ always hide."
                (point)
                (progn (eval gnus-cited-text-button-line-format-spec) (point))
                `gnus-article-toggle-cited-text
                (point)
                (progn (eval gnus-cited-text-button-line-format-spec) (point))
                `gnus-article-toggle-cited-text
-               ;; We use markers for the end-points to facilitate later
-               ;; wrapping and mangling of text.
-               (cons (set-marker (make-marker) beg)
-                     (set-marker (make-marker) end)))
+               (cons beg end))
               (point))
             'article-type 'annotation)
            (set-marker beg (point)))))))))
               (point))
             'article-type 'annotation)
            (set-marker beg (point)))))))))
index fcc4aee..8ecbf1f 100644 (file)
@@ -30,6 +30,7 @@
 (require 'message)
 (require 'gnus-msg)
 (require 'nndraft)
 (require 'message)
 (require 'gnus-msg)
 (require 'nndraft)
+(require 'gnus-agent)
 (eval-when-compile (require 'cl))
 
 ;;; Draft minor mode
 (eval-when-compile (require 'cl))
 
 ;;; Draft minor mode
   "Send message ARTICLE."
   (gnus-draft-setup article (or group "nndraft:queue"))
   (let ((message-syntax-checks 'dont-check-for-anything-just-trust-me)
   "Send message ARTICLE."
   (gnus-draft-setup article (or group "nndraft:queue"))
   (let ((message-syntax-checks 'dont-check-for-anything-just-trust-me)
-       message-send-hook)
-    (message-send-and-exit)))
+       message-send-hook type method)
+    ;; We read the meta-information that says how and where
+    ;; this message is to be sent.
+    (save-restriction
+      (message-narrow-to-head)
+      (when (re-search-forward
+            (concat "^" (regexp-quote gnus-agent-meta-information-header) ":")
+            nil t)
+       (setq type (ignore-errors (read (current-buffer)))
+             method (ignore-errors (read (current-buffer))))
+       (message-remove-header gnus-agent-meta-information-header)))
+    ;; Then we send it.  If we have no meta-information, we just send
+    ;; it and let Message figure out how.
+    (if type
+       (let ((message-this-is-news (eq type 'news))
+             (message-this-is-mail (eq type 'mail))
+             (gnus-post-method method)
+             (message-post-method method))
+         (message-send-and-exit))
+      (message-send-and-exit))))
 
 (defun gnus-draft-send-all-messages ()
   "Send all the sendable drafts."
 
 (defun gnus-draft-send-all-messages ()
   "Send all the sendable drafts."
index 5ad9c5d..82ac3d0 100644 (file)
@@ -484,7 +484,8 @@ If SILENT, don't prompt the user."
                   (cons (or gnus-last-posting-server "") 0))))
          method-alist))))
      ;; Override normal method.
                   (cons (or gnus-last-posting-server "") 0))))
          method-alist))))
      ;; Override normal method.
-     ((eq gnus-post-method 'current)
+     ((and (eq gnus-post-method 'current)
+          (not arg))
       group-method) 
      (gnus-post-method
       gnus-post-method)
       group-method) 
      (gnus-post-method
       gnus-post-method)
index 19332b7..8a1dfec 100644 (file)
@@ -269,6 +269,11 @@ This variable allows the same syntax as `gnus-home-score-file'."
   :group 'gnus-score-adapt
   :type '(choice (const nil) integer))
 
   :group 'gnus-score-adapt
   :type '(choice (const nil) integer))
 
+(defcustom gnus-adaptive-word-no-group-words nil
+  "If t, don't adaptively score words included in the group name."
+  :group 'gnus-score-adapt
+  :type 'boolean)
+
 (defcustom gnus-score-mimic-keymap nil
   "*Have the score entry functions pretend that they are a keymap."
   :group 'gnus-score-default
 (defcustom gnus-score-mimic-keymap nil
   "*Have the score entry functions pretend that they are a keymap."
   :group 'gnus-score-default
@@ -2089,6 +2094,10 @@ SCORE is the score to add."
       (set-syntax-table syntab))
     ;; Make all the ignorable words ignored.
     (let ((ignored (append gnus-ignored-adaptive-words
       (set-syntax-table syntab))
     ;; Make all the ignorable words ignored.
     (let ((ignored (append gnus-ignored-adaptive-words
+                          (if gnus-adaptive-word-no-group-words
+                              (message-tokenize-header
+                               (gnus-group-real-name gnus-newsgroup-name)
+                               "."))
                           gnus-default-ignored-adaptive-words)))
       (while ignored
        (gnus-sethash (pop ignored) nil hashtb)))))
                           gnus-default-ignored-adaptive-words)))
       (while ignored
        (gnus-sethash (pop ignored) nil hashtb)))))
@@ -2217,6 +2226,11 @@ SCORE is the score to add."
            (set-syntax-table syntab))
          ;; Make all the ignorable words ignored.
          (let ((ignored (append gnus-ignored-adaptive-words
            (set-syntax-table syntab))
          ;; Make all the ignorable words ignored.
          (let ((ignored (append gnus-ignored-adaptive-words
+                                (if gnus-adaptive-word-no-group-words
+                                    (message-tokenize-header
+                                     (gnus-group-real-name 
+                                      gnus-newsgroup-name)
+                                     "."))
                                 gnus-default-ignored-adaptive-words)))
            (while ignored
              (gnus-sethash (pop ignored) nil hashtb)))
                                 gnus-default-ignored-adaptive-words)))
            (while ignored
              (gnus-sethash (pop ignored) nil hashtb)))
index 5471940..43887f0 100644 (file)
@@ -366,22 +366,23 @@ The vector contain five strings,
   [prefix name encoding description number]
 though the two last may be nil if they are missing."
   (let (areas)
   [prefix name encoding description number]
 though the two last may be nil if they are missing."
   (let (areas)
-    (save-excursion
-      (set-buffer (nnheader-find-file-noselect file 'force))
-      (buffer-disable-undo (current-buffer))
-      (goto-char (point-min))
-      (while (not (eobp))
-       (push (vector (gnus-soup-field)
-                     (gnus-soup-field)
-                     (gnus-soup-field)
-                     (and (eq (preceding-char) ?\t)
-                          (gnus-soup-field))
-                     (and (eq (preceding-char) ?\t)
-                          (string-to-int (gnus-soup-field))))
-             areas)
-       (when (eq (preceding-char) ?\t)
-         (beginning-of-line 2)))
-      (kill-buffer (current-buffer)))
+    (when (file-exists-p file)
+      (save-excursion
+       (set-buffer (nnheader-find-file-noselect file 'force))
+       (buffer-disable-undo (current-buffer))
+       (goto-char (point-min))
+       (while (not (eobp))
+         (push (vector (gnus-soup-field)
+                       (gnus-soup-field)
+                       (gnus-soup-field)
+                       (and (eq (preceding-char) ?\t)
+                            (gnus-soup-field))
+                       (and (eq (preceding-char) ?\t)
+                            (string-to-int (gnus-soup-field))))
+               areas)
+         (when (eq (preceding-char) ?\t)
+           (beginning-of-line 2)))
+       (kill-buffer (current-buffer))))
     areas))
 
 (defun gnus-soup-parse-replies (file)
     areas))
 
 (defun gnus-soup-parse-replies (file)
index 65dc5d1..409e2fc 100644 (file)
@@ -3234,6 +3234,11 @@ 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)
                  ;; If we use dummy roots, then we have to remove the
                  ;; dummy root as well.
                  (when (eq gnus-summary-make-false-root 'dummy)
+                   ;; We go to the dummy root by going to
+                   ;; the first sub-"thread", and then one line up.
+                   (gnus-summary-goto-article
+                    (mail-header-number (caadr thread)))
+                   (forward-line -1)
                    (gnus-delete-line)
                    (gnus-data-compute-positions))
                  (setq thread (cdr thread))
                    (gnus-delete-line)
                    (gnus-data-compute-positions))
                  (setq thread (cdr thread))
index e48b14f..3e9394e 100644 (file)
 ;; it yet.  -erik selberg@cs.washington.edu
 (defun gnus-dd-mmm (messy-date)
   "Return a string like DD-MMM from a big messy string"
 ;; it yet.  -erik selberg@cs.washington.edu
 (defun gnus-dd-mmm (messy-date)
   "Return a string like DD-MMM from a big messy string"
-  (let ((datevec (ignore-errors (timezone-parse-date messy-date))))
-    (if (not datevec)
-       "??-???"
-      (format "%2s-%s"
-             (condition-case ()
-                 ;; Make sure leading zeroes are stripped.
-                 (number-to-string (string-to-number (aref datevec 2)))
-               (error "??"))
-             (capitalize
-              (or (car
-                   (nth (1- (string-to-number (aref datevec 1)))
-                        timezone-months-assoc))
-                  "???"))))))
+  (if (equal messy-date "")
+      "??-???"
+    (let ((datevec (ignore-errors (timezone-parse-date messy-date))))
+      (if (not datevec)
+         "??-???"
+       (format "%2s-%s"
+               (condition-case ()
+                   ;; Make sure leading zeroes are stripped.
+                   (number-to-string (string-to-number (aref datevec 2)))
+                 (error "??"))
+               (capitalize
+                (or (car
+                     (nth (1- (string-to-number (aref datevec 1)))
+                          timezone-months-assoc))
+                    "???")))))))
 
 (defmacro gnus-date-get-time (date)
   "Convert DATE string to Emacs time.
 
 (defmacro gnus-date-get-time (date)
   "Convert DATE string to Emacs time.
index 984be4d..5d3e566 100644 (file)
@@ -250,7 +250,7 @@ is restarted, and sometimes reloaded."
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
   :link '(custom-manual "(gnus)Exiting Gnus")
   :group 'gnus)
 
-(defconst gnus-version-number "5.6.7"
+(defconst gnus-version-number "5.6.8"
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
   "Version number for this version of Gnus.")
 
 (defconst gnus-version (format "Gnus v%s" gnus-version-number)
index e925a25..ac2857e 100644 (file)
@@ -992,7 +992,8 @@ The cdr of ech entry is a function for applying the face to a region.")
 
 (defun message-fetch-field (header &optional not-all)
   "The same as `mail-fetch-field', only remove all newlines."
 
 (defun message-fetch-field (header &optional not-all)
   "The same as `mail-fetch-field', only remove all newlines."
-  (let ((value (mail-fetch-field header nil (not not-all))))
+  (let* ((inhibit-point-motion-hooks t)
+        (value (mail-fetch-field header nil (not not-all))))
     (when value
       (nnheader-replace-chars-in-string value ?\n ? ))))
 
     (when value
       (nnheader-replace-chars-in-string value ?\n ? ))))
 
@@ -1095,22 +1096,24 @@ Return the number of headers removed."
 
 (defun message-news-p ()
   "Say whether the current buffer contains a news message."
 
 (defun message-news-p ()
   "Say whether the current buffer contains a news message."
-  (or message-this-is-news
-      (save-excursion
-       (save-restriction
-         (message-narrow-to-headers)
-         (and (message-fetch-field "newsgroups")
-              (not (message-fetch-field "posted-to")))))))
+  (and (not message-this-is-mail)
+       (or message-this-is-news
+          (save-excursion
+            (save-restriction
+              (message-narrow-to-headers)
+              (and (message-fetch-field "newsgroups")
+                   (not (message-fetch-field "posted-to"))))))))
 
 (defun message-mail-p ()
   "Say whether the current buffer contains a mail message."
 
 (defun message-mail-p ()
   "Say whether the current buffer contains a mail message."
-  (or message-this-is-mail
-      (save-excursion
-       (save-restriction
-         (message-narrow-to-headers)
-         (or (message-fetch-field "to")
-             (message-fetch-field "cc")
-             (message-fetch-field "bcc"))))))
+  (and (not message-this-is-news)
+       (or message-this-is-mail
+          (save-excursion
+            (save-restriction
+              (message-narrow-to-headers)
+              (or (message-fetch-field "to")
+                  (message-fetch-field "cc")
+                  (message-fetch-field "bcc")))))))
 
 (defun message-next-header ()
   "Go to the beginning of the next header."
 
 (defun message-next-header ()
   "Go to the beginning of the next header."
@@ -2916,7 +2919,7 @@ Headers already prepared in the buffer are not modified."
            (insert "Original-")
            (beginning-of-line))
          (when (or (message-news-p)
            (insert "Original-")
            (beginning-of-line))
          (when (or (message-news-p)
-                   (string-match "^[^@]@.+\\..+" secure-sender))
+                   (string-match "@.+\\.." secure-sender))
            (insert "Sender: " secure-sender "\n")))))))
 
 (defun message-insert-courtesy-copy ()
            (insert "Sender: " secure-sender "\n")))))))
 
 (defun message-insert-courtesy-copy ()
index 76d4390..00af2e2 100644 (file)
   nil)
 
 (deffoo nnagent-request-post (&optional server)
   nil)
 
 (deffoo nnagent-request-post (&optional server)
+  (gnus-agent-insert-meta-information 'news gnus-command-method)
   (gnus-request-accept-article "nndraft:queue"))
 
 ;; Use nnml functions for just about everything.
   (gnus-request-accept-article "nndraft:queue"))
 
 ;; Use nnml functions for just about everything.
index 56ca0d6..3045284 100644 (file)
@@ -101,24 +101,16 @@ time saver for large mailboxes.")
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
   (save-excursion
     (set-buffer nntp-server-buffer)
     (erase-buffer)
-    (let (article art-string start stop)
+    (let (article start stop)
       (nnfolder-possibly-change-group group server)
       (when nnfolder-current-buffer
        (set-buffer nnfolder-current-buffer)
        (goto-char (point-min))
        (if (stringp (car articles))
            'headers
       (nnfolder-possibly-change-group group server)
       (when nnfolder-current-buffer
        (set-buffer nnfolder-current-buffer)
        (goto-char (point-min))
        (if (stringp (car articles))
            'headers
-         (while articles
-           (setq article (car articles))
-           (setq art-string (nnfolder-article-string article))
+         (while (setq article (pop articles))
            (set-buffer nnfolder-current-buffer)
            (set-buffer nnfolder-current-buffer)
-           (when (or (search-forward art-string nil t)
-                     ;; Don't search the whole file twice!  Also, articles
-                     ;; probably have some locality by number, so searching
-                     ;; backwards will be faster.  Especially if we're at the
-                     ;; beginning of the buffer :-). -SLB
-                     (search-backward art-string nil t))
-             (nnmail-search-unix-mail-delim-backward)
+           (when (nnfolder-goto-article article)
              (setq start (point))
              (search-forward "\n\n" nil t)
              (setq stop (1- (point)))
              (setq start (point))
              (search-forward "\n\n" nil t)
              (setq stop (1- (point)))
@@ -126,8 +118,7 @@ time saver for large mailboxes.")
              (insert (format "221 %d Article retrieved.\n" article))
              (insert-buffer-substring nnfolder-current-buffer start stop)
              (goto-char (point-max))
              (insert (format "221 %d Article retrieved.\n" article))
              (insert-buffer-substring nnfolder-current-buffer start stop)
              (goto-char (point-max))
-             (insert ".\n"))
-           (setq articles (cdr articles)))
+             (insert ".\n")))
 
          (set-buffer nntp-server-buffer)
          (nnheader-fold-continuation-lines)
 
          (set-buffer nntp-server-buffer)
          (nnheader-fold-continuation-lines)
@@ -165,9 +156,8 @@ time saver for large mailboxes.")
   (save-excursion
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
   (save-excursion
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
-    (when (search-forward (nnfolder-article-string article) nil t)
+    (when (nnfolder-goto-article article)
       (let (start stop)
       (let (start stop)
-       (nnmail-search-unix-mail-delim-backward)
        (setq start (point))
        (forward-line 1)
        (unless (and (nnmail-search-unix-mail-delim)
        (setq start (point))
        (forward-line 1)
        (unless (and (nnmail-search-unix-mail-delim)
@@ -309,7 +299,7 @@ time saver for large mailboxes.")
       (set-buffer nnfolder-current-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
       (set-buffer nnfolder-current-buffer)
       (while (and articles is-old)
        (goto-char (point-min))
-       (when (search-forward (nnfolder-article-string (car articles)) nil t)
+       (when (nnfolder-goto-article (car articles))
          (if (setq is-old
                    (nnmail-expired-article-p
                     newsgroup
          (if (setq is-old
                    (nnmail-expired-article-p
                     newsgroup
@@ -354,7 +344,7 @@ time saver for large mailboxes.")
         (nnfolder-possibly-change-group group server)
         (set-buffer nnfolder-current-buffer)
         (goto-char (point-min))
         (nnfolder-possibly-change-group group server)
         (set-buffer nnfolder-current-buffer)
         (goto-char (point-min))
-        (when (search-forward (nnfolder-article-string article) nil t)
+        (when (nnfolder-goto-article article)
           (nnfolder-delete-mail))
         (when last
           (nnfolder-save-buffer)
           (nnfolder-delete-mail))
         (when last
           (nnfolder-save-buffer)
@@ -409,7 +399,7 @@ time saver for large mailboxes.")
     (nnfolder-normalize-buffer)
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
     (nnfolder-normalize-buffer)
     (set-buffer nnfolder-current-buffer)
     (goto-char (point-min))
-    (if (not (search-forward (nnfolder-article-string article) nil t))
+    (if (not (nnfolder-goto-article article))
        nil
       (nnfolder-delete-mail t t)
       (insert-buffer-substring buffer)
        nil
       (nnfolder-delete-mail t t)
       (insert-buffer-substring buffer)
@@ -484,6 +474,26 @@ time saver for large mailboxes.")
       (concat "\n" nnfolder-article-marker (int-to-string article) " ")
     (concat "\nMessage-ID: " article)))
 
       (concat "\n" nnfolder-article-marker (int-to-string article) " ")
     (concat "\nMessage-ID: " article)))
 
+(defun nnfolder-goto-article (article)
+  "Place point at the start of the headers of ARTICLE.
+ARTICLE can be an article number or a Message-ID."
+  (let ((art-string (nnfolder-article-string article))
+       end-search end)
+    (while (not end-search)
+      (if (or (search-forward art-string nil t)
+             ;; Don't search the whole file twice!  Also, articles
+             ;; probably have some locality by number, so searching
+             ;; backwards will be faster.  Especially if we're at the
+             ;; beginning of the buffer :-). -SLB
+             (search-backward art-string nil t))
+         (progn
+           (setq end (point))
+           (nnmail-search-unix-mail-delim-backward)
+           (unless (save-excursion (search-forward "\n\n" nil end))
+             (setq end-search 'found)))
+       (setq end-search t)))
+    (eq end-search 'found)))
+
 (defun nnfolder-delete-mail (&optional force leave-delim)
   "Delete the message that point is in."
   (save-excursion
 (defun nnfolder-delete-mail (&optional force leave-delim)
   "Delete the message that point is in."
   (save-excursion
index 67c6957..a561140 100644 (file)
@@ -711,16 +711,11 @@ server there that you can connect to.  See also
   (nntp-possibly-change-group nil server)
   (save-excursion
     (set-buffer nntp-server-buffer)
   (nntp-possibly-change-group nil server)
   (save-excursion
     (set-buffer nntp-server-buffer)
-    (let* ((date (timezone-parse-date date))
-          (time-string
-           (format "%s%02d%02d %s%s%s"
-                   (substring (aref date 0) 2) (string-to-int (aref date 1))
-                   (string-to-int (aref date 2)) (substring (aref date 3) 0 2)
-                   (substring
-                    (aref date 3) 3 5) (substring (aref date 3) 6 8))))
-      (prog1
-         (nntp-send-command "^\\.\r?\n" "NEWGROUPS" time-string)
-       (nntp-decode-text)))))
+    (prog1
+       (nntp-send-command
+        "^\\.\r?\n" "NEWGROUPS"
+        (format-time-string "%y%m%d %H%M%S" (nnmail-date-to-time date)))
+      (nntp-decode-text))))
 
 (deffoo nntp-request-post (&optional server)
   (nntp-possibly-change-group nil server)
 
 (deffoo nntp-request-post (&optional server)
   (nntp-possibly-change-group nil server)
index 93c5fe8..dc581a9 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename gnus
-@settitle Gnus 5.6.7 Manual
+@settitle Gnus 5.6.8 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
@@ -316,7 +316,7 @@ into another language, under the above conditions for modified versions.
 @tex
 
 @titlepage
 @tex
 
 @titlepage
-@title Gnus 5.6.7 Manual
+@title Gnus 5.6.8 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -352,7 +352,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.
 
 spool or your mbox file.  All at the same time, if you want to push your
 luck.
 
-This manual corresponds to Gnus 5.6.7.
+This manual corresponds to Gnus 5.6.8.
 
 @end ifinfo
 
 
 @end ifinfo
 
@@ -15711,7 +15711,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.
 * 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.7.
+* Quassia Gnus::       Two times two is four, or Gnus 5.6.8.
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
 @end menu
 
 These lists are, of course, just @emph{short} overviews of the
@@ -16246,7 +16246,7 @@ Emphasized text can be properly fontisized:
 @node Quassia Gnus
 @subsubsection Quassia Gnus
 
 @node Quassia Gnus
 @subsubsection Quassia Gnus
 
-New features in Gnus 5.6.7:
+New features in Gnus 5.6.8:
 
 @itemize @bullet
 
 
 @itemize @bullet
 
index 728dc7e..388f34f 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
 \input texinfo                  @c -*-texinfo-*-
 
 @setfilename message
-@settitle Message 5.6.7 Manual
+@settitle Message 5.6.8 Manual
 @synindex fn cp
 @synindex vr cp
 @synindex pg cp
 @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
 @tex
 
 @titlepage
-@title Message 5.6.7 Manual
+@title Message 5.6.8 Manual
 
 @author by Lars Magne Ingebrigtsen
 @page
 
 @author by Lars Magne Ingebrigtsen
 @page
@@ -83,7 +83,7 @@ Message mode buffers.
 * Key Index::         List of Message mode keys.
 @end menu
 
 * Key Index::         List of Message mode keys.
 @end menu
 
-This manual corresponds to Message 5.6.7.  Message is distributed with
+This manual corresponds to Message 5.6.8.  Message is distributed with
 the Gnus distribution bearing the same version number as this manual
 has. 
 
 the Gnus distribution bearing the same version number as this manual
 has.