)
(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
(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
(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)
)
;;; @ 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
(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