X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mime-play.el;h=5fcea1732867b3c4dcfb3737fde299e73aba242e;hb=c838e1096fb7683ac3aed4834d1c519b8a3da4c0;hp=846f8cc6f1a904a01fea8d01edb905ff71bb81af;hpb=88207709503e466d0c157bc8122f84f88f9d6111;p=elisp%2Fsemi.git diff --git a/mime-play.el b/mime-play.el index 846f8cc..5fcea17 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.") @@ -152,21 +157,31 @@ specified, play as it. Default MODE is \"play\"." (mime-format-mailcap-command method (cons (cons 'filename name) situation))) - (coding-system-for-read mime-play-messages-coding-system)) + (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) + (when mime-play-delete-file-immediately + (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)) +(defun mime-mailcap-delete-played-files () + (dolist (elem mime-mailcap-method-filename-alist) + (when (file-exists-p (cdr elem)) + (ignore-errors + (delete-file (cdr elem)) + (delete-directory (file-name-directory (cdr elem))))))) + +(add-hook 'kill-emacs-hook 'mime-mailcap-delete-played-files) + (defvar mime-echo-window-is-shared-with-bbdb (module-installed-p 'bbdb) "*If non-nil, mime-echo window is shared with BBDB window.") @@ -317,8 +332,7 @@ SUBTYPE is symbol to indicate subtype of media-type.") It is registered to variable `mime-preview-quitting-method-alist'." (let ((mother mime-mother-buffer) (win-conf mime-preview-original-window-configuration)) - (if (and (boundp 'mime-view-temp-message-buffer) - (buffer-live-p mime-view-temp-message-buffer)) + (if (buffer-live-p mime-view-temp-message-buffer) (kill-buffer mime-view-temp-message-buffer)) (mime-preview-kill-buffer) (set-window-configuration win-conf) @@ -363,16 +377,18 @@ occurs." (make-directory dir)) (set-default-file-modes orig-modes))))) +(defvar mime-view-temp-message-buffer nil) ; buffer local variable + (defun mime-store-message/partial-piece (entity cal) - (let* ((root-dir - (expand-file-name - (concat "m-prts-" (user-login-name)) temporary-file-directory)) - (id (cdr (assoc "id" cal))) - (number (cdr (assoc "number" cal))) - (total (cdr (assoc "total" cal))) - file - (mother (current-buffer)) - (orig-modes (default-file-modes))) + (let ((root-dir + (expand-file-name + (concat "m-prts-" (user-login-name)) temporary-file-directory)) + (id (cdr (assoc "id" cal))) + (number (cdr (assoc "number" cal))) + (total (cdr (assoc "total" cal))) + file + (mother (current-buffer)) + (orig-modes (default-file-modes))) (mime-require-safe-directory root-dir) (or (file-exists-p root-dir) (unwind-protect