Try to fix nnimap group name encoding confusion
authorLars Ingebrigtsen <larsi@gnus.org>
Mon, 20 Feb 2012 10:34:07 +0000 (11:34 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 20 Feb 2012 10:34:07 +0000 (11:34 +0100)
* nnimap.el (nnimap-request-list): Return the group names encoded as
utf8.  Otherwise non-European group names don't work.
(nnimap-request-newgroups): Ditto.

lisp/ChangeLog
lisp/nnimap.el

index ee98698..79bd696 100644 (file)
@@ -1,5 +1,9 @@
 2012-02-20  Lars Ingebrigtsen  <larsi@gnus.org>
 
+       * nnimap.el (nnimap-request-list): Return the group names encoded as
+       utf8.  Otherwise non-European group names don't work.
+       (nnimap-request-newgroups): Ditto.
+
        * gnus-sum.el (gnus-summary-insert-old-articles): Fix the syntax for
        the default in `read-string' (bug#10757).
 
index 6cbd83c..f978b8c 100644 (file)
@@ -1191,7 +1191,8 @@ textual parts.")
          (dolist (response responses)
            (let* ((sequence (car response))
                   (response (cadr response))
-                  (group (cadr (assoc sequence sequences))))
+                  (group (cadr (assoc sequence sequences)))
+                  (egroup (encode-coding-string group 'utf-8)))
              (when (and group
                         (equal (caar response) "OK"))
                (let ((uidnext (nnimap-find-parameter "UIDNEXT" response))
@@ -1203,15 +1204,14 @@ textual parts.")
                    (setq highest (1- (string-to-number (car uidnext)))))
                  (cond
                   ((null highest)
-                   (insert (format "%S 0 1 y\n" (utf7-decode group t))))
+                   (insert (format "%S 0 1 y\n" egroup)))
                   ((zerop exists)
                    ;; Empty group.
-                   (insert (format "%S %d %d y\n"
-                                   (utf7-decode group t)
+                   (insert (format "%S %d %d y\n" egroup
                                    highest (1+ highest))))
                   (t
                    ;; Return the widest possible range.
-                   (insert (format "%S %d 1 y\n" (utf7-decode group t)
+                   (insert (format "%S %d 1 y\n" egroup
                                    (or highest exists)))))))))
          t)))))
 
@@ -1223,7 +1223,7 @@ textual parts.")
                       (nnimap-get-groups)))
        (unless (assoc group nnimap-current-infos)
          ;; Insert dummy numbers here -- they don't matter.
-         (insert (format "%S 0 1 y\n" (utf7-encode group)))))
+         (insert (format "%S 0 1 y\n" (encode-coding-string group 'utf-8)))))
       t)))
 
 (deffoo nnimap-retrieve-group-data-early (server infos)