diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2010-08-25 14:43:07 -0600 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2010-08-25 14:47:47 -0600 |
commit | 7b00073f2dd0372e9da94d8efbc472a131e32eee (patch) | |
tree | 4cd0a2c712c0f3f0308954d2abd6e040263d47e9 | |
parent | 58f0a4ed4180b4061ee7e7ae2424f5325d849ca0 (diff) | |
download | org-mode-7b00073f2dd0372e9da94d8efbc472a131e32eee.tar.gz |
Babel now cleans up any temporary files created using org-babel-temp-file
* lisp/ob.el (org-babel-temporary-directory): variable to hold the
value of the Babel temporary directory
(org-babel-temp-file): replacement for make-temp-file with cleanup
on exit of Emacs
(org-babel-remove-temporary-directory): cleanup function run on exit
of Emacs
(kill-emacs-hook): now includes babel cleanup function
* lisp/ob-C.el (org-babel-C-execute): using org-babel-temp-file
instead of make-temp-file
* lisp/ob-R.el (org-babel-R-assign-elisp): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-R-evaluate-external-process): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-R-evaluate-session): using `org-babel-temp-file' instead of
`make-temp-file'
* lisp/ob-asymptote.el (org-babel-execute:asymptote): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-clojure.el (org-babel-clojure-evaluate-external-process):
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ditaa.el (org-babel-execute:ditaa): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-dot.el (org-babel-execute:dot): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-gnuplot.el (org-babel-gnuplot-process-vars): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-execute:gnuplot): using `org-babel-temp-file' instead of
`make-temp-file'
* lisp/ob-haskell.el (org-babel-load-session:haskell): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-haskell-export-to-lhs): using `org-babel-temp-file' instead
of `make-temp-file'
* lisp/ob-latex.el (org-babel-execute:latex): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ledger.el (org-babel-execute:ledger): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-lisp.el (org-babel-execute:lisp): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-octave.el (org-babel-octave-evaluate-external-process):
using `org-babel-temp-file' instead of `make-temp-file'
(org-babel-octave-evaluate-session): using `org-babel-temp-file'
instead of `make-temp-file'
(org-babel-octave-import-elisp-from-file): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-perl.el (org-babel-perl-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-python.el (org-babel-python-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-ruby.el (org-babel-ruby-evaluate): using
`org-babel-temp-file' instead of `make-temp-file'
using `org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-sass.el (org-babel-execute:sass): using
`org-babel-temp-file' instead of `make-temp-file'
* lisp/ob-sh.el (org-babel-sh-evaluate): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-sql.el (org-babel-execute:sql): using `org-babel-temp-file'
instead of `make-temp-file'
* lisp/ob-sqlite.el (org-babel-execute:sqlite): using
`org-babel-temp-file' instead of `make-temp-file'
(org-babel-sqlite-expand-vars): using `org-babel-temp-file' instead of
`make-temp-file'
-rw-r--r-- | lisp/ob-C.el | 8 | ||||
-rw-r--r-- | lisp/ob-R.el | 6 | ||||
-rw-r--r-- | lisp/ob-asymptote.el | 2 | ||||
-rw-r--r-- | lisp/ob-clojure.el | 2 | ||||
-rw-r--r-- | lisp/ob-ditaa.el | 2 | ||||
-rw-r--r-- | lisp/ob-dot.el | 2 | ||||
-rw-r--r-- | lisp/ob-gnuplot.el | 4 | ||||
-rw-r--r-- | lisp/ob-haskell.el | 4 | ||||
-rw-r--r-- | lisp/ob-latex.el | 2 | ||||
-rw-r--r-- | lisp/ob-ledger.el | 4 | ||||
-rw-r--r-- | lisp/ob-lisp.el | 2 | ||||
-rw-r--r-- | lisp/ob-octave.el | 8 | ||||
-rw-r--r-- | lisp/ob-perl.el | 2 | ||||
-rw-r--r-- | lisp/ob-python.el | 4 | ||||
-rw-r--r-- | lisp/ob-ruby.el | 4 | ||||
-rw-r--r-- | lisp/ob-sass.el | 4 | ||||
-rw-r--r-- | lisp/ob-sh.el | 4 | ||||
-rw-r--r-- | lisp/ob-sql.el | 4 | ||||
-rw-r--r-- | lisp/ob-sqlite.el | 4 | ||||
-rw-r--r-- | lisp/ob.el | 25 |
20 files changed, 61 insertions, 36 deletions
diff --git a/lisp/ob-C.el b/lisp/ob-C.el index 24f5a51..01a9fb5 100644 --- a/lisp/ob-C.el +++ b/lisp/ob-C.el @@ -84,12 +84,12 @@ header arguments (calls `org-babel-C-expand')." "This function should only be called by `org-babel-execute:C' or `org-babel-execute:c++'." (let* ((processed-params (org-babel-process-params params)) - (tmp-src-file (make-temp-file "org-babel-C-src" nil + (tmp-src-file (org-babel-temp-file "C-src-" nil (cond ((equal org-babel-c-variant 'c) ".c") ((equal org-babel-c-variant 'cpp) ".cpp")))) - (tmp-bin-file (make-temp-file "org-babel-C-bin")) - (tmp-out-file (make-temp-file "org-babel-C-out")) + (tmp-bin-file (org-babel-temp-file "C-bin-")) + (tmp-out-file (org-babel-temp-file "C-out-")) (cmdline (cdr (assoc :cmdline params))) (flags (cdr (assoc :flags params))) (full-body (org-babel-C-expand body params)) @@ -108,7 +108,7 @@ or `org-babel-execute:c++'." ((lambda (results) (org-babel-reassemble-table (if (member "vector" (nth 2 processed-params)) - (let ((tmp-file (make-temp-file "ob-c"))) + (let ((tmp-file (org-babel-temp-file "c-"))) (with-temp-file tmp-file (insert results)) (org-babel-import-elisp-from-file tmp-file)) (org-babel-read results)) diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 712ae51..25c220f 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -139,7 +139,7 @@ This function is called by `org-babel-execute-src-block'." (defun org-babel-R-assign-elisp (name value colnames-p rownames-p) "Construct R code assigning the elisp VALUE to a variable named NAME." (if (listp value) - (let ((transition-file (make-temp-file "org-babel-R-import"))) + (let ((transition-file (org-babel-temp-file "R-import-"))) ;; ensure VALUE has an orgtbl structure (depth of at least 2) (unless (listp (car value)) (setq value (list value))) (with-temp-file (org-babel-maybe-remote-file transition-file) @@ -235,7 +235,7 @@ string. If RESULT-TYPE equals 'value then return the value of the last statement in BODY, as elisp." (case result-type (value - (let ((tmp-file (make-temp-file "org-babel-R-results-"))) + (let ((tmp-file (org-babel-temp-file "R-results-"))) (org-babel-eval org-babel-R-command (format org-babel-R-wrapper-method body tmp-file @@ -256,7 +256,7 @@ string. If RESULT-TYPE equals 'value then return the value of the last statement in BODY, as elisp." (case result-type (value - (let ((tmp-file (make-temp-file "org-babel-R")) + (let ((tmp-file (org-babel-temp-file "R-")) broke) (org-babel-comint-with-output (session org-babel-R-eoe-output) (insert (mapconcat diff --git a/lisp/ob-asymptote.el b/lisp/ob-asymptote.el index df1f059..49ccc7c 100644 --- a/lisp/ob-asymptote.el +++ b/lisp/ob-asymptote.el @@ -73,7 +73,7 @@ This function is called by `org-babel-execute-src-block'." (match-string 1 out-file)) "pdf")) (cmdline (cdr (assoc :cmdline params))) - (in-file (make-temp-file "org-babel-asymptote")) + (in-file (org-babel-temp-file "asymptote-")) (cmd (concat "asy " (if out-file (concat "-globalwrite -f " format " -o " out-file) diff --git a/lisp/ob-clojure.el b/lisp/ob-clojure.el index cfb3b94..4311bb5 100644 --- a/lisp/ob-clojure.el +++ b/lisp/ob-clojure.el @@ -261,7 +261,7 @@ repl buffer." " ")))) (case result-type (output (org-babel-eval cmd body)) - (value (let* ((tmp-file (make-temp-file "org-babel-clojure-results-"))) + (value (let* ((tmp-file (org-babel-temp-file "clojure-results-"))) (org-babel-eval cmd (format org-babel-clojure-wrapper-method body tmp-file tmp-file)) (org-babel-clojure-table-or-string diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el index f9a5bac..cc95765 100644 --- a/lisp/ob-ditaa.el +++ b/lisp/ob-ditaa.el @@ -53,7 +53,7 @@ This function is called by `org-babel-execute-src-block'." (let ((result-params (split-string (or (cdr (assoc :results params)) ""))) (out-file (cdr (assoc :file params))) (cmdline (cdr (assoc :cmdline params))) - (in-file (make-temp-file "org-babel-ditaa"))) + (in-file (org-babel-temp-file "ditaa-"))) (unless (file-exists-p org-ditaa-jar-path) (error "Could not find ditaa.jar at %s" org-ditaa-jar-path)) (with-temp-file in-file (insert body)) diff --git a/lisp/ob-dot.el b/lisp/ob-dot.el index d19f075..8f2976e 100644 --- a/lisp/ob-dot.el +++ b/lisp/ob-dot.el @@ -70,7 +70,7 @@ This function is called by `org-babel-execute-src-block'." (out-file (cdr (assoc :file params))) (cmdline (cdr (assoc :cmdline params))) (cmd (or (cdr (assoc :cmd params)) "dot")) - (in-file (make-temp-file "org-babel-dot"))) + (in-file (org-babel-temp-file "dot-"))) (with-temp-file in-file (insert (org-babel-expand-body:dot body params processed-params))) (org-babel-eval (concat cmd " " in-file " " cmdline " -o " out-file) "") diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el index 5b5e82d..ff68ad7 100644 --- a/lisp/ob-gnuplot.el +++ b/lisp/ob-gnuplot.el @@ -68,7 +68,7 @@ code." (car pair) ;; variable name (if (listp (cdr pair)) ;; variable value (org-babel-gnuplot-table-to-data - (cdr pair) (make-temp-file "org-babel-gnuplot") params) + (cdr pair) (org-babel-temp-file "gnuplot") params) (cdr pair)))) (org-babel-ref-variables params))) @@ -141,7 +141,7 @@ This function is called by `org-babel-execute-src-block'." (save-window-excursion ;; evaluate the code body with gnuplot (if (string= session "none") - (let ((script-file (make-temp-file "org-babel-gnuplot-script"))) + (let ((script-file (org-babel-temp-file "gnuplot-script"))) (with-temp-file script-file (insert (concat body "\n"))) (message "gnuplot \"%s\"" script-file) diff --git a/lisp/ob-haskell.el b/lisp/ob-haskell.el index 86efda9..9cfda96 100644 --- a/lisp/ob-haskell.el +++ b/lisp/ob-haskell.el @@ -116,7 +116,7 @@ then create one. Return the initialized session." (save-window-excursion (let* ((buffer (org-babel-prep-session:haskell session params processed-params)) - (load-file (concat (make-temp-file "org-babel-haskell-load") ".hs"))) + (load-file (concat (org-babel-temp-file "haskell-load-") ".hs"))) (with-temp-buffer (insert body) (write-file load-file) (haskell-mode) (inferior-haskell-load-file)) @@ -177,7 +177,7 @@ constructs (header arguments, no-web syntax etc...) are ignored." (concat "^\\([ \t]*\\)#\\+begin_src[ \t]haskell*\\(.*\\)?[\r\n]" "\\([^\000]*?\\)[\r\n][ \t]*#\\+end_src.*")) (base-name (file-name-sans-extension (buffer-file-name))) - (tmp-file (make-temp-file "ob-haskell")) + (tmp-file (org-babel-temp-file "haskell-")) (tmp-org-file (concat tmp-file ".org")) (tmp-tex-file (concat tmp-file ".tex")) (lhs-file (concat base-name ".lhs")) diff --git a/lisp/ob-latex.el b/lisp/ob-latex.el index 0318375..cb8c255 100644 --- a/lisp/ob-latex.el +++ b/lisp/ob-latex.el @@ -70,7 +70,7 @@ This function is called by `org-babel-execute-src-block'." (setq body (org-babel-expand-body:latex body params)) (if (cdr (assoc :file params)) (let* ((out-file (cdr (assoc :file params))) - (tex-file (make-temp-file "org-babel-latex" nil ".tex")) + (tex-file (org-babel-temp-file "latex-" nil ".tex")) (border (cdr (assoc :border params))) (fit (or (cdr (assoc :fit params)) border)) (height (and fit (cdr (assoc :pdfheight params)))) diff --git a/lisp/ob-ledger.el b/lisp/ob-ledger.el index 1c48dad..edd803f 100644 --- a/lisp/ob-ledger.el +++ b/lisp/ob-ledger.el @@ -50,8 +50,8 @@ called by `org-babel-execute-src-block'." (message "executing Ledger source code block") (let ((result-params (split-string (or (cdr (assoc :results params)) ""))) (cmdline (cdr (assoc :cmdline params))) - (in-file (make-temp-file "org-babel-ledger")) - (out-file (make-temp-file "org-babel-ledger-output")) + (in-file (org-babel-temp-file "ledger-")) + (out-file (org-babel-temp-file "ledger-output-")) ) (with-temp-file in-file (insert body)) (message (concat "ledger -f " in-file " " cmdline)) diff --git a/lisp/ob-lisp.el b/lisp/ob-lisp.el index bad0d07..4216158 100644 --- a/lisp/ob-lisp.el +++ b/lisp/ob-lisp.el @@ -74,7 +74,7 @@ This function is called by `org-babel-execute-src-block'" (save-window-excursion (cadr (slime-eval `(swank:eval-and-grab-output ,full-body)))) ;; external evaluation - (let ((script-file (make-temp-file "ob-lisp-script"))) + (let ((script-file (org-babel-temp-file "lisp-script-"))) (with-temp-file script-file (insert ;; return the value or the output diff --git a/lisp/ob-octave.el b/lisp/ob-octave.el index e0c2705..19174cd 100644 --- a/lisp/ob-octave.el +++ b/lisp/ob-octave.el @@ -178,7 +178,7 @@ value of the last statement in BODY, as elisp." org-babel-octave-shell-command))) (case result-type (output (org-babel-eval cmd body)) - (value (let ((tmp-file (make-temp-file "org-babel-results-"))) + (value (let ((tmp-file (org-babel-temp-file "results-"))) (org-babel-eval cmd (format org-babel-octave-wrapper-method body tmp-file tmp-file)) @@ -188,8 +188,8 @@ value of the last statement in BODY, as elisp." (defun org-babel-octave-evaluate-session (session body result-type &optional matlabp) "Evaluate BODY in SESSION." - (let* ((tmp-file (make-temp-file "org-babel-results-")) - (wait-file (make-temp-file "org-babel-matlab-emacs-link-wait-signal-")) + (let* ((tmp-file (org-babel-temp-file "results-")) + (wait-file (org-babel-temp-file "matlab-emacs-link-wait-signal-")) (full-body (case result-type (output @@ -246,7 +246,7 @@ value of the last statement in BODY, as elisp." "Import data from FILE-NAME. This removes initial blank and comment lines and then calls `org-babel-import-elisp-from-file'." - (let ((temp-file (make-temp-file "org-babel-results-")) beg end) + (let ((temp-file (org-babel-temp-file "results-")) beg end) (with-temp-file temp-file (insert-file-contents file-name) (re-search-forward "^[ \t]*[^# \t]" nil t) diff --git a/lisp/ob-perl.el b/lisp/ob-perl.el index 6e83542..3e4873d 100644 --- a/lisp/ob-perl.el +++ b/lisp/ob-perl.el @@ -107,7 +107,7 @@ return the value of the last statement in BODY, as elisp." (when session (error "Sessions are not supported for Perl.")) (case result-type (output (org-babel-eval org-babel-perl-command body)) - (value (let ((tmp-file (make-temp-file "org-babel-perl-results-"))) + (value (let ((tmp-file (org-babel-temp-file "perl-results-"))) (org-babel-eval org-babel-perl-command (format org-babel-perl-wrapper-method body tmp-file)) diff --git a/lisp/ob-python.el b/lisp/ob-python.el index 44411e4..a968403 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -203,7 +203,7 @@ return the value of the last statement in BODY, as elisp." ;; external process evaluation (case result-type (output (org-babel-eval org-babel-python-command body)) - (value (let ((tmp-file (make-temp-file "org-babel-python-results-"))) + (value (let ((tmp-file (org-babel-temp-file "python-results-"))) (org-babel-eval org-babel-python-command (format (if (member "pp" result-params) @@ -251,7 +251,7 @@ return the value of the last statement in BODY, as elisp." (if (or (member "code" result-params) (member "pp" result-params)) results (org-babel-python-table-or-string results))) - (let ((tmp-file (make-temp-file "org-babel-python-results-"))) + (let ((tmp-file (org-babel-temp-file "python-results-"))) (org-babel-comint-with-output (buffer org-babel-python-eoe-indicator t body) (let ((comint-process-echoes nil)) diff --git a/lisp/ob-ruby.el b/lisp/ob-ruby.el index e5ee508..f2363df 100644 --- a/lisp/ob-ruby.el +++ b/lisp/ob-ruby.el @@ -186,7 +186,7 @@ return the value of the last statement in BODY, as elisp." ;; external process evaluation (case result-type (output (org-babel-eval org-babel-ruby-command body)) - (value (let ((tmp-file (make-temp-file "org-babel-ruby-results-"))) + (value (let ((tmp-file (org-babel-temp-file "ruby-results-"))) (org-babel-eval org-babel-ruby-command (format (if (member "pp" result-params) org-babel-ruby-pp-wrapper-method @@ -221,7 +221,7 @@ return the value of the last statement in BODY, as elisp." (if (or (member "code" result-params) (member "pp" result-params)) results (org-babel-ruby-table-or-string results))) - (let* ((tmp-file (make-temp-file "org-babel-ruby-results-")) + (let* ((tmp-file (org-babel-temp-file "ruby-results-")) (ppp (or (member "code" result-params) (member "pp" result-params)))) (org-babel-comint-with-output diff --git a/lisp/ob-sass.el b/lisp/ob-sass.el index b834a80..2e624f2 100644 --- a/lisp/ob-sass.el +++ b/lisp/ob-sass.el @@ -51,9 +51,9 @@ This function is called by `org-babel-execute-src-block'." (let* ((result-params (split-string (or (cdr (assoc :results params)) ""))) (file (cdr (assoc :file params))) - (out-file (or file (make-temp-file "org-babel-sass-out"))) + (out-file (or file (org-babel-temp-file "sass-out-"))) (cmdline (cdr (assoc :cmdline params))) - (in-file (make-temp-file "org-babel-sass-in")) + (in-file (org-babel-temp-file "sass-in-")) (cmd (concat "sass " (or cmdline "") in-file " " out-file))) (with-temp-file in-file (insert (org-babel-expand-body:sass body params))) (shell-command cmd) diff --git a/lisp/ob-sh.el b/lisp/ob-sh.el index ced35c0..cf8f829 100644 --- a/lisp/ob-sh.el +++ b/lisp/ob-sh.el @@ -155,12 +155,12 @@ return the value of the last statement in BODY." (if (or (member "scalar" result-params) (member "output" result-params)) results - (let ((tmp-file (make-temp-file "org-babel-sh"))) + (let ((tmp-file (org-babel-temp-file "sh-"))) (with-temp-file tmp-file (insert results)) (org-babel-import-elisp-from-file tmp-file)))) (if (not session) (org-babel-eval org-babel-sh-command (org-babel-trim body)) - (let ((tmp-file (make-temp-file "org-babel-sh"))) + (let ((tmp-file (org-babel-temp-file "sh-"))) (mapconcat #'org-babel-sh-strip-weird-long-prompt (mapcar diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el index 60907e3..4e1daa5 100644 --- a/lisp/ob-sql.el +++ b/lisp/ob-sql.el @@ -60,9 +60,9 @@ This function is called by `org-babel-execute-src-block'." (processed-params (org-babel-process-params params)) (cmdline (cdr (assoc :cmdline params))) (engine (cdr (assoc :engine params))) - (in-file (make-temp-file "org-babel-sql-in")) + (in-file (org-babel-temp-file "sql-in-")) (out-file (or (cdr (assoc :out-file params)) - (make-temp-file "org-babel-sql-out"))) + (org-babel-temp-file "sql-out-"))) (command (case (intern engine) ('mysql (format "mysql %s -e \"source %s\" > %s" (or cmdline "") in-file out-file)) diff --git a/lisp/ob-sqlite.el b/lisp/ob-sqlite.el index 99ae51b..e53d074 100644 --- a/lisp/ob-sqlite.el +++ b/lisp/ob-sqlite.el @@ -73,7 +73,7 @@ This function is called by `org-babel-execute-src-block'." (insert (org-babel-expand-body:sqlite body nil (list nil vars)))) sql-file) - (make-temp-file "ob-sqlite-sql"))) + (org-babel-temp-file "sqlite-sql-"))) (cons "cmd" org-babel-sqlite3-command) (cons "header" (if headers-p "-header" "-noheader")) (cons "separator" @@ -117,7 +117,7 @@ This function is called by `org-babel-execute-src-block'." el (format "%S" el))))))) data-file) - (make-temp-file "ob-sqlite-data")) + (org-babel-temp-file "sqlite-data-")) (if (stringp val) val (format "%S" val)))) (cdr pair)) body))) @@ -1658,6 +1658,31 @@ the remote connection." (concat "/" user (when user "@") host ":" file)) file)) +(defvar org-babel-temporary-directory + (or (and (boundp 'org-babel-temporary-directory) + org-babel-temporary-directory) + (make-temp-file "babel-" t)) + "Directory to hold temporary files created to execute code blocks. +Used by `org-babel-temp-file'. This directory will be removed on +Emacs shutdown.") + +(defun org-babel-temp-file (prefix &optional suffix) + "Create a temporary file in the `org-babel-temporary-directory'. +Passes PREFIX and SUFFIX directly to `make-temp-file' with the +value of `temporary-file-directory' temporarily set to the value +of `org-babel-temporary-directory'." + (let ((temporary-file-directory (expand-file-name + org-babel-temporary-directory + temporary-file-directory))) + (make-temp-file prefix suffix))) + +(defun org-babel-remove-temporary-directory () + "Remove `org-babel-temporary-directory' on Emacs shutdown." + (when (boundp 'org-babel-temporary-directory) + (delete-directory org-babel-temporary-directory t))) + +(add-hook 'kill-emacs-hook 'org-babel-remove-temporary-directory) + (provide 'ob) ;; arch-tag: 01a7ebee-06c5-4ee4-a709-e660d28c0af1 |