* Jakub Wilk <uba...@users.sf.net>, 2009-12-12, 19:49:
I have a potential fix for this bug. My approach is based on the
premise that the make-temp-file function provided from Emacs 22
onwards is safe. So, I backport the method to the rst.el file, and
bind it to the symbol rst--make-temp-file as follows:

Thank you very much for your patch!

I think we could avoid backporting code, if we created a temporary directory (and then a file with an arbitrary name and proper suffix inside it) rather than a temporary file.

I don't see a solution for removing the temporary files, though.

Is it possible to somehow store the name of temporary thing that has been created? That way maybe we could re-use it on next invocation of the preview function and delete it in some kind of exit hook.

I attach my patch proposition.

For a reason I don't understand, temporary directory is removed when
I kill a buffer (C-x k), but not when I kill Emacs (C-x C-c)... On the other hand, with this patch we are not cluttering /tmp any more than the original rst.el.

--
Jakub Wilk
--- /usr/share/emacs/site-lisp/rst.el	2008-07-24 11:44:16.000000000 +0200
+++ rst.el	2009-12-13 17:05:13.000000000 +0100
@@ -3273,13 +3273,31 @@
      "rst2pseudoxml"
      standard-output)))
 
+(defvar rst-temp-dir nil)
+(make-variable-buffer-local 'rst-temp-dir)
+
+(defun rst-get-temp-dir ()
+  (or rst-temp-dir
+    (setq rst-temp-dir 
+      (file-name-as-directory (make-temp-file "rst-" t))
+    )
+  )
+)
+
+(defun rst-remove-temp-dir ()
+  (require 'dired)
+  (if rst-temp-dir (dired-delete-file rst-temp-dir 'always))
+)
+
+(add-hook 'kill-buffer-hook 'rst-remove-temp-dir)
+
 (defvar rst-pdf-program "xpdf"
   "Program used to preview PDF files.")
 
 (defun rst-compile-pdf-preview ()
   "Convert the document to a PDF file and launch a preview program."
   (interactive)
-  (let* ((tmp-filename "/tmp/out.pdf")
+  (let* ((tmp-filename (concat (rst-get-temp-dir) "out.pdf"))
 	 (command (format "rst2pdf.py %s %s && %s %s"
 			  buffer-file-name tmp-filename
 			  rst-pdf-program tmp-filename)))
@@ -3294,7 +3312,7 @@
 (defun rst-compile-slides-preview ()
   "Convert the document to an S5 slide presentation and launch a preview program."
   (interactive)
-  (let* ((tmp-filename "/tmp/slides.html")
+  (let* ((tmp-filename (concat (rst-get-temp-dir) "slides.html"))
 	 (command (format "rst2s5 %s %s && %s %s"
 			  buffer-file-name tmp-filename
 			  rst-slides-program tmp-filename)))

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Python-modules-team mailing list
Python-modules-team@lists.alioth.debian.org
http://lists.alioth.debian.org/mailman/listinfo/python-modules-team

Reply via email to