summaryrefslogtreecommitdiff
path: root/lisp/gnus
diff options
context:
space:
mode:
authorGnus developers <ding@gnus.org>2010-11-04 22:18:09 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2010-11-04 22:18:09 +0000
commit181cb5fb657b4f226eb5f9f4d13d8ea9ede81268 (patch)
treeb295f56479fd578643457e21d196622cbbb0000f /lisp/gnus
parent0a61b059c61e9867478339572caa3329f616996d (diff)
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.
Diffstat (limited to 'lisp/gnus')
-rw-r--r--lisp/gnus/ChangeLog29
-rw-r--r--lisp/gnus/gnus-html.el10
-rw-r--r--lisp/gnus/gnus-sum.el22
-rw-r--r--lisp/gnus/message.el14
-rw-r--r--lisp/gnus/mm-decode.el12
-rw-r--r--lisp/gnus/nnimap.el7
-rw-r--r--lisp/gnus/nnir.el1
-rw-r--r--lisp/gnus/shr.el10
8 files changed, 80 insertions, 25 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index aff887fb77..2cb1a77107 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,32 @@
+2010-11-04 Andrew Cohen <cohen@andy.bu.edu>
+
+ * nnir.el (gnus-summary-nnir-goto-thread): limiting work done by
+ gnus-summary-refer-thread.
+
+ * gnus-sum.el (gnus-build-all-threads): force updating of dependency
+ headers.
+ (gnus-summary-limit-include-thread): prevent articles in thread from
+ being cut in gnus-cut-threads.
+ (gnus-summary-refer-thread): limit retrieved headers to those in
+ thread.
+
+2010-11-04 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * message.el (message-send-mail): Use the value of
+ message-courtesy-message from the message buffer.
+
+ * gnus-html.el (gnus-html-browse-url): Implement mailto: URLs.
+
+ * shr.el (shr-browse-url): Implement mailto: URLs.
+
+ * gnus-sum.el (gnus-summary-show-article): Take `t' as the arg to mean
+ "raw".
+
+ * nnimap.el (nnimap-find-article-by-message-id): Don't EXAMINE a group
+ if it's already selected.
+
+ * mm-decode.el (mm-save-part): Put the entire path in the `M-n' slot.
+
2010-11-04 Katsumi Yamaoka <yamaoka@jpl.org>
* shr.el (shr-tag-img): Use string-width and truncate-string-to-width
diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el
index cf139f2154..46e5881d9f 100644
--- a/lisp/gnus/gnus-html.el
+++ b/lisp/gnus/gnus-html.el
@@ -350,9 +350,13 @@ Use ALT-TEXT for the image string."
"Browse the image under point."
(interactive)
(let ((url (get-text-property (point) 'gnus-string)))
- (if (not url)
- (message "No URL at point")
- (browse-url url))))
+ (cond
+ ((not url)
+ (message "No link under point"))
+ ((string-match "^mailto:" url)
+ (gnus-url-mailto url))
+ (t
+ (browse-url url)))))
(defun gnus-html-schedule-image-fetching (buffer image)
"Retrieve IMAGE, and place it into BUFFER on arrival."
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 0f49ed84fa..2eedc07d10 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -4506,7 +4506,7 @@ the id of the parent article (if any)."
(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 @@ When called interactively, ID is the Message-ID of the current
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 @@ fetch what's specified by the `gnus-refer-thread-limit'
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 @@ variable."
(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 @@ C-u g', show the raw article."
((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.
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index 48daea844b..cc793dfcf9 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4498,7 +4498,9 @@ This function could be useful in `message-setup-hook'."
(string= "base64"
(message-fetch-field
"content-transfer-encoding")))))))
- (message-insert-courtesy-copy))
+ (message-insert-courtesy-copy
+ (with-current-buffer mailbuf
+ message-courtesy-message)))
;; Let's make sure we encoded all the body.
(assert (save-excursion
(goto-char (point-min))
@@ -5939,7 +5941,7 @@ Headers already prepared in the buffer are not modified."
;; Check for IDNA
(message-idna-to-ascii-rhs))))
-(defun message-insert-courtesy-copy ()
+(defun message-insert-courtesy-copy (message)
"Insert a courtesy message in mail copies of combined messages."
(let (newsgroups)
(save-excursion
@@ -5949,12 +5951,12 @@ Headers already prepared in the buffer are not modified."
(goto-char (point-max))
(insert "Posted-To: " newsgroups "\n")))
(forward-line 1)
- (when message-courtesy-message
+ (when message
(cond
- ((string-match "%s" message-courtesy-message)
- (insert (format message-courtesy-message newsgroups)))
+ ((string-match "%s" message)
+ (insert (format message newsgroups)))
(t
- (insert message-courtesy-message)))))))
+ (insert message)))))))
;;;
;;; Setting up a message buffer
diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el
index f3c04cee4f..bcd6a80f1e 100644
--- a/lisp/gnus/mm-decode.el
+++ b/lisp/gnus/mm-decode.el
@@ -1251,11 +1251,13 @@ PROMPT overrides the default one used to ask user for a file name."
(setq filename (gnus-map-function mm-file-name-rewrite-functions
(file-name-nondirectory filename))))
(setq file
- (read-file-name (or prompt
- (format "Save MIME part to (default %s): "
- (or filename "")))
- (or mm-default-directory default-directory)
- (or filename "")))
+ (read-file-name
+ (or prompt
+ (format "Save MIME part to (default %s): "
+ (or filename "")))
+ (or mm-default-directory default-directory)
+ (expand-file-name (or filename "")
+ (or mm-default-directory default-directory))))
(if (file-directory-p file)
(setq file (expand-file-name filename file))
(setq file (expand-file-name
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index ef7831caa2..65d5af964e 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -731,8 +731,6 @@ textual parts.")
;; to examine a mailbox that doesn't exist. This seems to be
;; the only way that allows us to reliably go back to unselected
;; state on Courier.
- (nnimap-command "EXAMINE DOES.NOT.EXIST")
- (setf (nnimap-group nnimap-object) nil)
(car (nnimap-command "RENAME %S %S"
(utf7-encode group t) (utf7-encode new-name t))))))
@@ -863,8 +861,9 @@ textual parts.")
(defun nnimap-find-article-by-message-id (group message-id)
(with-current-buffer (nnimap-buffer)
(erase-buffer)
- (setf (nnimap-group nnimap-object) nil)
- (nnimap-send-command "EXAMINE %S" (utf7-encode group t))
+ (unless (equal group (nnimap-group nnimap-object))
+ (setf (nnimap-group nnimap-object) nil)
+ (nnimap-send-command "EXAMINE %S" (utf7-encode group t)))
(let ((sequence
(nnimap-send-command "UID SEARCH HEADER Message-Id %S" message-id))
article result)
diff --git a/lisp/gnus/nnir.el b/lisp/gnus/nnir.el
index 0788ccbe7c..326de6e3ac 100644
--- a/lisp/gnus/nnir.el
+++ b/lisp/gnus/nnir.el
@@ -510,7 +510,6 @@ and show thread that contains this article."
(cdr (assoc "SEARCH" (cdr result))))))))))
(gnus-summary-read-group-1 group t t gnus-summary-buffer
nil (list backend-number))
- (gnus-summary-limit (list backend-number))
(gnus-summary-refer-thread))))
diff --git a/lisp/gnus/shr.el b/lisp/gnus/shr.el
index 5614e72f51..c828d190b9 100644
--- a/lisp/gnus/shr.el
+++ b/lisp/gnus/shr.el
@@ -340,9 +340,13 @@ redirects somewhere else."
"Browse the URL under point."
(interactive)
(let ((url (get-text-property (point) 'shr-url)))
- (if (not url)
- (message "No link under point")
- (browse-url url))))
+ (cond
+ ((not url)
+ (message "No link under point"))
+ ((string-match "^mailto:" url)
+ (gnus-url-mailto url))
+ (t
+ (browse-url url)))))
(defun shr-save-contents (directory)
"Save the contents from URL in a file."