From af92e2477221da81020ea620dc25cb8eaef5c51f Mon Sep 17 00:00:00 2001 From: Andrew Cohen Date: Wed, 20 Jul 2011 14:19:52 +0000 Subject: [PATCH] Merge changes made in Gnus trunk. nnimap.el (nnimap-make-thread-query): New utility function to format an imap thread search query. (nnimap-request-thread): Use it. gnus-sum.el (gnus-handle-ephemeral-exit): Ensure we are setting the right select-method if we are not going back to the group buffer. --- lisp/gnus/ChangeLog | 9 +++++++++ lisp/gnus/gnus-sum.el | 3 +++ lisp/gnus/nnimap.el | 42 +++++++++++++++++++++++------------------- 3 files changed, 35 insertions(+), 19 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index d18be47fb9d..3dc1fe142bf 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,12 @@ +2011-07-20 Andrew Cohen + + * nnimap.el (nnimap-make-thread-query): New utility function to format + an imap thread search query. + (nnimap-request-thread): Use it. + + * gnus-sum.el (gnus-handle-ephemeral-exit): Ensure we are setting the + right select-method if we are not going back to the group buffer. + 2011-07-19 Lars Magne Ingebrigtsen * gnus-group.el (gnus-group-read-ephemeral-group): Make sure we don't diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index 86ff0180f55..6e8fc63d79f 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -7339,6 +7339,9 @@ The state which existed when entering the ephemeral is reset." (if (not (buffer-name (car quit-config))) (gnus-configure-windows 'group 'force) (set-buffer (car quit-config)) + (unless (eq (cdr quit-config) 'group) + (setq gnus-current-select-method + (gnus-find-method-for-group gnus-newsgroup-name))) (cond ((eq major-mode 'gnus-summary-mode) (gnus-set-global-variables)) ((eq major-mode 'gnus-article-mode) diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index ef5bee71629..385522759b6 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1567,25 +1567,14 @@ textual parts.") (deffoo nnimap-request-thread (header &optional group server) (when (nnimap-possibly-change-group group server) - (let* ((id (mail-header-id header)) - (refs (split-string - (or (mail-header-references header) - ""))) - (cmd (let ((value - (format - "(OR HEADER REFERENCES %s HEADER Message-Id %s)" - id id))) - (dolist (refid refs value) - (setq value (format - "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" - refid refid value))))) - (result (with-current-buffer (nnimap-buffer) - (nnimap-command "UID SEARCH %s" cmd)))) - (when result - (gnus-fetch-headers - (and (car result) (delete 0 (mapcar #'string-to-number - (cdr (assoc "SEARCH" (cdr result)))))) - nil t))))) + (let* ((cmd (nnimap-make-thread-query header)) + (result (with-current-buffer (nnimap-buffer) + (nnimap-command "UID SEARCH %s" cmd)))) + (when result + (gnus-fetch-headers + (and (car result) (delete 0 (mapcar #'string-to-number + (cdr (assoc "SEARCH" (cdr result)))))) + nil t))))) (defun nnimap-possibly-change-group (group server) (let ((open-result t)) @@ -1951,6 +1940,21 @@ textual parts.") group-art)) nnimap-incoming-split-list))) +(defun nnimap-make-thread-query (header) + (let* ((id (mail-header-id header)) + (refs (split-string + (or (mail-header-references header) + ""))) + (value + (format + "(OR HEADER REFERENCES %s HEADER Message-Id %s)" + id id))) + (dolist (refid refs value) + (setq value (format + "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" + refid refid value))))) + + (provide 'nnimap) ;;; nnimap.el ends here -- 2.39.2