Synch with Gnus.
[elisp/gnus.git-] / lisp / gnus-msg.el
index 0f4b95f..9afcc03 100644 (file)
@@ -106,6 +106,9 @@ the second with the current group name.")
 (defvar gnus-posting-styles nil
   "*Alist of styles to use when posting.")
 
+(defvar gnus-inews-mark-gcc-as-read nil
+  "If non-nil, automatically mark Gcc articles as read.")
+
 (defcustom gnus-group-posting-charset-alist
   '(("^\\(no\\|fr\\|dk\\)\\.[^,]*\\(,[ \t\n]*\\(no\\|fr\\|dk\\)\\.[^,]*\\)*$" iso-8859-1 (iso-8859-1))
     ("^\\(fido7\\|relcom\\)\\.[^,]*\\(,[ \t\n]*\\(fido7\\|relcom\\)\\.[^,]*\\)*$" koi8-r (koi8-r))
@@ -1158,7 +1161,7 @@ this is a reply."
        (let ((gcc (or gcc (mail-fetch-field "gcc" nil t)))
              (coding-system-for-write 'raw-text)
              (output-coding-system 'raw-text)
-             groups group method)
+             groups group method group-art)
          (when gcc
            (message-remove-header "gcc")
            (widen)
@@ -1179,10 +1182,36 @@ this is a reply."
                       (concat "^" (regexp-quote mail-header-separator) "$")
                       nil t)
                  (replace-match "" t t ))
-               (unless (gnus-request-accept-article group method t t)
+               (unless (setq group-art 
+                             (gnus-request-accept-article group method t t))
                  (gnus-message 1 "Couldn't store article in group %s: %s"
                                group (gnus-status-message method))
                  (sit-for 2))
+               (when (and group-art gnus-inews-mark-gcc-as-read)
+                 (let ((active (gnus-active group)))
+                   (if active
+                       (if (< (cdr active) (cdr group-art))
+                           (gnus-set-active group (cons (car active) 
+                                                        (cdr group-art))))
+                     (gnus-activate-group group)))
+                 (let ((buffer (concat "*Summary " group "*"))
+                       (mark gnus-read-mark)
+                       (article (cdr group-art)))
+                   (unless 
+                       (and 
+                        (get-buffer buffer)
+                        (with-current-buffer buffer
+                          (when gnus-newsgroup-prepared
+                            (when (and gnus-newsgroup-auto-expire
+                                       (memq mark gnus-auto-expirable-marks))
+                              (setq mark gnus-expirable-mark))
+                            (setq mark (gnus-request-update-mark 
+                                        group article mark))
+                            (gnus-mark-article-as-read article mark)
+                            (setq gnus-newsgroup-active (gnus-active group))
+                            t)))
+                     (gnus-group-make-articles-read group 
+                                                    (list article)))))
                (kill-buffer (current-buffer))))))))))
 
 (defun gnus-inews-insert-gcc ()