(gnus-article-browse-html-temp-list): Rename from
authorReiner Steib <Reiner.Steib@gmx.de>
Thu, 2 Mar 2006 21:04:25 +0000 (21:04 +0000)
committerReiner Steib <Reiner.Steib@gmx.de>
Thu, 2 Mar 2006 21:04:25 +0000 (21:04 +0000)
gnus-article-browse-html-temp.
(gnus-article-browse-delete-temp): Make it customizable.  Add
`file'.  Adjust doc string.
(gnus-article-browse-delete-temp-files): Add argument.  Allow
query for each file.  Adjust doc string.
(gnus-article-browse-html-parts): Add
`gnus-article-browse-delete-temp-files' to
`gnus-summary-prepare-exit-hook' and `gnus-exit-gnus-hook'.

lisp/ChangeLog
lisp/gnus-art.el

index c5e4d1f..414e727 100644 (file)
@@ -1,3 +1,15 @@
+2006-03-02  Reiner Steib  <Reiner.Steib@gmx.de>
+
+       * gnus-art.el (gnus-article-browse-html-temp-list): Rename from
+       gnus-article-browse-html-temp.
+       (gnus-article-browse-delete-temp): Make it customizable.  Add
+       `file'.  Adjust doc string.
+       (gnus-article-browse-delete-temp-files): Add argument.  Allow
+       query for each file.  Adjust doc string.
+       (gnus-article-browse-html-parts): Add
+       `gnus-article-browse-delete-temp-files' to
+       `gnus-summary-prepare-exit-hook' and `gnus-exit-gnus-hook'.
+
 2006-03-02  Hynek Schlawack  <hynek@ularx.de>
 
        * gnus-art.el (gnus-article-browse-html-temp)
index 21d8873..cbfd17c 100644 (file)
@@ -2606,26 +2606,44 @@ charset defined in `gnus-summary-show-article-charset-alist' is used."
           "-I" (symbol-name charset) "-O" (symbol-name charset))))
     (mm-inline-wash-with-stdin nil "w3m" "-dump" "-T" "text/html")))
 
-(defvar gnus-article-browse-html-temp nil
-  "Temporary files created by `gnus-article-browse-html-parts'")
-
-(defvar gnus-article-browse-delete-temp 'ask
-  "Defines how to deal with temporary files created by
-`gnus-article-browse-html-parts':
-Possible values: t: Delete
-                 ask: Ask before delete
-                 nil: Don't delete")
+(defvar gnus-article-browse-html-temp-list nil
+  "List of temporary files created by `gnus-article-browse-html-parts'.
+Internal variable.")
+
+(defcustom gnus-article-browse-delete-temp 'ask
+  "What to do with temporary files from `gnus-article-browse-html-parts'.
+If nil, don't delete temporary files.  If it is t, delete them on
+exit from the summary buffer.  If it is the symbol `file', query
+on each file, if it is `ask' ask once when exiting from the
+summary buffer."
+  :group 'gnus-article
+  :type '(choice (const :tag "Don't delete" nil)
+                (const :tag "Don't ask" t)
+                (const :tag "Ask" ask)
+                (const :tag "Ask for each file" file)))
 
-(defun gnus-article-browse-delete-temp-files ()
+(defun gnus-article-browse-delete-temp-files (&optional how)
   "Delete temp-files created by `gnus-article-browse-html-parts'."
-  (when (and gnus-article-browse-html-temp
-            (or (and (equal gnus-article-browse-delete-temp 'ask)
-                     (y-or-n-p "Delete temporary files from showing HTML-mails? "))
-                (eq gnus-article-browse-delete-temp t)))
-    (dolist (tmp-file gnus-article-browse-html-temp)
-      (when (file-exists-p tmp-file)
-       (delete-file tmp-file)))
-    (setq gnus-article-browse-html-temp nil)))
+  (unless how
+    (setq how gnus-article-browse-delete-temp))
+  (when (and gnus-article-browse-html-temp-list how)
+    (when (and (eq how 'ask)
+              (y-or-n-p (format
+                         "Delete all %s temporary HTML file(s)? "
+                         (length gnus-article-browse-html-temp-list)))
+              (setq how t)))
+    (dolist (file gnus-article-browse-html-temp-list)
+      (when (and (file-exists-p file)
+                (or (eq how t)
+                    ;; `how' is neither `nil', `ask' nor `t' (i.e. `file'):
+                    (gnus-y-or-n-p
+                     (format "Delete temporary HTML file `%s'? " file))))
+       (delete-file file))
+      ;; Also remove file from the list when not deleted or if file doesn't
+      ;; exist anymore.
+      (setq gnus-article-browse-html-temp-list
+           (delete file gnus-article-browse-html-temp-list))))
+  gnus-article-browse-html-temp-list)
 
 (defun gnus-article-browse-html-parts (list)
   "View all \"text/html\" parts from LIST.
@@ -2642,7 +2660,12 @@ Recurse into multiparts."
                                ;; Do we need to care for 8.3 filenames?
                                "mm-" nil ".html")))
                 (mm-save-part-to-file handle tmp-file)
-                (add-to-list 'gnus-article-browse-html-temp tmp-file)
+                (add-to-list 'gnus-article-browse-html-temp-list tmp-file)
+                (add-hook 'gnus-summary-prepare-exit-hook
+                          'gnus-article-browse-delete-temp-files)
+                (add-hook 'gnus-exit-gnus-hook
+                          (lambda  ()
+                            (gnus-article-browse-delete-temp-files t)))
                 (browse-url tmp-file)
                 (setq showed t)))
              ;; If multipart, recurse