(nnimap-last-response-string): Fix last unfolding fix.
authorLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Thu, 25 Nov 2010 23:27:16 +0000 (00:27 +0100)
committerLars Magne Ingebrigtsen <larsi@quimbies.gnus.org>
Thu, 25 Nov 2010 23:27:27 +0000 (00:27 +0100)
lisp/ChangeLog
lisp/nnimap.el

index 83583b3..e865e30 100644 (file)
@@ -7,6 +7,7 @@
 
        * nnimap.el (nnimap-unfold-quoted-lines): Refactor out.
        (nnimap-last-response-string): Unfold quoted lines, if they exist.
+       (nnimap-last-response-string): Fix last unfolding fix.
 
 2010-11-25  Katsumi Yamaoka  <yamaoka@jpl.org>
 
index 5fd5e2f..58af211 100644 (file)
@@ -180,7 +180,14 @@ textual parts.")
          (when (eobp)
            (return)))
        (setq article (match-string 1))
-       (nnimap-unfold-quoted-lines)
+       ;; Unfold quoted {number} strings.
+       (while (re-search-forward "[^]][ (]{\\([0-9]+\\)}\r?\n"
+                                 (1+ (line-end-position)) t)
+         (setq size (string-to-number (match-string 1)))
+         (delete-region (+ (match-beginning 0) 2) (point))
+         (setq string (buffer-substring (point) (+ (point) size)))
+         (delete-region (point) (+ (point) size))
+         (insert (format "%S" string)))
        (setq bytes (nnimap-get-length)
              lines nil)
        (beginning-of-line)
@@ -212,12 +219,13 @@ textual parts.")
 
 (defun nnimap-unfold-quoted-lines ()
   ;; Unfold quoted {number} strings.
-  (while (re-search-forward "[^]][ (]{\\([0-9]+\\)}\r\n"
-                           (1+ (line-end-position)) t)
-    (setq size (string-to-number (match-string 1)))
-    (delete-region (+ (match-beginning 0) 2) (point))
-    (setq string (delete-region (point) (+ (point) size)))
-    (insert (format "%S" string))))
+  (let (size string)
+    (while (re-search-forward " {\\([0-9]+\\)}\r?\n" nil t)
+      (setq size (string-to-number (match-string 1)))
+      (delete-region (1+ (match-beginning 0)) (point))
+      (setq string (buffer-substring (point) (+ (point) size)))
+      (delete-region (point) (+ (point) size))
+      (insert (format "%S" string)))))
 
 (defun nnimap-get-length ()
   (and (re-search-forward "{\\([0-9]+\\)}" (line-end-position) t)
@@ -1607,11 +1615,11 @@ textual parts.")
     (let ((end (point)))
       ;; Unfold quoted {num} lines, if they exist.
       (when (search-backward "}" nil t)
-       (save-excursion
-         (save-restriction
-           (narrow-to-region (point-min) end)
-           (goto-char (point-min))
-           (nnimap-unfold-quoted-lines))))
+       (save-restriction
+         (narrow-to-region (point-min) end)
+         (goto-char (point-min))
+         (nnimap-unfold-quoted-lines)
+         (goto-char (setq end (point-max)))))
       (forward-line -1)
       (when (not (bobp))
        (forward-line -1)