;;; @ content decoder
;;;
+;;;###autoload
(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 ((situation (list (cons 'mode (or mode "play")))))
+ (let ((situation
+ (get-text-property (point) 'mime-view-situation)))
+ (or mode
+ (setq mode "play"))
+ (setq situation
+ (if (assq 'mode situation)
+ (put-alist 'mode mode (copy-alist situation))
+ (cons (cons 'mode mode)
+ situation)))
(if ignore-examples
(setq situation
(cons (cons 'ignore-examples ignore-examples)
(cons match example)
))
+;;;###autoload
(defun mime-play-entity (entity &optional situation 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
specified, play as it. Default MODE is \"play\"."
(let (method ret)
+ (in-calist-package 'mime-view)
(setq ret
(mime-delq-null-situation
(ctree-find-calist mime-acting-condition
;; )
(t
(mime-show-echo-buffer "No method are specified for %s\n"
- (mime-entity-type/subtype entity))
+ (mime-type/subtype-string
+ (cdr (assq 'type situation))
+ (cdr (assq 'subtype situation))))
+ (if (y-or-n-p "Do you want to save current entity to disk?")
+ (mime-save-content entity situation))
))
))
(select-window win)
(goto-char (point-max))
(if forms
- (insert (apply (function format) forms))
- )
+ (let ((buffer-read-only nil))
+ (insert (apply (function format) forms))
+ ))
(select-window the-win)
))
(let ((filename
(or (mime-entity-filename entity)
(let ((subj
- (or (mime-read-field 'Content-Description entity)
- (mime-read-field 'Subject entity))))
+ (or (mime-entity-read-field entity 'Content-Description)
+ (mime-entity-read-field entity 'Subject))))
(if (and subj
(or (string-match mime-view-file-name-regexp-1 subj)
(string-match mime-view-file-name-regexp-2 subj)))
)
t)))
(setq rest (cdr rest))))
- (if type
- (mime-play-entity
- entity
- (put-alist 'type type
- (put-alist 'subtype subtype
- (del-alist 'method
- (copy-alist situation))))
- 'mime-detect-content)
- ))
- )
+ (setq situation (del-alist 'method (copy-alist situation)))
+ (mime-play-entity entity
+ (if type
+ (put-alist 'type type
+ (put-alist 'subtype subtype
+ situation))
+ situation)
+ 'mime-detect-content)))
;;; @ mail/news message
(defun mime-preview-quitting-method-for-mime-show-message-mode ()
"Quitting method for mime-view.
It is registered to variable `mime-preview-quitting-method-alist'."
- (let ((mother mime-mother-buffer)
- (win-conf mime-preview-original-window-configuration)
- )
- (kill-buffer mime-raw-buffer)
+ (let ((raw-buffer (mime-entity-buffer
+ (get-text-property (point-min) 'mime-view-entity)))
+ (mother mime-mother-buffer)
+ (win-conf mime-preview-original-window-configuration))
+ (kill-buffer raw-buffer)
(mime-preview-kill-buffer)
(set-window-configuration win-conf)
(pop-to-buffer mother)
(let* ((new-name
(format "%s-%s" (buffer-name) (mime-entity-number entity)))
(mother (current-buffer))
- (children (car (mime-entity-children entity))))
- (set-buffer (get-buffer-create new-name))
- (erase-buffer)
- (mime-insert-entity children)
- (setq mime-message-structure children)
- (setq major-mode 'mime-show-message-mode)
- (mime-view-buffer (current-buffer) nil mother
- nil (if (mime-entity-cooked-p entity) 'cooked))
- ))
+ (children (car (mime-entity-children entity)))
+ (preview-buffer
+ (mime-display-message
+ children new-name mother nil
+ (cdr (assq 'major-mode
+ (get-text-property (point) 'mime-view-situation))))))
+ (or (get-buffer-window preview-buffer)
+ (let ((m-win (get-buffer-window mother)))
+ (if m-win
+ (set-window-buffer m-win preview-buffer)
+ (switch-to-buffer preview-buffer)
+ )))))
;;; @ message/partial
;;;
(defun mime-store-message/partial-piece (entity cal)
- (goto-char (mime-entity-point-min entity))
(let* ((root-dir
(expand-file-name
(concat "m-prts-" (user-login-name)) temporary-file-directory))
(number (cdr (assoc "number" cal)))
(total (cdr (assoc "total" cal)))
file
- (mother mime-preview-buffer)
- )
+ (mother (current-buffer)))
(or (file-exists-p root-dir)
- (make-directory root-dir)
- )
+ (make-directory root-dir))
(setq id (replace-as-filename id))
(setq root-dir (concat root-dir "/" id))
(or (file-exists-p root-dir)
- (make-directory root-dir)
- )
+ (make-directory root-dir))
(setq file (concat root-dir "/FULL"))
(if (file-exists-p file)
(let ((full-buf (get-buffer-create "FULL"))
(pwin (or (get-buffer-window mother)
(get-largest-window)))
- )
+ pbuf)
(save-window-excursion
(set-buffer full-buf)
(erase-buffer)
(as-binary-input-file (insert-file-contents file))
(setq major-mode 'mime-show-message-mode)
(mime-view-buffer (current-buffer) nil mother)
+ (setq pbuf (current-buffer))
)
- (set-window-buffer pwin
- (save-excursion
- (set-buffer full-buf)
- mime-preview-buffer))
+ (set-window-buffer pwin pbuf)
(select-window pwin)
)
(setq file (concat root-dir "/" number))
(kill-buffer (current-buffer))
)))
)))
- (if (and total (> total 0))
+ (if (and total (> total 0)
+ (>= (length (directory-files root-dir nil "^[0-9]+$" t))
+ total))
(catch 'tag
(save-excursion
(set-buffer (get-buffer-create mime-temp-buffer-name))
(and (file-exists-p file)
(delete-file file)
))
- (save-window-excursion
- (setq major-mode 'mime-show-message-mode)
- (mime-view-buffer (current-buffer) nil mother)
- )
(let ((pwin (or (get-buffer-window mother)
(get-largest-window)))
- (pbuf (save-excursion
- (set-buffer full-buf)
- mime-preview-buffer)))
+ (pbuf (mime-display-message
+ (mime-open-entity 'buffer (current-buffer))
+ nil mother nil 'mime-show-message-mode)))
(set-window-buffer pwin pbuf)
(select-window pwin)
)))))