From: Gnus developers Date: Thu, 4 Nov 2010 22:18:09 +0000 (+0000) Subject: Merge changes made in Gnus trunk. X-Git-Tag: emacs-pretest-24.0.90~104^2~275^2~438^2~45^2~382 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=181cb5fb657b4f226eb5f9f4d13d8ea9ede81268;p=emacs.git 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. --- diff --git a/doc/misc/ChangeLog b/doc/misc/ChangeLog index 89e16eaa308..9761e599d8f 100644 --- a/doc/misc/ChangeLog +++ b/doc/misc/ChangeLog @@ -1,3 +1,13 @@ +2010-11-04 Lars Magne Ingebrigtsen + + * gnus.texi (Customizing the IMAP Connection): Remove nnir mention, + since that works by default. + +2010-11-03 Kan-Ru Chen (tiny change) + + * gnus.texi (Customizing the IMAP Connection): Document + `nnimap-expunge' and remove `nnimap-expunge-inbox' from example. + 2010-11-04 Michael Albinus * tramp.texi (Remote shell setup): New item "Interactive shell diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index eccef851980..8709635a58b 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -14845,9 +14845,7 @@ Here's an example method that's more complex: (nnimap-inbox "INBOX") (nnimap-split-methods default) (nnimap-expunge t) - (nnimap-stream ssl) - (nnir-search-engine imap) - (nnimap-expunge-inbox t)) + (nnimap-stream ssl)) @end example @table @code @@ -14883,6 +14881,11 @@ what you need. Some @acronym{IMAP} servers allow anonymous logins. In that case, this should be set to @code{anonymous}. +@item nnimap-expunge +If non-@code{nil}, expunge articles after deleting them. This is always done +if the server supports UID EXPUNGE, but it's not done by default on +servers that doesn't support that command. + @item nnimap-streaming Virtually all @code{IMAP} server support fast streaming of data. If you have problems connecting to the server, try setting this to @code{nil}. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index aff887fb770..2cb1a77107a 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,32 @@ +2010-11-04 Andrew Cohen + + * 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 + + * 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 * 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 cf139f2154d..46e5881d9fb 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 0f49ed84fac..2eedc07d10f 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 48daea844bf..cc793dfcf9a 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 f3c04cee4f8..bcd6a80f1e8 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 ef7831caa29..65d5af964e5 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 0788ccbe7ca..326de6e3ac8 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 5614e72f518..c828d190b96 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."