Function: quoted-printable-encode-region
quoted-printable-encode-region is an autoloaded, interactive and
byte-compiled function defined in qp.el.gz.
Signature
(quoted-printable-encode-region FROM TO &optional FOLD CLASS)
Documentation
Quoted-printable encode the region between FROM and TO per RFC 2045.
If FOLD, fold long lines at 76 characters (as required by the RFC).
If CLASS is non-nil, translate the characters not matched by that
regexp class, which is in the form expected by skip-chars-forward.
You should probably avoid non-ASCII characters in this arg.
If mm-use-ultra-safe-encoding is set, fold lines unconditionally and
encode lines starting with "From".
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/mail/qp.el.gz
(defun quoted-printable-encode-region (from to &optional fold class)
"Quoted-printable encode the region between FROM and TO per RFC 2045.
If FOLD, fold long lines at 76 characters (as required by the RFC).
If CLASS is non-nil, translate the characters not matched by that
regexp class, which is in the form expected by `skip-chars-forward'.
You should probably avoid non-ASCII characters in this arg.
If `mm-use-ultra-safe-encoding' is set, fold lines unconditionally and
encode lines starting with \"From\"."
(interactive "r")
(unless class
;; Avoid using 8bit characters. = is \075.
;; Equivalent to "^\000-\007\013\015-\037\200-\377="
(setq class "\010-\012\014\040-\074\076-\177"))
(save-excursion
(goto-char from)
(if (re-search-forward "[^\x0-\x7f\x80-\xff]" to t)
(error "Multibyte character in QP encoding region"))
(save-restriction
(narrow-to-region from to)
;; Encode all the non-ascii and control characters.
(goto-char (point-min))
(while (and (skip-chars-forward class)
(not (eobp)))
(insert
(prog1
(format "=%02X" (get-byte))
(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
(format "=%02X" (get-byte))
(delete-char 1)))))
(let ((ultra
(and (boundp 'mm-use-ultra-safe-encoding)
mm-use-ultra-safe-encoding)))
(when (or fold ultra)
(let ((tab-width 1) ; HTAB is one character.
(case-fold-search nil))
(goto-char (point-min))
(while (not (eobp))
;; In ultra-safe mode, encode "From " at the beginning
;; of a line.
(when ultra
(if (looking-at "From ")
(replace-match "From=20" nil t)
(if (looking-at "-")
(replace-match "=2D" nil t))))
(end-of-line)
;; Fold long lines.
(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))
(forward-line))))))))