X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mmbuffer.el;h=f16f0d1be4cb2ccd610b9f2e97043cee47a4019f;hb=733c8dc5119f2b5df1fb571d0882c5f4350f21d5;hp=9bd59e3376a97542ebef7029d9d242bf70ee45ce;hpb=d172c5b4e65095273156cefd01ca8f7f0b31bb0f;p=elisp%2Fflim.git diff --git a/mmbuffer.el b/mmbuffer.el index 9bd59e3..f16f0d1 100644 --- a/mmbuffer.el +++ b/mmbuffer.el @@ -113,9 +113,9 @@ (mm-define-method write-entity ((entity buffer) filename) (save-excursion (set-buffer (mime-entity-buffer-internal entity)) - (write-region-as-binary (mime-entity-header-start-internal entity) - (mime-entity-body-end-internal entity) - filename) + (write-region-as-raw-text-CRLF (mime-entity-header-start-internal entity) + (mime-entity-body-end-internal entity) + filename) )) (mm-define-method write-entity-body ((entity buffer) filename) @@ -153,7 +153,7 @@ (let ((the-buf (current-buffer)) (src-buf (mime-entity-buffer-internal entity)) (h-end (mime-entity-header-end-internal entity)) - beg p end field-name len field) + beg p end field-name len field-body decoded) (save-excursion (set-buffer src-buf) (goto-char (mime-entity-header-start-internal entity)) @@ -167,20 +167,26 @@ end (std11-field-end)) (when (mime-visible-field-p field-name visible-fields invisible-fields) - (setq field (intern (capitalize field-name))) (save-excursion (set-buffer the-buf) + (setq field-body (ew-lf-crlf-to-crlf + (save-excursion + (set-buffer src-buf) + (buffer-substring p end)))) + (setq decoded (ew-decode-field field-name field-body)) + (unless (equal field-body decoded) + (setq decoded (ew-crlf-refold + decoded + (1+ (string-width field-name)) + fill-column))) + (setq beg (point)) (insert field-name) (insert ":") - (insert (ew-crlf-to-lf - (ew-decode-field - field-name - (ew-lf-crlf-to-crlf - (save-excursion - (set-buffer src-buf) - (buffer-substring p end) - ))))) + (insert (ew-crlf-to-lf decoded)) (insert "\n") + (add-text-properties beg (point) + (list 'original-field-name field-name + 'original-field-body field-body)) ))))))))