From d6062f4fcbdc3560b978e4667e6765f73d8b0585 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Tue, 5 Oct 2010 02:05:46 +0000 Subject: [PATCH] mm-decode.el (mm-shr): Decode contents by charset. --- lisp/ChangeLog | 7 +++++++ lisp/lpath.el | 18 ++++++++++-------- lisp/mm-decode.el | 15 ++++++++++++++- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 715c7380e..66f4747bf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2010-10-05 Katsumi Yamaoka + + * lpath.el: Fbind libxml-parse-html-region and shr-insert-document for + Emacs 22 and XEmacs. + + * mm-decode.el (mm-shr): Decode contents by charset. + 2010-10-04 Lars Magne Ingebrigtsen * shr.el (shr-tag-blockquote): Ensure paragraph after quote, too. diff --git a/lisp/lpath.el b/lisp/lpath.el index dc2d6cc5d..879806ff4 100644 --- a/lisp/lpath.el +++ b/lisp/lpath.el @@ -31,9 +31,10 @@ Info-index-next Info-menu bbdb-complete-name bookmark-default-handler bookmark-get-bookmark-record bookmark-make-record-default bookmark-prop-get display-time-event-handler epg-check-configuration - find-coding-system frame-device recenter-top-bottom - rmail-swap-buffers-maybe w3-do-setup w3-parse-buffer w3-prepare-buffer - w3-region w3m-detect-meta-charset w3m-region)) + find-coding-system frame-device libxml-parse-html-region + recenter-top-bottom rmail-swap-buffers-maybe shr-insert-document + w3-do-setup w3-parse-buffer w3-prepare-buffer w3-region + w3m-detect-meta-charset w3m-region)) (maybe-bind '(w3m-link-map)))) @@ -61,11 +62,12 @@ event-end event-start find-coding-systems-for-charsets find-coding-systems-region find-coding-systems-string find-image float-time help-buffer image-size image-type-available-p insert-image - mail-abbrevs-setup make-mode-line-mouse-map make-network-process - mouse-minibuffer-check mouse-movement-p mouse-scroll-subr overlay-lists - pgg-display-output-buffer posn-point posn-window put-image read-event - recenter-top-bottom rmail-msg-restore-non-pruned-header - rmail-swap-buffers-maybe select-safe-coding-system sort-coding-systems + libxml-parse-html-region mail-abbrevs-setup make-mode-line-mouse-map + make-network-process mouse-minibuffer-check mouse-movement-p + mouse-scroll-subr overlay-lists pgg-display-output-buffer posn-point + posn-window put-image read-event recenter-top-bottom + rmail-msg-restore-non-pruned-header rmail-swap-buffers-maybe + select-safe-coding-system shr-insert-document sort-coding-systems track-mouse ucs-to-char url-generic-parse-url url-insert-file-contents vcard-pretty-print w3-parse-buffer w3m-detect-meta-charset w3m-region window-edges)) diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index ab96e349b..edbd252c3 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -1679,14 +1679,27 @@ If RECURSIVE, search recursively." (and (eq (mm-body-7-or-8) '7bit) (not (mm-long-lines-p 76)))))) +(declare-function libxml-parse-html-region "xml.c" + (start end &optional base-url)) +(declare-function shr-insert-document "shr" (dom)) + (defun mm-shr (handle) - (let ((article-buffer (current-buffer))) + (let ((article-buffer (current-buffer)) + charset) (unless handle (setq handle (mm-dissect-buffer t))) + (setq charset (mail-content-type-get (mm-handle-type handle) 'charset)) (save-restriction (narrow-to-region (point) (point)) (shr-insert-document (mm-with-part handle + (when (and charset + (setq charset (mm-charset-to-coding-system charset)) + (not (eq charset 'ascii))) + (insert (prog1 + (mm-decode-coding-string (buffer-string) charset) + (erase-buffer) + (mm-enable-multibyte)))) (libxml-parse-html-region (point-min) (point-max))))))) (provide 'mm-decode) -- 2.34.1