From 7cfa5cecf7c4102ca514ae3a61a1815d40961d00 Mon Sep 17 00:00:00 2001 From: Katsumi Yamaoka Date: Mon, 12 Aug 2013 05:59:47 +0000 Subject: [PATCH] lisp/gnus/mm-decode.el (mm-display-external): Run a timer for the temp files deletion after a viwer exits; add a deletion timer for the needsterm case, too --- lisp/gnus/ChangeLog | 4 ++++ lisp/gnus/mm-decode.el | 43 +++++++++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 6b7be997ea9..1d8c6e4a732 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,5 +1,9 @@ 2013-08-12 Katsumi Yamaoka + * mm-decode.el (mm-display-external): Run a timer for the temp files + deletion after a viwer exits; add a deletion timer for the needsterm + case, too. + * mm-decode.el (mm-display-external): Try to delete temporary files by using a 1-min. timer. diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 40c1d849f3c..dbbf0befe60 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -954,10 +954,20 @@ external if displayed external." method file (mm-handle-type handle)))) (unwind-protect (if window-system - (start-process "*display*" nil - mm-external-terminal-program - "-e" shell-file-name - shell-command-switch command) + (set-process-sentinel + (start-process "*display*" nil + mm-external-terminal-program + "-e" shell-file-name + shell-command-switch command) + `(lambda (process state) + (if (eq 'exit (process-status process)) + (run-at-time + 60.0 nil + (lambda () + (ignore-errors (delete-file ,file)) + (ignore-errors (delete-directory + ,(file-name-directory + file)))))))) (require 'term) (require 'gnus-win) (set-buffer @@ -971,11 +981,15 @@ external if displayed external." (set-process-sentinel (get-buffer-process buffer) `(lambda (process state) - (if (eq 'exit (process-status process)) - (gnus-configure-windows - ',gnus-current-window-configuration)))) + (when (eq 'exit (process-status process)) + (ignore-errors (delete-file ,file)) + (ignore-errors + (delete-directory ,(file-name-directory file))) + (gnus-configure-windows + ',gnus-current-window-configuration)))) (gnus-configure-windows 'display-term)) - (mm-handle-set-external-undisplayer handle (cons file buffer))) + (mm-handle-set-external-undisplayer handle (cons file buffer)) + (add-to-list 'mm-temp-files-to-be-deleted file t)) (message "Displaying %s..." command)) 'external) (copiousoutput @@ -1021,15 +1035,14 @@ external if displayed external." (buffer buffer) (command command) (handle handle)) - (run-at-time - 60.0 nil - (lambda () - (ignore-errors - (delete-file file)) - (ignore-errors - (delete-directory (file-name-directory file))))) (lambda (process state) (when (eq (process-status process) 'exit) + (run-at-time + 60.0 nil + (lambda () + (ignore-errors (delete-file file)) + (ignore-errors (delete-directory + (file-name-directory file))))) (when (buffer-live-p outbuf) (with-current-buffer outbuf (let ((buffer-read-only nil) -- 2.39.2