Modify error message for FLIM 1.1.0.
[elisp/semi.git] / mime-play.el
index f5d1499..c64c4d1 100644 (file)
@@ -117,7 +117,8 @@ specified, play as it.  Default MODE is \"play\"."
        )
       (setq ret
            (or (ctree-match-calist mime-acting-situation-examples cal)
-               (ctree-match-calist-partially mime-acting-situation-examples cal)
+               (ctree-match-calist-partially mime-acting-situation-examples
+                                             cal)
                cal))
       (setq ret
            (or (ctree-find-calist mime-acting-condition ret
@@ -135,6 +136,36 @@ specified, play as it.  Default MODE is \"play\"."
                                            (cdr (assq 'method situation)))
                                    situation)))
                                ret)))
+            (setq ret
+                  (sort ret
+                        #'(lambda (a b)
+                            (let ((a-t (car a))
+                                  (b-t (car b))
+                                  (order '((type . 1)
+                                           (subtype . 2)
+                                           (mode . 3)
+                                           (major-mode . 4)))
+                                  a-order b-order)
+                              (if (symbolp a-t)
+                                  (let ((ret (assq a-t order)))
+                                    (if ret
+                                        (setq a-order (cdr ret))
+                                      (setq a-order 5)
+                                      ))
+                                (setq a-order 6)
+                                )
+                              (if (symbolp b-t)
+                                  (let ((ret (assq b-t order)))
+                                    (if ret
+                                        (setq b-order (cdr ret))
+                                      (setq b-order 5)
+                                      ))
+                                (setq b-order 6)
+                                )
+                              (if (= a-order b-order)
+                                  (string< (format "%s" a-t)(format "%s" b-t))
+                                (< a-order b-order))
+                              ))))
             (ctree-set-calist-strictly 'mime-acting-situation-examples ret)
             )
            (t
@@ -145,6 +176,9 @@ specified, play as it.  Default MODE is \"play\"."
                  (fboundp method))
             (funcall method beg end ret)
             )
+           ((stringp method)
+            (mime-activate-mailcap-method beg end ret)
+            )
            ((and (listp method)(stringp (car method)))
             (mime-activate-external-method beg end ret)
             )
@@ -160,6 +194,26 @@ specified, play as it.  Default MODE is \"play\"."
 ;;; @ external decoder
 ;;;
 
+(defun mime-activate-mailcap-method (start end situation)
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char start)
+      (let ((method (cdr (assoc 'method situation)))
+           (name (mime-raw-get-filename situation)))
+       (mime-write-decoded-region (if (re-search-forward "^$" end t)
+                                      (1+ (match-end 0))
+                                    (point-min))
+                                  end name
+                                  (cdr (assq 'encoding situation)))
+       (message "External method is starting...")
+       (let ((command (format method name)))
+         (start-process command mime-echo-buffer-name
+                        shell-file-name shell-command-switch command)
+         )
+       (mime-show-echo-buffer)
+       ))))
+
 (defun mime-activate-external-method (beg end cal)
   (save-excursion
     (save-restriction
@@ -586,7 +640,11 @@ to write."
            (set-buffer buffer)
            (erase-buffer)
            (insert-file-contents file)
-           (eval-current-buffer))
+           (eval-current-buffer)
+           ;; format check
+           (or (eq (car mime-acting-situation-examples) 'type)
+               (setq mime-acting-situation-examples nil))
+           )
        (kill-buffer buffer))))
 
 ;;; mime-play.el ends here