(eval-when-compile (require 'cl))
(eval-when-compile (require 'gnus-clfns))
-(eval-and-compile (require 'imap))
+(require 'imap)
(require 'nnoo)
(require 'nnmail)
(nnimap-strict-function :tag "User-defined function"))
(repeat :menu-tag "Multi-server (extended)"
:tag "Multi-server list"
- (list (regexp :tag "Server regexp")
+ (list (regexp :tag "Server regexp")
(list (regexp :tag "Incoming Mailbox regexp")
(repeat :tag "Rules for matching server(s) and mailbox(es)"
(list (string :tag "Destination mailbox")
:group 'nnimap
:type 'sexp)
+(defcustom nnimap-close-asynchronous nil
+ "Close mailboxes asynchronously in `nnimap-close-group'.
+This means that errors cought by nnimap when closing the mailbox will
+not prevent Gnus from updating the group status, which may be harmful.
+However, it increases speed."
+ :type 'boolean
+ :group 'nnimap)
+
;; Authorization / Privacy variables
(defvoo nnimap-auth-method nil
(when (and (imap-opened)
(nnimap-possibly-change-group group server))
(case nnimap-expunge-on-close
- ('always (imap-mailbox-expunge)
- (imap-mailbox-close))
- ('ask (if (and (imap-search "DELETED")
+ (always (imap-mailbox-expunge nnimap-close-asynchronous)
+ (imap-mailbox-close nnimap-close-asynchronous))
+ (ask (if (and (imap-search "DELETED")
(gnus-y-or-n-p (format
"Expunge articles in group `%s'? "
imap-current-mailbox)))
- (progn (imap-mailbox-expunge)
- (imap-mailbox-close))
+ (progn (imap-mailbox-expunge nnimap-close-asynchronous)
+ (imap-mailbox-close nnimap-close-asynchronous))
(imap-mailbox-unselect)))
(t (imap-mailbox-unselect)))
(not imap-current-mailbox))))
(defun nnimap-expunge (mailbox server)
(when (nnimap-possibly-change-group mailbox server)
- (imap-mailbox-expunge nnimap-server-buffer)))
+ (imap-mailbox-expunge nil nnimap-server-buffer)))
(defun nnimap-acl-get (mailbox server)
(when (nnimap-possibly-change-server server)