mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-20 10:23:57 +00:00
nnimap.el: Use the UID returned when copying and accepting articles, instead of searching for the ID (on the servers that support it).
nnimap.el (nnimap-get-groups): Reimplement to work with folded lines.
This commit is contained in:
parent
ae48954851
commit
cccb4b4ccd
@ -2,6 +2,10 @@
|
||||
|
||||
* nnimap.el (nnimap-last-response-string): Remove the unfolding -- it
|
||||
introduces regressions in article selection.
|
||||
(nnimap-find-uid-response): New function.
|
||||
(nnimap-request-accept-article): Use the UID returned, if any.
|
||||
(nnimap-request-move-article): Use the UID returned, if any.
|
||||
(nnimap-get-groups): Reimplement to work with folded lines.
|
||||
|
||||
2010-11-25 Katsumi Yamaoka <yamaoka@jpl.org>
|
||||
|
||||
|
@ -800,8 +800,9 @@ textual parts.")
|
||||
(when (car result)
|
||||
(nnimap-delete-article article)
|
||||
(cons internal-move-group
|
||||
(nnimap-find-article-by-message-id
|
||||
internal-move-group message-id))))
|
||||
(or (nnimap-find-uid-response "COPYUID" (cadr result))
|
||||
(nnimap-find-article-by-message-id
|
||||
internal-move-group message-id)))))
|
||||
;; Move the article to a different method.
|
||||
(let ((result (eval accept-form)))
|
||||
(when result
|
||||
@ -978,7 +979,22 @@ textual parts.")
|
||||
(nnheader-message 7 "%s" (nnheader-get-report-string 'nnimap))
|
||||
nil)
|
||||
(cons group
|
||||
(nnimap-find-article-by-message-id group message-id))))))))
|
||||
(or (nnimap-find-uid-response "APPENDUID" (car result))
|
||||
(nnimap-find-article-by-message-id
|
||||
group message-id)))))))))
|
||||
|
||||
(defun nnimap-find-uid-response (name list)
|
||||
(let ((result (nth 2 (nnimap-find-response-element name list))))
|
||||
(and result
|
||||
(string-to-number result))))
|
||||
|
||||
(defun nnimap-find-response-element (name list)
|
||||
(let (result)
|
||||
(dolist (elem list)
|
||||
(when (and (consp elem)
|
||||
(equal name (car elem)))
|
||||
(setq result elem)))
|
||||
result))
|
||||
|
||||
(deffoo nnimap-request-replace-article (article group buffer)
|
||||
(let (group-art)
|
||||
@ -997,15 +1013,22 @@ textual parts.")
|
||||
(replace-match "\r\n" t t)))
|
||||
|
||||
(defun nnimap-get-groups ()
|
||||
(let ((result (nnimap-command "LIST \"\" \"*\""))
|
||||
(erase-buffer)
|
||||
(let ((sequence (nnimap-send-command "LIST \"\" \"*\""))
|
||||
groups)
|
||||
(when (car result)
|
||||
(dolist (line (cdr result))
|
||||
(when (and (equal (car line) "LIST")
|
||||
(not (and (caadr line)
|
||||
(string-match "noselect" (caadr line)))))
|
||||
(push (car (last line)) groups)))
|
||||
(nreverse groups))))
|
||||
(nnimap-wait-for-response sequence)
|
||||
(subst-char-in-region (point-min) (point-max)
|
||||
?\\ ?% t)
|
||||
(goto-char (point-min))
|
||||
(nnimap-unfold-quoted-lines)
|
||||
(goto-char (point-min))
|
||||
(while (search-forward "* LIST " nil t)
|
||||
(let ((flags (read (current-buffer)))
|
||||
(separator (read (current-buffer)))
|
||||
(group (read (current-buffer))))
|
||||
(unless (member '%NoSelect flags)
|
||||
(push group groups))))
|
||||
(nreverse groups)))
|
||||
|
||||
(deffoo nnimap-request-list (&optional server)
|
||||
(nnimap-possibly-change-group nil server)
|
||||
|
Loading…
Reference in New Issue
Block a user