diff lisp/gnus/gnus-sum.el @ 111705:cad125981c0f

Merge changes made in Gnus trunk. shr-color.el (shr-color-visible): Really return original background if fixed. shr.el (shr-insert-color-overlay): Replace deprecated syntax. shr.el (shr-tag-body, shr-descend): Add background support. shr.el (shr-tag-title): Add. gnus-sum.el (gnus-summary-articles-in-thread): Fix a bug that causes this function to return incorrect results. shr.el (shr-parse-style): Drop !important from styles. message.el (message-goto-body): Remove the <#secure special-casing, which is too special. mm-util.el (mm-enable-multibyte): Use `to' instead of t. This fixes something or other in Emacs 23, and is backwards compatible. message.el (message-goto-body): Use called-interactively-p. message.el (message-in-body-p): message-goto-body returns point. nnimap.el (nnimap-request-move-article): It's no longer necessary to clear marks before moving, since they're synced from the Gnus side first. gnus-sum.el (gnus-summary-push-marks-to-backend): New function. gnus-sum.el (gnus-summary-move-article): Copy over all marks before moving, so that IMAP doesn't think a new article has arrived. message.el (message-goto-body): called-interactively-p needs a parameter, so use `any'. gnus-cache.el (gnus-summary-insert-cached-articles): Use it. gnus-sum.el (gnus-summary-include-articles): New function. shr.el (shr-tag-table, shr-render-td): Add bgcolor support. shr-color.el (shr-color-visible): Fix docstring. shr.el (shr-insert-background-overlay): Fix typo. shr.el (shr-render-td): Copy the background before rendering.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Wed, 24 Nov 2010 22:54:47 +0000
parents ee13ba492319
children bcb41b2787e8
line wrap: on
line diff
--- a/lisp/gnus/gnus-sum.el	Wed Nov 24 11:39:51 2010 -0500
+++ b/lisp/gnus/gnus-sum.el	Wed Nov 24 22:54:47 2010 +0000
@@ -8500,6 +8500,18 @@
       (gnus-summary-limit (append gnus-newsgroup-dormant gnus-newsgroup-limit))
     (gnus-summary-position-point)))
 
+(defun gnus-summary-include-articles (articles)
+  "Fetch the headers for ARTICLES and then display the summary lines."
+  (let ((gnus-inhibit-demon t)
+	(gnus-agent nil)
+	(gnus-read-all-available-headers t))
+    (setq gnus-newsgroup-headers
+	  (gnus-merge
+	   'list gnus-newsgroup-headers
+	   (gnus-fetch-headers articles nil t)
+	   'gnus-article-sort-by-number))
+    (gnus-summary-limit (append articles gnus-newsgroup-limit))))
+
 (defun gnus-summary-limit-exclude-dormant ()
   "Hide all dormant articles."
   (interactive)
@@ -9705,6 +9717,9 @@
 		  articles)
     (while articles
       (setq article (pop articles))
+      ;; Set any marks that may have changed in the summary buffer.
+      (when gnus-preserve-marks
+	(gnus-summary-push-marks-to-backend article))
       (let ((gnus-newsgroup-original-name gnus-newsgroup-name)
 	    (gnus-article-original-subject
 	     (mail-header-subject
@@ -9921,6 +9936,25 @@
     (gnus-summary-position-point)
     (gnus-set-mode-line 'summary)))
 
+(defun gnus-summary-push-marks-to-backend (article)
+  (let ((add nil)
+	(delete nil)
+	(marks gnus-article-mark-lists))
+    (if (memq article gnus-newsgroup-unreads)
+	(push 'read add)
+      (push 'read delete))
+    (while marks
+      (when (eq (gnus-article-mark-to-type (cdar marks)) 'list)
+	(if (memq article (symbol-value
+			   (intern (format "gnus-newsgroup-%s"
+					   (caar marks)))))
+	    (push (cdar marks) add)
+	  (push (cdar marks) delete)))
+      (pop marks))
+    (gnus-request-set-mark gnus-newsgroup-name
+			   `(((,article) add ,add)
+			     ((,article) del ,delete)))))
+
 (defun gnus-summary-copy-article (&optional n to-newsgroup select-method)
   "Copy the current article to some other group.
 If TO-NEWSGROUP is string, do not prompt for a newsgroup to copy to.
@@ -11232,6 +11266,7 @@
 		  (mail-header-subject (gnus-data-header (car data)))))
 		(t nil)))
 	 (end-point (save-excursion
+		      (goto-char (gnus-data-pos (car data)))
 		      (if (gnus-summary-go-to-next-thread)
 			  (point) (point-max))))
 	 articles)