(error (defvar bbdb-buffer-name nil)))
)
+(defcustom mime-save-directory "~/"
+ "*Name of the directory where MIME entity will be saved in.
+If t, it means current directory."
+ :group 'mime-view
+ :type '(choice (const :tag "Current directory" t)
+ (directory)))
+
(defvar mime-acting-situation-example-list nil)
(defvar mime-acting-situation-example-list-max-size 16)
(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)
;; )
(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))
))
))
;;;
(defun mime-save-content (entity situation)
- (let* ((name (mime-entity-safe-filename entity))
- (filename (if (and name (not (string-equal name "")))
- (expand-file-name name
- (save-window-excursion
- (call-interactively
- (function
- (lambda (dir)
- (interactive "DDirectory: ")
- dir)))))
- (save-window-excursion
- (call-interactively
- (function
- (lambda (file)
- (interactive "FFilename: ")
- (expand-file-name file)))))))
- )
+ (let ((name (or (mime-entity-safe-filename entity)
+ (format "%s" (mime-entity-media-type entity))))
+ (dir (if (eq t mime-save-directory)
+ default-directory
+ mime-save-directory))
+ filename)
+ (setq filename (read-file-name
+ (concat "File name: (default "
+ (file-name-nondirectory name) ") ")
+ dir
+ (concat (file-name-as-directory dir)
+ (file-name-nondirectory name))))
+ (if (file-directory-p filename)
+ (setq filename (concat (file-name-as-directory filename)
+ (file-name-nondirectory name))))
(if (file-exists-p filename)
(or (yes-or-no-p (format "File %s exists. Save anyway? " filename))
(error "")))
- (mime-write-entity-content entity filename)
+ (mime-write-entity-content entity (expand-file-name filename))
))
)
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-view-message/rfc822 (entity situation)
(let* ((new-name
(format "%s-%s" (buffer-name) (mime-entity-number entity)))
- (new-pbuf (get-buffer-create new-name))
(mother (current-buffer))
- (children (car (mime-entity-children entity))))
- (with-current-buffer new-pbuf
- (erase-buffer))
- (mime-display-entity
- children nil
- (list (assq 'major-mode
- (get-text-property (point)
- 'mime-view-situation)))
- new-pbuf)))
+ (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
(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)
)))))