+(defun elmo-imap4-elist (folder query tags)
+ (let ((session (elmo-imap4-get-session folder)))
+ (elmo-imap4-session-select-mailbox
+ session
+ (elmo-imap4-folder-mailbox-internal folder))
+ (let ((answer (elmo-imap4-response-value
+ (elmo-imap4-send-command-wait
+ session query) 'esearch))
+ tag result)
+ (while answer
+ (setq tag (intern (downcase (car answer))))
+ (cond ((eq tag 'uid)
+ nil)
+ ((memq tag tags)
+ (setq result
+ (append result
+ (if (eq tag 'all)
+ (sort
+ (elmo-number-set-to-number-list
+ (mapcar #'(lambda (x)
+ (let ((y (split-string x ":")))
+ (if (null (cdr y))
+ (string-to-number (car y))
+ (cons (string-to-number (car y))
+ (string-to-number (cadr y))))))
+ (split-string (cadr answer) "\,"))) '<)
+ (string-to-number (cadr answer))))))
+ (t nil))
+ (setq answer (cdr answer)))
+ result)))
+