X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mime-play.el;h=32283ad380a2e06a19af2217f9065854ff30bd68;hb=2264c00591a7a0c44419c2f7228840dd7765bb27;hp=a96934e988d4568bc552d1865760e917d8944cac;hpb=4af0c3eecbac8146059f8d266c9b748599b1f660;p=elisp%2Fsemi.git diff --git a/mime-play.el b/mime-play.el index a96934e..32283ad 100644 --- a/mime-play.el +++ b/mime-play.el @@ -43,6 +43,11 @@ If t, it means current directory." :type '(choice (const :tag "Current directory" t) (directory))) +(defcustom mime-play-delete-file-immediately t + "If non-nil, delete played file immediately." + :group 'mime-view + :type 'boolean) + (defvar mime-play-find-every-situations t "*Find every available situations if non-nil.") @@ -151,22 +156,27 @@ specified, play as it. Default MODE is \"play\"." (let ((command (mime-format-mailcap-command method - (cons (cons 'filename name) situation)))) - (binary-to-text-funcall - mime-play-messages-coding-system - #'start-process command mime-echo-buffer-name + (cons (cons 'filename name) situation))) + (coding-system-for-read mime-play-messages-coding-system)) + (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)))) - (when (file-exists-p file) - (ignore-errors - (delete-file file) - (delete-directory (file-name-directory file))))) - (remove-alist 'mime-mailcap-method-filename-alist process) - (message "%s %s" process event)) + (when mime-play-delete-file-immediately + (let ((file (cdr (assq process mime-mailcap-method-filename-alist)))) + (if (file-exists-p file) + (delete-file file))) + (remove-alist 'mime-mailcap-method-filename-alist process)) + (message (format "%s %s" process event))) + +(defun mime-mailcap-delete-played-files () + (dolist (elem mime-mailcap-method-filename-alist) + (when (file-exists-p (cdr elem)) + (delete-file (cdr elem))))) + +(add-hook 'kill-emacs-hook 'mime-mailcap-delete-played-files) (defvar mime-echo-window-is-shared-with-bbdb (module-installed-p 'bbdb)