]> code.delx.au - gnu-emacs/commitdiff
lisp/gnus/nnir.el Check for literal+ capability in IMAP
authorLars Magne Ingebrigtsen <larsi@gnus.org>
Tue, 27 Jan 2015 06:06:43 +0000 (06:06 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 27 Jan 2015 06:06:43 +0000 (06:06 +0000)
lisp/gnus/ChangeLog
lisp/gnus/nnir.el

index 0d105a9b1635dc3fe07a6374167282d2562205d4..7bf4a6e01d63bac961df60436c2d2832793da0bd 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-27  Lars Ingebrigtsen  <larsi@gnus.org>
+
+       * nnir.el (nnir-imap-expr-to-imap): Check for literal+ capability in
+       IMAP.
+
 2015-01-27  Eric Abrahamsen  <eric@ericabrahamsen.net>
 
        * nnir.el (nnir-run-imap): Enable non-ASCII IMAP searches.
index dcb69aabcd7b1398960a18fa1e995df36af4c160..6d111e89e801593d467049cd9f29a8b40173b37f 100644 (file)
@@ -1069,29 +1069,30 @@ In future the following will be added to the language:
 (defun nnir-imap-expr-to-imap (criteria expr)
   "Convert EXPR into an IMAP search expression on CRITERIA"
   ;; What sort of expression is this, eh?
-  (cond
-   ;; Simple string term
-   ((stringp expr)
-    (format "%s %S" criteria expr))
-   ;; Trivial term: and
-   ((eq expr 'and) nil)
-   ;; Composite term: or expression
-   ((eq (car-safe expr) 'or)
-    (format "OR %s %s"
-           (nnir-imap-expr-to-imap criteria (second expr))
-           (nnir-imap-expr-to-imap criteria (third expr))))
-   ;; Composite term: just the fax, mam
-   ((eq (car-safe expr) 'not)
-    (format "NOT (%s)" (nnir-imap-query-to-imap criteria (rest expr))))
-   ;; Composite term: non-ascii search term
-   ((numberp (car-safe expr))
-    (format "%s {%d%s}\n%s" criteria (car expr)
-           (if literal+ "+" "") (second expr)))
-   ;; Composite term: just expand it all.
-   ((and (not (null expr)) (listp expr))
-    (format "(%s)" (nnir-imap-query-to-imap criteria expr)))
-   ;; Complex value, give up for now.
-   (t (error "Unhandled input: %S" expr))))
+  (let ((literal+ (nnimap-capability "LITERAL+")))
+    (cond
+     ;; Simple string term
+     ((stringp expr)
+      (format "%s %S" criteria expr))
+     ;; Trivial term: and
+     ((eq expr 'and) nil)
+     ;; Composite term: or expression
+     ((eq (car-safe expr) 'or)
+      (format "OR %s %s"
+             (nnir-imap-expr-to-imap criteria (second expr))
+             (nnir-imap-expr-to-imap criteria (third expr))))
+     ;; Composite term: just the fax, mam
+     ((eq (car-safe expr) 'not)
+      (format "NOT (%s)" (nnir-imap-query-to-imap criteria (rest expr))))
+     ;; Composite term: non-ascii search term
+     ((numberp (car-safe expr))
+      (format "%s {%d%s}\n%s" criteria (car expr)
+             (if literal+ "+" "") (second expr)))
+     ;; Composite term: just expand it all.
+     ((and (not (null expr)) (listp expr))
+      (format "(%s)" (nnir-imap-query-to-imap criteria expr)))
+     ;; Complex value, give up for now.
+     (t (error "Unhandled input: %S" expr)))))
 
 
 (defun nnir-imap-parse-query (string)