;;; @ content decoder
;;;
-(defvar mime-preview-after-decoded-position nil)
-
(defun mime-preview-play-current-entity (&optional ignore-examples mode)
"Play current entity.
It decodes current entity to call internal or external method. The
(interactive "P")
(let ((entity (get-text-property (point) 'mime-view-entity)))
(if entity
- (let ((the-buf (current-buffer))
- (raw-buffer (mime-entity-buffer entity)))
- (setq mime-preview-after-decoded-position (point))
- (set-buffer raw-buffer)
- (mime-raw-play-entity entity (or mode "play") nil ignore-examples)
- (when (eq (current-buffer) raw-buffer)
- (set-buffer the-buf)
- (goto-char mime-preview-after-decoded-position)
- )))))
+ (mime-play-entity entity (or mode "play") nil ignore-examples)
+ )))
(defun mime-sort-situation (situation)
(sort situation
(cons match example)
))
-(defun mime-raw-play-entity (entity &optional mode situation ignore-examples
- ignored-method)
+(defun mime-play-entity (entity &optional mode situation ignore-examples
+ ignored-method)
"Play entity specified by ENTITY.
It decodes the entity to call internal or external method. The method
is selected from variable `mime-acting-condition'. If MODE is
(defvar mime-mailcap-method-filename-alist nil)
(defun mime-activate-mailcap-method (entity situation)
- (save-excursion
- (save-restriction
- (let ((start (mime-entity-point-min entity))
- (end (mime-entity-point-max entity)))
- (narrow-to-region start end)
- (goto-char start)
- (let ((method (cdr (assoc 'method situation)))
- (name (mime-entity-safe-filename entity)))
- (setq name
- (if (and name (not (string= name "")))
- (expand-file-name name temporary-file-directory)
- (make-temp-name
- (expand-file-name "EMI" temporary-file-directory))
- ))
- (mime-write-entity-content entity name)
- (message "External method is starting...")
- (let ((process
- (let ((command
- (mailcap-format-command
- method
- (cons (cons 'filename name) situation))))
- (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)
- )
- )))))
+ (let ((method (cdr (assoc 'method situation)))
+ (name (mime-entity-safe-filename entity)))
+ (setq name
+ (if (and name (not (string= name "")))
+ (expand-file-name name temporary-file-directory)
+ (make-temp-name
+ (expand-file-name "EMI" temporary-file-directory))
+ ))
+ (mime-write-entity-content entity name)
+ (message "External method is starting...")
+ (let ((process
+ (let ((command
+ (mailcap-format-command
+ method
+ (cons (cons 'filename name) situation))))
+ (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)
+ )
+ ))
(defun mime-mailcap-method-sentinel (process event)
(let ((file (cdr (assq process mime-mailcap-method-filename-alist))))
(condition-case nil
(setq win (get-buffer-window bbdb-buffer-name))
(error nil)))
- (select-window (get-buffer-window mime-preview-buffer))
+ (select-window (get-buffer-window (or mime-preview-buffer
+ (current-buffer))))
(setq win (split-window-vertically
(- (window-height)
(if (functionp mime-echo-window-height)
t)))
(setq rest (cdr rest))))
(if type
- (mime-raw-play-entity
+ (mime-play-entity
entity nil
(put-alist 'type type
(put-alist 'subtype subtype