diff lisp/gnus/gnus-sum.el @ 111401:733acab855e4

Merge changes made in Gnus trunk. mm-decode.el (mm-save-part): Put the entire path in the `M-n' slot. nnimap.el (nnimap-find-article-by-message-id): Don't EXAMINE a group if it's already selected. gnus.texi (Customizing the IMAP Connection): Document `nnimap-expunge' and remove `nnimap-expunge-inbox' from example. gnus.texi (Customizing the IMAP Connection): Remove nnir mention, since that works by default. gnus-sum.el (gnus-summary-show-article): Take `t' as the arg to mean "raw". gnus-html.el (gnus-html-browse-url): Implement mailto: URLs. shr.el (shr-browse-url): Implement mailto: URLs. nnir.el, gnus-sum.el: Improve thread-referral. message.el (message-send-mail): Use the value of message-courtesy-message from the message buffer.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Thu, 04 Nov 2010 22:18:09 +0000
parents 1d510dd4f336
children b75e6634a171
line wrap: on
line diff
--- a/lisp/gnus/gnus-sum.el	Thu Nov 04 11:22:12 2010 -0700
+++ b/lisp/gnus/gnus-sum.el	Thu Nov 04 22:18:09 2010 +0000
@@ -4506,7 +4506,7 @@
 	(while (not (eobp))
 	  (ignore-errors
 	    (setq article (read (current-buffer))
-		  header (gnus-nov-parse-line article dependencies)))
+		  header (gnus-nov-parse-line article dependencies t)))
 	  (when header
 	    (with-current-buffer gnus-summary-buffer
 	      (push header gnus-newsgroup-headers)
@@ -8445,7 +8445,11 @@
 article."
   (interactive (list (mail-header-id (gnus-summary-article-header))))
   (let ((articles (gnus-articles-in-thread
-		   (gnus-id-to-thread (gnus-root-id id)))))
+		   (gnus-id-to-thread (gnus-root-id id))))
+	;;we REALLY want the whole thread---this prevents cut-threads
+	;;from removing the thread we want to include.
+	(gnus-fetch-old-headers nil)
+	(gnus-build-sparse-threads nil))
     (prog1
 	(gnus-summary-limit (nconc articles gnus-newsgroup-limit))
       (gnus-summary-limit-include-matching-articles
@@ -8832,7 +8836,13 @@
 variable."
   (interactive "P")
   (let ((id (mail-header-id (gnus-summary-article-header)))
+	(subject (gnus-simplify-subject
+		  (mail-header-subject (gnus-summary-article-header))))
+	(refs (split-string (or (mail-header-references
+				 (gnus-summary-article-header)) "")))
 	(gnus-summary-ignore-duplicates t)
+	(gnus-inhibit-demon t)
+	(gnus-read-all-available-headers t)
 	(limit (if limit (prefix-numeric-value limit)
 		 gnus-refer-thread-limit)))
     (if  (gnus-check-backend-function 'request-thread gnus-newsgroup-name)
@@ -8859,6 +8869,11 @@
 	  (gnus-message 5 "Fetching headers for %s...done"
 			gnus-newsgroup-name))))
     (when (eq gnus-headers-retrieved-by 'nov)
+      ;; might as well restrict the headers to the relevant ones. this
+      ;; should save time when building threads.
+      (with-current-buffer nntp-server-buffer
+	(goto-char (point-min))
+	(keep-lines (regexp-opt (append refs (list id subject)))))
       (gnus-build-all-threads))
     (gnus-summary-limit-include-thread id)))
 
@@ -9423,7 +9438,8 @@
    ((not arg)
     ;; Select the article the normal way.
     (gnus-summary-select-article nil 'force))
-   ((equal arg '(16))
+   ((or (equal arg '(16))
+	(eq arg t))
     ;; C-u C-u g
     ;; We have to require this here to make sure that the following
     ;; dynamic binding isn't shadowed by autoloading.