Synch to No Gnus 200506270911.
[elisp/gnus.git-] / lisp / flow-fill.el
index f72bf5b..b8980e9 100644 (file)
@@ -1,4 +1,4 @@
-;;; flow-fill.el --- interprete RFC2646 "flowed" text
+;;; flow-fill.el --- interpret RFC2646 "flowed" text
 
 ;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
 
@@ -56,6 +56,8 @@
 (defcustom fill-flowed-display-column 'fill-column
   "Column beyond which format=flowed lines are wrapped, when displayed.
 This can be a Lisp expression or an integer."
+  :version "22.1"
+  :group 'mime-display
   :type '(choice (const :tag "Standard `fill-column'" fill-column)
                 (const :tag "Fit Window" (- (window-width) 5))
                 (sexp)
@@ -65,22 +67,13 @@ This can be a Lisp expression or an integer."
   "Column beyond which format=flowed lines are wrapped, in outgoing messages.
 This can be a Lisp expression or an integer.
 RFC 2646 suggests 66 characters for readability."
+  :version "22.1"
+  :group 'mime-display
   :type '(choice (const :tag "Standard fill-column" fill-column)
                 (const :tag "RFC 2646 default (66)" 66)
                 (sexp)
                 (integer)))
 
-(eval-and-compile
-  (defalias 'fill-flowed-point-at-bol
-    (if (fboundp 'point-at-bol)
-       'point-at-bol
-      'line-beginning-position))
-
-  (defalias 'fill-flowed-point-at-eol
-    (if (fboundp 'point-at-eol)
-       'point-at-eol
-      'line-end-position)))
-
 ;;;###autoload
 (defun fill-flowed-encode (&optional buffer)
   (with-current-buffer (or buffer (current-buffer))
@@ -108,10 +101,15 @@ RFC 2646 suggests 66 characters for readability."
   (save-excursion
     (set-buffer (or (current-buffer) buffer))
     (goto-char (point-min))
+    ;; Remove space stuffing.
+    (while (re-search-forward "^ " nil t)
+      (delete-char -1)
+      (forward-line 1))
+    (goto-char (point-min))
     (while (re-search-forward " $" nil t)
       (when (save-excursion
              (beginning-of-line)
-             (looking-at "^\\(>*\\)\\( ?\\)"))
+             (looking-at "^\\(>+\\)\\( ?\\)"))
        (let ((quote (match-string 1))
              sig)
          (if (string= quote "")
@@ -142,8 +140,8 @@ RFC 2646 suggests 66 characters for readability."
                (let ((fill-prefix (when quote (concat quote " ")))
                      (fill-column (eval fill-flowed-display-column))
                      filladapt-mode)
-                 (fill-region (fill-flowed-point-at-bol)
-                              (min (1+ (fill-flowed-point-at-eol))
+                 (fill-region (point-at-bol)
+                              (min (1+ (point-at-eol))
                                    (point-max))
                               'left 'nosqueeze))
              (error
@@ -159,19 +157,19 @@ RFC 2646 suggests 66 characters for readability."
   '(
     ;; The syntax of each list element is:
     ;; (INPUT . EXPECTED-OUTPUT)
-    ("> Thou villainous ill-breeding spongy dizzy-eyed 
-> reeky elf-skinned pigeon-egg! 
->> Thou artless swag-bellied milk-livered 
+    ("> Thou villainous ill-breeding spongy dizzy-eyed
+> reeky elf-skinned pigeon-egg!
+>> Thou artless swag-bellied milk-livered
 >> dismal-dreaming idle-headed scut!
->>> Thou errant folly-fallen spleeny reeling-ripe 
+>>> Thou errant folly-fallen spleeny reeling-ripe
 >>> unmuzzled ratsbane!
->>>> Henceforth, the coding style is to be strictly 
+>>>> Henceforth, the coding style is to be strictly
 >>>> enforced, including the use of only upper case.
->>>>> I've noticed a lack of adherence to the coding 
+>>>>> I've noticed a lack of adherence to the coding
 >>>>> styles, of late.
 >>>>>> Any complaints?
 " . "> Thou villainous ill-breeding spongy dizzy-eyed reeky elf-skinned
-> pigeon-egg! 
+> pigeon-egg!
 >> Thou artless swag-bellied milk-livered dismal-dreaming idle-headed
 >> scut!
 >>> Thou errant folly-fallen spleeny reeling-ripe unmuzzled ratsbane!
@@ -182,8 +180,8 @@ RFC 2646 suggests 66 characters for readability."
 ")
 ;    ("
 ;> foo
-;> 
-;> 
+;>
+;>
 ;> bar
 ;" . "
 ;> foo bar