diff options
author | Dan Davison <davison@stats.ox.ac.uk> | 2010-08-30 09:34:05 -0700 |
---|---|---|
committer | Dan Davison <davison@stats.ox.ac.uk> | 2010-08-30 09:35:48 -0700 |
commit | 9c878a8290c071fbe5e97bc33c300ef2f07d6153 (patch) | |
tree | 5b1f5150f923e4d960d887ccf478acfce69660bb | |
parent | fcfba8d487ffe1c03ede5daa101137a408edeae4 (diff) | |
download | org-mode-9c878a8290c071fbe5e97bc33c300ef2f07d6153.tar.gz |
babel: Fix temporary file processing in the remote execution case.
* ob.el (org-babel-temp-file): Don't use babel temporary
directory in remote case; use make-temp-file with remote file
name so that temp file is guaranteed not to exist previously
on remote machine.
(org-babel-tramp-localname): New function to return local name
portion of possibly remote file specification
* ob-R.el (org-babel-R-evaluate-external-process): Respond to
changes in `org-babel-temp-file'; pass local file name to
remote R process.
(org-babel-R-evaluate-session) Respond to
changes in `org-babel-temp-file'; pass local file name to
remote R process.
-rw-r--r-- | lisp/ob-R.el | 14 | ||||
-rw-r--r-- | lisp/ob.el | 21 |
2 files changed, 23 insertions, 12 deletions
diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 31312d9..1963271 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -236,7 +236,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 (org-babel-temp-file "R-results-"))) + (let ((tmp-file (org-babel-temp-file "R-"))) (org-babel-eval org-babel-R-command (format org-babel-R-write-object-command (if row-names-p "TRUE" "FALSE") @@ -244,10 +244,9 @@ last statement in BODY, as elisp." (if row-names-p "NA" "TRUE") "FALSE") (format "{function ()\n{\n%s\n}}()" body) - tmp-file)) + (org-babel-tramp-localname tmp-file))) (org-babel-R-process-value-result - (org-babel-import-elisp-from-file - (org-babel-maybe-remote-file tmp-file) '(16)) column-names-p))) + (org-babel-import-elisp-from-file tmp-file '(16)) column-names-p))) (output (org-babel-eval org-babel-R-command body)))) (defun org-babel-R-evaluate-session @@ -265,16 +264,15 @@ last statement in BODY, as elisp." (ess-eval-buffer nil))) (let ((tmp-file (org-babel-temp-file "R-"))) (org-babel-comint-eval-invisibly-and-wait-for-file - session (org-babel-maybe-remote-file tmp-file) + session tmp-file (format org-babel-R-write-object-command (if row-names-p "TRUE" "FALSE") (if column-names-p (if row-names-p "NA" "TRUE") "FALSE") - ".Last.value" tmp-file)) + ".Last.value" (org-babel-tramp-localname tmp-file))) (org-babel-R-process-value-result - (org-babel-import-elisp-from-file - (org-babel-maybe-remote-file tmp-file) '(16)) column-names-p))) + (org-babel-import-elisp-from-file tmp-file '(16)) column-names-p))) (output (mapconcat #'org-babel-chomp @@ -1671,6 +1671,13 @@ the remote connection." (concat "/" user (when user "@") host ":" file)) file)) +(defun org-babel-tramp-localname (file) + "Return the local name component of FILE." + (if (file-remote-p file) + (with-parsed-tramp-file-name file nil + localname) + file)) + (defvar org-babel-temporary-directory (or (and (boundp 'org-babel-temporary-directory) org-babel-temporary-directory) @@ -1684,10 +1691,16 @@ Emacs shutdown.") 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 nil suffix))) + (if (file-remote-p default-directory) + (make-temp-file + (concat (file-remote-p default-directory) + (expand-file-name + prefix temporary-file-directory) + nil suffix)) + (let ((temporary-file-directory (expand-file-name + org-babel-temporary-directory + temporary-file-directory))) + (make-temp-file prefix nil suffix)))) (defun org-babel-remove-temporary-directory () "Remove `org-babel-temporary-directory' on Emacs shutdown." |