* mime-view.el (mime-view-insert-fontified-text-content): Don't use
[elisp/semi.git] / mime-play.el
index ff06bbf..a476a05 100644 (file)
@@ -45,6 +45,9 @@ If t, it means current directory."
 (defvar mime-play-find-every-situations t
   "*Find every available situations if non-nil.")
 
+(defvar mime-play-messages-coding-system nil
+  "Coding system to be used for external MIME playback method.")
+
 
 ;;; @ content decoder
 ;;;
@@ -87,21 +90,19 @@ specified, play as it.  Default MODE is \"play\"."
                                mime-acting-situation-example-list
                                'method ignored-method
                                mime-play-find-every-situations))
-       method)
+       method menu)
     (setq mime-acting-situation-example-list (cdr ret)
          ret (car ret))
     (cond ((cdr ret)
-          (setq ret (mime-popup-menu-select
-                     (cons 
-                      "Methods"
-                      (mapcar
-                       (lambda (situation)
-                         (vector
-                          (format "%s"
-                                  (cdr (assq 'method situation)))
-                          situation t))
-                       ret))))
-          (setq ret (mime-sort-situation ret))
+          (while ret
+            (or (vassoc (setq method
+                              (format "%s"
+                                      (cdr (assq 'method (pop ret)))))
+                        menu)
+                (push (vector method situation t) menu)))
+          (setq ret (mime-sort-situation
+                     (mime-menu-select "Play entity with: "
+                                       (cons "Methods" menu))))
           (add-to-list 'mime-acting-situation-example-list (cons ret 0)))
          (t
           (setq ret (car ret))))
@@ -143,8 +144,10 @@ specified, play as it.  Default MODE is \"play\"."
                  (mime-format-mailcap-command
                   method
                   (cons (cons 'filename name) situation))))
-            (start-process command mime-echo-buffer-name
-                           shell-file-name shell-command-switch command))))
+            (binary-to-text-funcall
+             mime-play-messages-coding-system
+             #'start-process command mime-echo-buffer-name
+             shell-file-name shell-command-switch command))))
       (set-alist 'mime-mailcap-method-filename-alist process name)
       (set-process-sentinel process 'mime-mailcap-method-sentinel))))