Patch by Ed L. Cashin to make gnus-move-split-methods move to
[gnus] / lisp / qp.el
index ea2a818..79e4362 100644 (file)
@@ -94,45 +94,48 @@ encode lines starting with \"From\"."
   (save-excursion
     (save-restriction
       (narrow-to-region from to)
-      ;;      (mm-encode-body)
-      ;; Encode all the non-ascii and control characters.
-      (goto-char (point-min))
-      (while (and (skip-chars-forward
-                  (or class "^\000-\007\013\015-\037\200-\377="))
-                 (not (eobp)))
-       (insert
-        (prog1
-            (upcase (format "=%02x" (char-after)))
-          (delete-char 1))))
-      ;; Encode white space at the end of lines.
-      (goto-char (point-min))
-      (while (re-search-forward "[ \t]+$" nil t)
-       (goto-char (match-beginning 0))
-       (while (not (eolp))
+      (mm-with-unibyte-current-buffer-mule4
+       ;;      (mm-encode-body)
+       ;; Encode all the non-ascii and control characters.
+       (goto-char (point-min))
+       (while (and (skip-chars-forward
+                    ;; Avoid using 8bit characters. = is \075.
+                    ;; Equivalent to "^\000-\007\013\015-\037\200-\377="
+                    (or class "\010-\012\014\040-\074\076-\177"))
+                   (not (eobp)))
          (insert
           (prog1
               (upcase (format "=%02x" (char-after)))
-            (delete-char 1)))))
-      (when (or fold mm-use-ultra-safe-encoding)
-       ;; Fold long lines.
-       (let ((tab-width 1)) ;; HTAB is one character.
-         (goto-char (point-min))
-         (while (not (eobp))
-           ;; In ultra-safe mode, encode "From " at the beginning of a
-           ;; line.
-           (when mm-use-ultra-safe-encoding
-             (beginning-of-line)
-             (when (looking-at "From ")
-               (replace-match "From=20" nil t)))
-           (end-of-line)
-           (while (> (current-column) 76) ;; tab-width must be 1.
-             (beginning-of-line)
-             (forward-char 75);; 75 chars plus an "="
-             (search-backward "=" (- (point) 2) t)
-             (insert "=\n")
-             (end-of-line))
-           (unless (eobp)
-             (forward-line))))))))
+            (delete-char 1))))
+       ;; Encode white space at the end of lines.
+       (goto-char (point-min))
+       (while (re-search-forward "[ \t]+$" nil t)
+         (goto-char (match-beginning 0))
+         (while (not (eolp))
+           (insert
+            (prog1
+                (upcase (format "=%02x" (char-after)))
+              (delete-char 1)))))
+       (when (or fold mm-use-ultra-safe-encoding)
+         ;; Fold long lines.
+         (let ((tab-width 1));; HTAB is one character.
+           (goto-char (point-min))
+           (while (not (eobp))
+             ;; In ultra-safe mode, encode "From " at the beginning of a
+             ;; line.
+             (when mm-use-ultra-safe-encoding
+               (beginning-of-line)
+               (when (looking-at "From ")
+                 (replace-match "From=20" nil t)))
+             (end-of-line)
+             (while (> (current-column) 76);; tab-width must be 1.
+               (beginning-of-line)
+               (forward-char 75);; 75 chars plus an "="
+               (search-backward "=" (- (point) 2) t)
+               (insert "=\n")
+               (end-of-line))
+             (unless (eobp)
+               (forward-line)))))))))
 
 (defun quoted-printable-encode-string (string)
   "QP-encode STRING and return the results."