*** empty log message ***
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 08:38:05 +0000 (08:38 +0000)
committerLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 4 Mar 1997 08:38:05 +0000 (08:38 +0000)
lisp/ChangeLog
lisp/browse-url.el
lisp/gnus-msg.el
lisp/gnus-setup.el
lisp/gnus.el
lisp/message.el
lisp/nnfolder.el
lisp/nnspool.el
texi/gnus.texi

index aed0c7f..fb87c76 100644 (file)
@@ -1,5 +1,45 @@
+Tue Apr  2 15:05:14 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
+
+       * nnfolder.el (nnfolder-possibly-change-group): Make sure the
+       directory exists before writing file.
+       (nnfolder-request-accept-article): Give a better error messae.
+
+Sat Mar 30 18:45:51 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * message.el (message-mode-map): Moved `goto-signature'.
+
+       * nnfolder.el (nnfolder-request-delete-group): Respect
+       nnmail-use-long-file-name. 
+       (nnfolder-request-rename-group): Ditto.
+       (nnfolder-possibly-change-group): Ditto.
+
+       * message.el (message-send-and-exit): Bury buffer.
+
+Fri Mar 29 15:11:19 1996  Hallvard B. Furuseth  <h.b.furuseth@usit.uio.no>
+
+       * message.el (message-from-style): New `default' value.
+       (message-make-from): Use it.
+
+Fri Mar 29 13:50:55 1996  Lars Magne Ingebrigtsen  <lars@eyesore.no>
+
+       * gnus-msg.el (gnus-bug-kill-buffer): New function.
+       (gnus-bug): Use message.
+
+       * message.el (message-yank-original): Avoind `mark-marker'.
+
+       * gnus-setup.el (gnus-use-bbdb): `message' changes.
+       (gnus-use-sc): Ditto.
+
+       * message.el (message-user-organization): Use ORGANIZATION
+       environment variable.
+
+       * nnfolder.el (nnfolder-request-list-newsgroups): Would read the
+       wrong file.
+
 Fri Mar 29 07:38:59 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
 
+       * gnus.el: September Gnus v0.61 is released.
+
        * gnus.el (gnus-read-active-file): Activate secondary groups.
 
 Fri Mar 29 07:44:06 1996  Lars Magne Ingebrigtsen  <larsi@aegir.ifi.uio.no>
