]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix flow filling for flowing multiple flowed lines
authorFerdinand Pieper <git@pie.tf>
Fri, 14 Aug 2020 14:15:08 +0000 (16:15 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 14 Aug 2020 14:15:13 +0000 (16:15 +0200)
* lisp/mail/flow-fill.el (fill-flowed): Loop until all flowed lines
are collected.
* test/lisp/mail/flow-fill-tests.el
(fill-flow-tests-fill-flowed-decode): Also test for multiple
flowed lines (bug#42855).

lisp/mail/flow-fill.el
test/lisp/mail/flow-fill-tests.el

index af3b493a08ad25ef710c094d922b53d545f1d321..f4b55031194869af07cdaa54cbabf28da1ccd38c 100644 (file)
@@ -131,31 +131,37 @@ lines."
             (goto-char (match-end 0))
             (unless (looking-at " ")
               (insert " "))
-            (end-of-line)
-            (when (and (not (eobp))
-                       (save-excursion
-                         (forward-line 1)
-                         (looking-at (format "\\(%s ?\\)[^>]" prefix))))
-              ;; Delete the newline and the quote at the start of the
-              ;; next line.
-              (delete-region (point) (match-end 1))
-              (ignore-errors
+            (while (and (eq (char-before (line-end-position)) ?\s)
+                        (not (eobp))
+                        (save-excursion
+                          (forward-line 1)
+                          (looking-at (format "\\(%s ?\\)[^>]" prefix))))
+              (end-of-line)
+              (when (and (not (eobp))
+                         (save-excursion
+                           (forward-line 1)
+                           (looking-at (format "\\(%s ?\\)[^>]" prefix))))
+                ;; Delete the newline and the quote at the start of the
+                ;; next line.
+                (delete-region (point) (match-end 1))))
+                (ignore-errors
                  (let ((fill-prefix (concat prefix " "))
                        adaptive-fill-mode)
                    (fill-region (line-beginning-position)
                                  (line-end-position)
-                                'left 'nosqueeze))))))
-         (t
+                                'left 'nosqueeze)))))
+          (t
           ;; Delete the newline.
           (when (eq (following-char) ?\s)
             (delete-char 1))
           ;; Hack: Don't do the flowing on the signature line.
           (when (and (not (looking-at "-- $"))
                      (eq (char-before (line-end-position)) ?\s))
-            (end-of-line)
-            (when delete-space
-              (delete-char -1))
-            (delete-char 1)
+            (while (eq (char-before (line-end-position)) ?\s)
+              (end-of-line)
+              (when delete-space
+                (delete-char -1))
+              (delete-char 1))
             (ignore-errors
                (let ((fill-prefix ""))
                  (fill-region (line-beginning-position)
index 4d435aeda718459d2f5d495157349f91aae0d7bf..c2e4178b7d4e0f1221a8634b71141b4f2c12bd50 100644 (file)
@@ -35,7 +35,8 @@
           ">>> unmuzzled ratsbane!\n"
           ">>>> Henceforth, the coding style is to be strictly \n"
           ">>>> enforced, including the use of only upper case.\n"
-          ">>>>> I've noticed a lack of adherence to the coding \n"
+          ">>>>> I've noticed a lack of adherence to \n"
+          ">>>>> the coding \n"
           ">>>>> styles, of late.\n"
           ">>>>>> Any complaints?\n"))
         (output