diff options
| -rw-r--r-- | lisp/gnus/ChangeLog | 9 | ||||
| -rw-r--r-- | lisp/gnus/gnus-sum.el | 3 | ||||
| -rw-r--r-- | 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 @@ | |||
| 1 | 2011-07-20 Andrew Cohen <cohen@andy.bu.edu> | ||
| 2 | |||
| 3 | * nnimap.el (nnimap-make-thread-query): New utility function to format | ||
| 4 | an imap thread search query. | ||
| 5 | (nnimap-request-thread): Use it. | ||
| 6 | |||
| 7 | * gnus-sum.el (gnus-handle-ephemeral-exit): Ensure we are setting the | ||
| 8 | right select-method if we are not going back to the group buffer. | ||
| 9 | |||
| 1 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> | 10 | 2011-07-19 Lars Magne Ingebrigtsen <larsi@gnus.org> |
| 2 | 11 | ||
| 3 | * gnus-group.el (gnus-group-read-ephemeral-group): Make sure we don't | 12 | * 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." | |||
| 7339 | (if (not (buffer-name (car quit-config))) | 7339 | (if (not (buffer-name (car quit-config))) |
| 7340 | (gnus-configure-windows 'group 'force) | 7340 | (gnus-configure-windows 'group 'force) |
| 7341 | (set-buffer (car quit-config)) | 7341 | (set-buffer (car quit-config)) |
| 7342 | (unless (eq (cdr quit-config) 'group) | ||
| 7343 | (setq gnus-current-select-method | ||
| 7344 | (gnus-find-method-for-group gnus-newsgroup-name))) | ||
| 7342 | (cond ((eq major-mode 'gnus-summary-mode) | 7345 | (cond ((eq major-mode 'gnus-summary-mode) |
| 7343 | (gnus-set-global-variables)) | 7346 | (gnus-set-global-variables)) |
| 7344 | ((eq major-mode 'gnus-article-mode) | 7347 | ((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.") | |||
| 1567 | 1567 | ||
| 1568 | (deffoo nnimap-request-thread (header &optional group server) | 1568 | (deffoo nnimap-request-thread (header &optional group server) |
| 1569 | (when (nnimap-possibly-change-group group server) | 1569 | (when (nnimap-possibly-change-group group server) |
| 1570 | (let* ((id (mail-header-id header)) | 1570 | (let* ((cmd (nnimap-make-thread-query header)) |
| 1571 | (refs (split-string | 1571 | (result (with-current-buffer (nnimap-buffer) |
| 1572 | (or (mail-header-references header) | 1572 | (nnimap-command "UID SEARCH %s" cmd)))) |
| 1573 | ""))) | 1573 | (when result |
| 1574 | (cmd (let ((value | 1574 | (gnus-fetch-headers |
| 1575 | (format | 1575 | (and (car result) (delete 0 (mapcar #'string-to-number |
| 1576 | "(OR HEADER REFERENCES %s HEADER Message-Id %s)" | 1576 | (cdr (assoc "SEARCH" (cdr result)))))) |
| 1577 | id id))) | 1577 | nil t))))) |
| 1578 | (dolist (refid refs value) | ||
| 1579 | (setq value (format | ||
| 1580 | "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" | ||
| 1581 | refid refid value))))) | ||
| 1582 | (result (with-current-buffer (nnimap-buffer) | ||
| 1583 | (nnimap-command "UID SEARCH %s" cmd)))) | ||
| 1584 | (when result | ||
| 1585 | (gnus-fetch-headers | ||
| 1586 | (and (car result) (delete 0 (mapcar #'string-to-number | ||
| 1587 | (cdr (assoc "SEARCH" (cdr result)))))) | ||
| 1588 | nil t))))) | ||
| 1589 | 1578 | ||
| 1590 | (defun nnimap-possibly-change-group (group server) | 1579 | (defun nnimap-possibly-change-group (group server) |
| 1591 | (let ((open-result t)) | 1580 | (let ((open-result t)) |
| @@ -1951,6 +1940,21 @@ textual parts.") | |||
| 1951 | group-art)) | 1940 | group-art)) |
| 1952 | nnimap-incoming-split-list))) | 1941 | nnimap-incoming-split-list))) |
| 1953 | 1942 | ||
| 1943 | (defun nnimap-make-thread-query (header) | ||
| 1944 | (let* ((id (mail-header-id header)) | ||
| 1945 | (refs (split-string | ||
| 1946 | (or (mail-header-references header) | ||
| 1947 | ""))) | ||
| 1948 | (value | ||
| 1949 | (format | ||
| 1950 | "(OR HEADER REFERENCES %s HEADER Message-Id %s)" | ||
| 1951 | id id))) | ||
| 1952 | (dolist (refid refs value) | ||
| 1953 | (setq value (format | ||
| 1954 | "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" | ||
| 1955 | refid refid value))))) | ||
| 1956 | |||
| 1957 | |||
| 1954 | (provide 'nnimap) | 1958 | (provide 'nnimap) |
| 1955 | 1959 | ||
| 1956 | ;;; nnimap.el ends here | 1960 | ;;; nnimap.el ends here |