index e2fba9a..6596987 100644 (file)
@@ -387,11 +387,11 @@ The URL is loaded according to the value of `browse-url-browser-function'."
 
 (or (fboundp 'event-buffer)
     (defmacro event-buffer (event)
-      (window-buffer (posn-window (event-start event)))))
+      `(window-buffer (posn-window (event-start ,event)))))
 
 (or (fboundp 'event-point)
     (defmacro event-point (event)
-      (posn-point (event-start event))))
+      `(posn-point (event-start ,event))))
 
 (defun browse-url-at-mouse (event)
   "Ask a WWW browser to load a URL clicked with the mouse.
index 3692bce..03a9b91 100644 (file)
@@ -225,7 +225,8 @@ If prefix argument YANK is non-nil, original article is yanked automatically."
        (message-yank-original)
        (setq beg (or beg (mark t))))
       (when articles (insert "\n")))
-    (set-marker (mark-marker) (point))
+    
+    (push-mark)
     (goto-char beg)))
 
 (defun gnus-summary-cancel-article (n)
@@ -656,14 +657,10 @@ If YANK is non-nil, include the original article."
     (erase-buffer)
     (insert gnus-bug-message)
     (goto-char (point-min))
-    (pop-to-buffer "*Gnus Bug*")
-    (erase-buffer)
-    (mail-mode)
-    (mail-setup gnus-maintainer nil nil nil nil nil)
-    (auto-save-mode auto-save-default)
-    (make-local-variable 'gnus-prev-winconf)
-    (setq gnus-prev-winconf winconf)
-    (local-set-key "\C-c\C-c" 'gnus-bug-mail-send-and-exit)
+    (gnus-setup-message 'bug
+      (message-pop-to-buffer "*Gnus Bug*")
+      (message-setup `((To . ,gnus-maintainer) (Subject . ""))))
+    (push `(gnus-bug-kill-buffer) message-send-actions)
     (goto-char (point-min))
     (re-search-forward (concat "^" (regexp-quote mail-header-separator) "$"))
     (forward-line 1)
@@ -675,15 +672,10 @@ If YANK is non-nil, include the original article."
     (search-forward "Subject: " nil t)
     (message "")))
 
-(defun gnus-bug-mail-send-and-exit ()
-  "Send the bug message and exit."
-  (interactive)
-  (let ((cur (current-buffer)))
-    (and (get-buffer "*Gnus Help Bug*")
-        (kill-buffer "*Gnus Help Bug*"))
-    (message-send-and-exit)
-    (when (buffer-name cur)
-      (kill-buffer cur))))
+(defun gnus-bug-kill-buffer ()
+  (and (get-buffer "*Gnus Help Bug*")
+       (kill-buffer "*Gnus Help Bug*"))
+  (kill-buffer nil))
 
 (defun gnus-debug ()
   "Attemps to go through the Gnus source file and report what variables have been changed.
index ddaa75c..4156f62 100644 (file)
          (progn
            (autoload 'bbdb-insinuate-sendmail "bbdb"
              "Insidious Big Brother Database" t)
-           (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)))))
+           (add-hook 'mail-setup-hook 'bbdb-insinuate-sendmail)
+           (add-hook 'message-setup-hook 'bbdb-insinuate-sendmail)))))
 
 (if gnus-use-sc
     (progn
-      (add-hook 'mail-citation-hook 'sc-cite-original)))
+      (add-hook 'mail-citation-hook 'sc-cite-original)
+      (setq message-cite-function 'sc-cite-original)))
 \f
 ;;;### (autoloads (gnus-batch-score gnus-fetch-group gnus gnus-slave gnus-no-server gnus-update-format) "gnus" "lisp/gnus.el" (12473 2137))
 ;;; Generated autoloads from lisp/gnus.el
index 8e8fb6c..c672b39 100644 (file)
@@ -1688,7 +1688,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.61"
+(defconst gnus-version "September Gnus v0.62"
   "Version number for this version of Gnus.")
 
 (defvar gnus-info-nodes
index 638996f..bb8c9b1 100644 (file)
@@ -52,7 +52,7 @@ If this variable is nil, no such courtesy message will be added.")
   "*Regexp that matches headers to be removed in resent bounced mail.")
 
 ;;;###autoload
-(defvar message-from-style 'angles 
+(defvar message-from-style 'default
   "*Specifies how \"From\" headers look.
 
 If `nil', they contain just the return address like:
@@ -60,7 +60,9 @@ If `nil', they contain just the return address like:
 If `parens', they look like:
        king@grassland.com (Elvis Parsley)
 If `angles', they look like:
-       Elvis Parsley <king@grassland.com>")
+       Elvis Parsley <king@grassland.com>
+Otherwise, most addresses look like `angles', but they look like `parens'
+       if `angles' would need quoting and `parens' would not.")
 
 ;;;###autoload
 (defvar message-syntax-checks
@@ -123,8 +125,10 @@ nil means let mailer mail back a message to report errors.")
 (defvar gnus-local-organization)
 ;;;###autoload
 (defvar message-user-organization 
-  (if (boundp 'gnus-local-organization)
-      gnus-local-organization t)
+  (or (and (boundp 'gnus-local-organization)
+          gnus-local-organization)
+      (getenv "ORGANIZATION")
+      t)
   "*String to be used as an Organization header.
 If t, use `message-user-organization-file'.")
 
@@ -167,7 +171,7 @@ If nil, message won't autosave.")
 (defvar message-send-mail-function 'message-send-mail 
   "Function to call to send the current buffer as mail.
 The headers should be delimited by a line whose contents match the
-variable `message-header-separator'.")
+variable `mail-header-separator'.")
 
 ;;;###autoload
 (defvar message-send-news-function 'message-send-news
@@ -270,10 +274,6 @@ point and mark around the citation text as modified.")
 
 (defvar message-abbrevs-loaded nil)
 
-(autoload 'build-mail-aliases "mailalias"
-  "Read mail aliases from user's personal aliases file and set `mail-aliases'."
-  nil)
-
 (autoload 'expand-mail-aliases "mailalias"
   "Expand all mail aliases in suitable header fields found between BEG and END.
 Suitable header fields are `To', `Cc' and `Bcc' and their `Resent-' variants.
@@ -362,7 +362,7 @@ actually occur.")
          '("^B?CC:\\|^Reply-To:" . font-lock-keyword-face)
          '("^\\(Subject:\\)[ \t]*\\(.+\\)?"
            (1 font-lock-comment-face) (2 font-lock-type-face nil t))
-         (list (concat "^\\(" (regexp-quote message-header-separator) "\\)$")
+         (list (concat "^\\(" (regexp-quote mail-header-separator) "\\)$")
                1 'font-lock-comment-face)
          (cons (concat "^[ \t]*"
                        "\\([" cite-prefix "]+[" cite-suffix "]*\\)?"
@@ -507,7 +507,7 @@ Return the number of headers removed."
   (narrow-to-region
    (goto-char (point-min))
    (if (re-search-forward
-       (concat "^" (regexp-quote message-header-separator) "\n") nil t)
+       (concat "^" (regexp-quote mail-header-separator) "\n") nil t)
        (match-beginning 0)
      (point-max)))
   (goto-char (point-min)))
@@ -564,7 +564,7 @@ Return the number of headers removed."
   (define-key message-mode-map "\C-c\C-f\C-k" 'message-goto-keywords)
   (define-key message-mode-map "\C-c\C-f\C-u" 'message-goto-summary)
   (define-key message-mode-map "\C-c\C-b" 'message-goto-body)
-  (define-key message-mode-map "\C-c\C-s" 'message-goto-signature)
+  (define-key message-mode-map "\C-c\C-i" 'message-goto-signature)
 
   (define-key message-mode-map "\C-c\C-t" 'message-insert-to)
   (define-key message-mode-map "\C-c\C-n" 'message-insert-newsgroups)
@@ -599,7 +599,7 @@ C-c C-f  move to a header field (and create it if there isn't):
 C-c C-t  message-insert-to (add a To header to a news followup)
 C-c C-n  message-insert-newsgroups (add a Newsgroup header to a news reply)
 C-c C-b  message-goto-body (move to beginning of message text).
-C-c C-s  message-goto-signature (move to the beginning of the signature).
+C-c C-i  message-goto-signature (move to the beginning of the signature).
 C-c C-w  message-insert-signature (insert `message-signature-file' file).
 C-c C-y  message-yank-original (insert current message, if any).
 C-c C-q  message-fill-yanked-message (fill what was yanked).
@@ -619,10 +619,10 @@ C-c C-r  message-ceasar-buffer-body (rot13 the message body)."
   (setq font-lock-defaults '(message-font-lock-keywords t))
   (make-local-variable 'paragraph-separate)
   (make-local-variable 'paragraph-start)
-  (setq paragraph-start (concat (regexp-quote message-header-separator)
+  (setq paragraph-start (concat (regexp-quote mail-header-separator)
                                "$\\|[ \t]*[-_][-_][-_]+$\\|"
                                paragraph-start))
-  (setq paragraph-separate (concat (regexp-quote message-header-separator)
+  (setq paragraph-separate (concat (regexp-quote mail-header-separator)
                                   "$\\|[ \t]*[-_][-_][-_]+$\\|"
                                   paragraph-separate))
   (make-local-variable 'message-reply-headers)
@@ -665,7 +665,7 @@ C-c C-r  message-ceasar-buffer-body (rot13 the message body)."
   (message-position-on-field "Bcc" "Cc" "To"))
 
 (defun message-goto-fcc ()
-  "Move point to the Followup-To header."
+  "Move point to the Fcc header."
   (interactive)
   (message-position-on-field "Fcc" "To" "Newsgroups"))
 
@@ -703,7 +703,7 @@ C-c C-r  message-ceasar-buffer-body (rot13 the message body)."
   "Move point to the beginning of the message body."
   (interactive)
   (goto-char (point-min))
-  (search-forward (concat "\n" message-header-separator "\n") nil t))
+  (search-forward (concat "\n" mail-header-separator "\n") nil t))
 
 (defun message-goto-signature ()
   "Move point to the beginning of the message signature, 
@@ -823,7 +823,7 @@ Numeric argument means justify as well."
   (interactive "P")
   (save-excursion
     (goto-char (point-min))
-    (search-forward (concat "\n" message-header-separator "\n") nil t)
+    (search-forward (concat "\n" mail-header-separator "\n") nil t)
     (fill-individual-paragraphs (point)
                                (point-max)
                                justifyp
@@ -871,11 +871,7 @@ prefix, and don't delete any headers."
       (delete-windows-on message-reply-buffer t)
       (insert-buffer message-reply-buffer)
       (funcall message-cite-function)
-      ;; This is like exchange-point-and-mark, but doesn't activate the mark.
-      ;; It is cleaner to avoid activation, even though the command
-      ;; loop would deactivate the mark because we inserted text.
-      (goto-char (prog1 (mark t)
-                  (set-marker (mark-marker) (point) (current-buffer))))
+      (exchange-point-and-mark)
       (unless (bolp)
        (insert ?\n))
       (unless modified
@@ -888,13 +884,9 @@ prefix, and don't delete any headers."
           (if (listp message-indent-citation-function)
               message-indent-citation-function
             (list message-indent-citation-function)))))
-    (unless (consp arg)
-      (goto-char start)
-      (let ((message-indentation-spaces
-            (if arg (prefix-numeric-value arg)
-              message-indentation-spaces)))
-       (while functions
-         (funcall (pop functions)))))
+    (goto-char start)
+    (while functions
+      (funcall (pop functions)))
     (when message-citation-line-function
       (unless (bolp)
        (insert "\n"))
@@ -912,7 +904,7 @@ prefix, and don't delete any headers."
        (goto-char (point-min))
        (progn
         (re-search-forward 
-         (concat "^" (regexp-quote message-header-separator) "$"))
+         (concat "^" (regexp-quote mail-header-separator) "$"))
         (match-beginning 0)))
       (goto-char (point-min))
       (if (re-search-forward (concat "^" (regexp-quote header) ":") nil t)
@@ -967,7 +959,8 @@ This function can be used in `message-citation-hook', for instance."
 Prefix arg means don't delete this window."
   (interactive "P")
   (message-send)
-  ;(message-bury arg)
+  (bury-buffer (current-buffer))
+;  (message-bury arg)
   )
 
 (defun message-dont-send (&optional arg)
@@ -1068,7 +1061,7 @@ the user from the mailer."
            ;; Change header-delimiter to be what sendmail expects.
            (goto-char (point-min))
            (re-search-forward
-            (concat "^" (regexp-quote message-header-separator) "\n"))
+            (concat "^" (regexp-quote mail-header-separator) "\n"))
            (replace-match "\n")
            (backward-char 1)
            (setq delimline (point-marker))
@@ -1154,7 +1147,7 @@ the user from the mailer."
              ;; Remove the delimeter.
              (goto-char (point-min))
              (re-search-forward
-              (concat "^" (regexp-quote message-header-separator) "\n"))
+              (concat "^" (regexp-quote mail-header-separator) "\n"))
              (replace-match "\n")
              (backward-char 1))
            (require (car method))
@@ -1509,7 +1502,7 @@ the user from the mailer."
       (widen)
       (goto-char (point-min))
       (re-search-forward 
-       (concat "^" (regexp-quote message-header-separator) "$"))
+       (concat "^" (regexp-quote mail-header-separator) "$"))
       (forward-line 1)
       (int-to-string (count-lines (point) (point-max))))))
 
@@ -1563,7 +1556,19 @@ the user from the mailer."
     (save-excursion
       (message-set-work-buffer)
       (cond 
-       ((eq message-from-style 'angles)
+       ((or (null message-from-style)
+           (equal fullname ""))
+       (insert login))
+       ((or (eq message-from-style 'angles)
+           (and (not (eq message-from-style 'parens))
+                ;; Use angles if no quoting is needed, or if parens would
+                ;; need quoting too.
+                (or (not (string-match "[^- !#-'*+/-9=?A-Z^-~]" fullname))
+                    (let ((tmp (concat fullname nil)))
+                      (while (string-match "([^()]*)" tmp)
+                        (aset tmp (match-beginning 0) ?-)
+                        (aset tmp (1- (match-end 0)) ?-))
+                      (string-match "[\\()]" tmp)))))
        (insert fullname)
        (goto-char (point-min))
        ;; Look for a character that cannot appear unquoted
@@ -1576,7 +1581,7 @@ the user from the mailer."
            (replace-match "\\\\\\&" t))
          (insert "\""))
        (insert " <" login ">"))
-       ((eq message-from-style 'parens)
+       (t                              ; 'parens or default
        (insert login " (")
        (let ((fullname-start (point)))
          (insert fullname)
@@ -1594,9 +1599,7 @@ the user from the mailer."
                    nil 1)
            (replace-match "\\1(\\3)" t)
            (goto-char fullname-start)))
-       (insert ")"))
-       ((null message-from-style)
-       (insert login "\n")))
+       (insert ")")))
       (buffer-string))))
 
 (defun message-make-sender ()
@@ -1822,11 +1825,6 @@ Headers already prepared in the buffer are not modified."
     (message-mode)))
 
 (defun message-setup (headers &optional replybuffer actions)
-  (sendmail-synch-aliases)
-  (when (eq message-aliases t)
-    (setq message-aliases nil)
-    (when (file-exists-p message-personal-alias-file)
-      (build-mail-aliases)))
   (setq message-send-actions actions)
   (setq message-reply-buffer replybuffer)
   (goto-char (point-min))
@@ -1853,7 +1851,7 @@ Headers already prepared in the buffer are not modified."
     (when message-generate-headers-first
       (message-generate-headers message-required-mail-headers))
     (insert message-default-mail-headers))
-  (insert message-header-separator "\n")
+  (insert mail-header-separator "\n")
   (message-insert-signature)
   (message-set-auto-save-file-name)
   (save-restriction
@@ -2109,7 +2107,7 @@ Headers already prepared in the buffer are not modified."
              (if distribution
                  (concat "Distribution: " distribution "\n")
                "")
-             message-header-separator "\n"
+             mail-header-separator "\n"
              "This is a cancel message from " from ".\n")
       (message "Canceling your article...")
       (funcall message-send-news-function)
@@ -2140,7 +2138,7 @@ header line with the old Message-ID."
        (error "No Message-ID in this article")
       (replace-match "Supersedes: " t t))
     (goto-char (point-max))
-    (insert message-header-separator)
+    (insert mail-header-separator)
     (widen)
     (forward-line 1)))
 
index b559a0f..7632309 100644 (file)
@@ -177,10 +177,12 @@ it.")
       (nnfolder-close-group (caar alist) nil t)
       (setq alist (cdr alist))))
   (setq nnfolder-buffer-alist nil
+       nnfolder-server-alist nil
        nnfolder-current-server nil
        nnfolder-group-alist nil))
 
 (defun nnfolder-status-message (&optional server)
+  (nnfolder-possibly-change-group nil server)
   nnfolder-status-string)
 
 (defun nnfolder-request-article (article &optional newsgroup server buffer)
@@ -283,6 +285,7 @@ it.")
   t)
 
 (defun nnfolder-request-create-group (group &optional server) 
+  (nnfolder-possibly-change-group nil server)
   (nnmail-activate 'nnfolder)
   (when group 
     (unless (assoc group nnfolder-group-alist)
@@ -291,14 +294,17 @@ it.")
   t)
 
 (defun nnfolder-request-list (&optional server)
+  (nnfolder-possibly-change-group nil server)
   (save-excursion
     (nnmail-find-file nnfolder-active-file)
     (setq nnfolder-group-alist (nnmail-get-active))))
 
 (defun nnfolder-request-newgroups (date &optional server)
+  (nnfolder-possibly-change-group nil server)
   (nnfolder-request-list server))
 
 (defun nnfolder-request-list-newsgroups (&optional server)
+  (nnfolder-possibly-change-group nil server)
   (save-excursion
     (nnmail-find-file nnfolder-newsgroups-file)))
 
@@ -396,6 +402,8 @@ it.")
        (set-buffer nnfolder-current-buffer)
        (and last (buffer-modified-p) (save-buffer))))
     (nnmail-save-active nnfolder-group-alist nnfolder-active-file)
+    (unless result
+      (nnheader-report 'nnfolder "Couldn't store article"))
     result))
 
 (defun nnfolder-request-replace-article (article group buffer)
@@ -417,8 +425,8 @@ it.")
       ()                               ; Don't delete the articles.
     ;; Delete the file that holds the group.
     (condition-case nil
-       (delete-file (concat (file-name-as-directory nnfolder-directory)
-                            group))
+       (delete-file (directory-file-name 
+                     (nnmail-group-pathname group nnfolder-directory)))
       (error nil)))
   ;; Remove the group from all structures.
   (setq nnfolder-group-alist 
@@ -436,9 +444,10 @@ it.")
     (and (file-writable-p buffer-file-name)
         (condition-case ()
             (progn
-              (rename-file buffer-file-name
-                           (concat (file-name-as-directory nnfolder-directory)
-                                   new-name))
+              (rename-file 
+               buffer-file-name
+               (directory-file-name
+                (nnmail-group-pathname new-name nnfolder-directory)))
               t)
           (error nil))
         ;; That went ok, so we change the internal structures.
@@ -483,59 +492,63 @@ it.")
   (when (and server
             (not (nnfolder-server-opened server)))
     (nnfolder-open-server server))
-  (unless (file-exists-p nnfolder-directory)
-    (make-directory (directory-file-name nnfolder-directory) t))
-  (nnfolder-possibly-activate-groups nil)
-  (or (assoc group nnfolder-group-alist)
-      (not (file-exists-p (concat (file-name-as-directory nnfolder-directory)
-                                 group)))
-      (progn
-       (setq nnfolder-group-alist 
-             (cons (list group (cons 1 0)) nnfolder-group-alist))
-       (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
-  (let (inf file)
-    (if (and (equal group nnfolder-current-group)
-            nnfolder-current-buffer
-            (buffer-name nnfolder-current-buffer))
-       ()
-      (setq nnfolder-current-group group)
-
-      ;; If we have to change groups, see if we don't already have the mbox
-      ;; in memory.  If we do, verify the modtime and destroy the mbox if
-      ;; needed so we can rescan it.
-      (if (setq inf (assoc group nnfolder-buffer-alist))
-         (setq nnfolder-current-buffer (nth 1 inf)))
-
-      ;; If the buffer is not live, make sure it isn't in the alist.  If it
-      ;; is live, verify that nobody else has touched the file since last
-      ;; time.
-      (if (or (not (and nnfolder-current-buffer
-                       (buffer-name nnfolder-current-buffer)))
-             (not (and (bufferp nnfolder-current-buffer)
-                       (verify-visited-file-modtime 
-                        nnfolder-current-buffer))))
-         (progn
-           (if (and nnfolder-current-buffer
-                    (buffer-name nnfolder-current-buffer)
-                    (bufferp nnfolder-current-buffer))
-               (kill-buffer nnfolder-current-buffer))
-           (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
-           (setq inf nil)))
-      
-      (if inf
+  (when group
+    (unless (file-exists-p nnfolder-directory)
+      (make-directory (directory-file-name nnfolder-directory) t))
+    (nnfolder-possibly-activate-groups nil)
+    (or (assoc group nnfolder-group-alist)
+       (not (file-exists-p
+             (directory-file-name
+              (nnmail-group-pathname group nnfolder-directory))))
+       (progn
+         (setq nnfolder-group-alist 
+               (cons (list group (cons 1 0)) nnfolder-group-alist))
+         (nnmail-save-active nnfolder-group-alist nnfolder-active-file)))
+    (let (inf file)
+      (if (and (equal group nnfolder-current-group)
+              nnfolder-current-buffer
+              (buffer-name nnfolder-current-buffer))
          ()
-       (save-excursion
-         (setq file (concat (file-name-as-directory nnfolder-directory)
-                            group))
-         (if (file-directory-p (file-truename file))
-             ()
-           (if (not (file-exists-p file))
+       (setq nnfolder-current-group group)
+
+       ;; If we have to change groups, see if we don't already have the mbox
+       ;; in memory.  If we do, verify the modtime and destroy the mbox if
+       ;; needed so we can rescan it.
+       (if (setq inf (assoc group nnfolder-buffer-alist))
+           (setq nnfolder-current-buffer (nth 1 inf)))
+
+       ;; If the buffer is not live, make sure it isn't in the alist.  If it
+       ;; is live, verify that nobody else has touched the file since last
+       ;; time.
+       (if (or (not (and nnfolder-current-buffer
+                         (buffer-name nnfolder-current-buffer)))
+               (not (and (bufferp nnfolder-current-buffer)
+                         (verify-visited-file-modtime 
+                          nnfolder-current-buffer))))
+           (progn
+             (if (and nnfolder-current-buffer
+                      (buffer-name nnfolder-current-buffer)
+                      (bufferp nnfolder-current-buffer))
+                 (kill-buffer nnfolder-current-buffer))
+             (setq nnfolder-buffer-alist (delq inf nnfolder-buffer-alist))
+             (setq inf nil)))
+      
+       (if inf
+           ()
+         (save-excursion
+           (setq file (directory-file-name
+                       (nnmail-group-pathname group nnfolder-directory)))
+           (if (file-directory-p (file-truename file))
+               ()
+             (unless (file-exists-p file)
+               (unless (file-exists-p (file-name-directory file))
+                 (make-directory (file-name-directory file) t))
                (write-region 1 1 file t 'nomesg))
-           (setq nnfolder-current-buffer 
-                 (set-buffer (nnfolder-read-folder file)))
-           (setq nnfolder-buffer-alist (cons (list group (current-buffer))
-                                             nnfolder-buffer-alist)))))))
-  (setq nnfolder-current-group group))
+             (setq nnfolder-current-buffer 
+                   (set-buffer (nnfolder-read-folder file)))
+             (setq nnfolder-buffer-alist (cons (list group (current-buffer))
+                                               nnfolder-buffer-alist)))))))
+    (setq nnfolder-current-group group)))
 
 (defun nnfolder-save-mail (&optional group)
   "Called narrowed to an article."
index 7a68fc2..8f9b955 100644 (file)
@@ -35,7 +35,7 @@
   "Program to post news.
 This is most commonly `inews' or `injnews'.")
 
-(defvar nnspool-inews-switches '("-h")
+(defvar nnspool-inews-switches '("-h -S")
   "Switches for nnspool-request-post to pass to `inews' for posting news.
 If you are using Cnews, you probably should set this variable to nil.")
 
index e1be3c7..14e69c0 100644 (file)
@@ -836,7 +836,7 @@ long as Gnus is active.
 * Listing Groups::         Gnus can list various subsets of the groups.
 * Sorting Groups::         Re-arrange the group order.
 * Group Maintenance::      Maintaining a tidy @file{.newsrc} file.
-* Browse Foreign Server::  You can browse a server.  See what if has to offer.
+* Browse Foreign Server::  You can browse a server.  See what it has to offer.
 * Exiting Gnus::           Stop reading news and get some work done.
 * Group Topics::           A folding group mode divided into topics.
 * Misc Group Stuff::       Other stuff that you can to do.
@@ -1508,7 +1508,7 @@ Set the mark on the current group (@code{gnus-group-mark-group}).
 
 @item M-#
 @kindex M-# (Group)
-@itemx < u
+@itemx M u
 @kindex M u (Group)
 @findex gnus-group-unmark-group
 Remove the mark from the current group
@@ -7095,10 +7095,10 @@ something like:
 
 @lisp
 (setq gnus-message-archive-method
-      '((nnfolder "archive" 
-                  (nnfolder-inhibit-expiry t)
-                  (nnfolder-active-file "~/Mail/sent-mail/active")
-                  (nnfolder-directory "~/News/sent-mail/"))))
+      '(nnfolder "archive" 
+                 (nnfolder-inhibit-expiry t)
+                 (nnfolder-active-file "~/Mail/sent-mail/active")
+                 (nnfolder-directory "~/News/sent-mail/")))
 @end lisp
 
 @vindex gnus-message-archive-group