mm-decode.el (mm-shr): Decode contents by charset.
authorKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 5 Oct 2010 02:05:46 +0000 (02:05 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Tue, 5 Oct 2010 02:05:46 +0000 (02:05 +0000)
lisp/ChangeLog
lisp/lpath.el
lisp/mm-decode.el

index 715c738..66f4747 100644 (file)
@@ -1,3 +1,10 @@
+2010-10-05  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * 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  <larsi@gnus.org>
 
        * shr.el (shr-tag-blockquote): Ensure paragraph after quote, too.
index dc2d6cc..879806f 100644 (file)
        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))))
 
      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))
index ab96e34..edbd252 100644 (file)
@@ -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)