Synch to No Gnus 200601240158.
authoryamaoka <yamaoka>
Tue, 24 Jan 2006 01:58:17 +0000 (01:58 +0000)
committeryamaoka <yamaoka>
Tue, 24 Jan 2006 01:58:17 +0000 (01:58 +0000)
lisp/ChangeLog
lisp/gnus-art.el
lisp/mm-view.el

index b54ef7f..1e9b448 100644 (file)
@@ -1,3 +1,13 @@
+2006-01-24  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * mm-view.el (mm-w3m-standalone-supports-m17n-p): New variable.
+       (mm-w3m-standalone-supports-m17n-p): New function.
+       (mm-inline-text-html-render-with-w3m-standalone): Use it to alter
+       w3m usage.
+
+       * gnus-art.el (gnus-article-wash-html-with-w3m-standalone): Use
+       mm-w3m-standalone-supports-m17n-p to alter w3m usage.
+
 2006-01-23  Reiner Steib  <Reiner.Steib@gmx.de>
 
        * message.el (message-tool-bar-zap-list): Use
index 568375c..43d9335 100644 (file)
@@ -2708,15 +2708,18 @@ charset defined in `gnus-summary-show-article-charset-alist' is used."
 
 (defun gnus-article-wash-html-with-w3m-standalone ()
   "Wash the current buffer with w3m."
-  (unless (mm-coding-system-p charset)
-    ;; The default.
-    (setq charset 'iso-8859-1))
-  (let ((coding-system-for-write charset)
-       (coding-system-for-read charset))
-    (call-process-region
-     (point-min) (point-max)
-     "w3m" t t nil "-dump" "-T" "text/html"
-     "-I" (symbol-name charset) "-O" (symbol-name charset))))
+  (if (mm-w3m-standalone-supports-m17n-p)
+      (progn
+       (unless (mm-coding-system-p charset) ;; Bound by `article-wash-html'.
+         ;; The default.
+         (setq charset 'iso-8859-1))
+       (let ((coding-system-for-write charset)
+             (coding-system-for-read charset))
+         (call-process-region
+          (point-min) (point-max)
+          "w3m" t t nil "-dump" "-T" "text/html"
+          "-I" (symbol-name charset) "-O" (symbol-name charset))))
+    (mm-inline-wash-with-stdin nil "w3m" "-dump" "-T" "text/html")))
 
 (defun article-hide-list-identifiers ()
   "Remove list identifies from the Subject header.
index 5d12f24..319acf7 100644 (file)
              (delete-region ,(point-min-marker)
                             ,(point-max-marker)))))))))
 
+(defvar mm-w3m-standalone-supports-m17n-p (if (featurep 'mule) 'undecided)
+  "*T means the w3m command supports the m17n feature.")
+
+(defun mm-w3m-standalone-supports-m17n-p ()
+  "Say whether the w3m command supports the m17n feature."
+  (cond ((eq mm-w3m-standalone-supports-m17n-p t) t)
+       ((eq mm-w3m-standalone-supports-m17n-p nil) nil)
+       ((not (featurep 'mule)) (setq mm-w3m-standalone-supports-m17n-p nil))
+       ((condition-case nil
+            (let ((coding-system-for-write 'iso-2022-jp)
+                  (coding-system-for-read 'iso-2022-jp)
+                  (str (mm-decode-coding-string "\
+\e$B#D#o#e#s!!#w#3#m!!#s#u#p#p#o#r#t#s!!#m#1#7#n!)\e(B" 'iso-2022-jp)))
+              (mm-with-multibyte-buffer
+                (insert str)
+                (call-process-region
+                 (point-min) (point-max) "w3m" t t nil "-dump"
+                 "-T" "text/html" "-I" "iso-2022-jp" "-O" "iso-2022-jp")
+                (goto-char (point-min))
+                (search-forward str nil t)))
+          (error nil))
+        (setq mm-w3m-standalone-supports-m17n-p t))
+       (t
+        ;;(message "You had better upgrade your w3m command")
+        (setq mm-w3m-standalone-supports-m17n-p nil))))
+
 (defun mm-inline-text-html-render-with-w3m-standalone (handle)
   "Render a text/html part using w3m."
-  (let ((source (mm-get-part handle))
-       (charset (mail-content-type-get (mm-handle-type handle) 'charset))
-       cs)
-    (unless (and charset
-                (setq cs (mm-charset-to-coding-system charset))
-                (not (eq cs 'ascii)))
-      ;; The default.
-      (setq charset "iso-8859-1"
-           cs 'iso-8859-1))
-    (mm-insert-inline
-     handle
-     (mm-with-unibyte-buffer
-       (insert source)
-       (mm-enable-multibyte)
-       (let ((coding-system-for-write 'binary)
-            (coding-system-for-read cs))
-        (call-process-region
-         (point-min) (point-max)
-         "w3m" t t nil "-dump" "-T" "text/html"
-         "-I" charset "-O" charset))
-       (buffer-string)))))
+  (if (mm-w3m-standalone-supports-m17n-p)
+      (let ((source (mm-get-part handle))
+           (charset (mail-content-type-get (mm-handle-type handle) 'charset))
+           cs)
+       (unless (and charset
+                    (setq cs (mm-charset-to-coding-system charset))
+                    (not (eq cs 'ascii)))
+         ;; The default.
+         (setq charset "iso-8859-1"
+               cs 'iso-8859-1))
+       (mm-insert-inline
+        handle
+        (mm-with-unibyte-buffer
+          (insert source)
+          (mm-enable-multibyte)
+          (let ((coding-system-for-write 'binary)
+                (coding-system-for-read cs))
+            (call-process-region
+             (point-min) (point-max)
+             "w3m" t t nil "-dump" "-T" "text/html"
+             "-I" charset "-O" charset))
+          (buffer-string))))
+    (mm-inline-render-with-stdin handle nil "w3m" "-dump" "-T" "text/html")))
 
 (defun mm-links-remove-leading-blank ()
   ;; Delete the annoying three spaces preceding each line of links