diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2010-12-02 07:25:50 -0700 |
---|---|---|
committer | Eric Schulte <schulte.eric@gmail.com> | 2010-12-02 07:25:50 -0700 |
commit | cfd7d07adc28198c73a10bf8d4c71e1d6d0e9bb8 (patch) | |
tree | 627c229cd7f4487eb7adcd49f012e91f7c047915 | |
parent | 768774812875b68dbd8b215a9c036597e00fb6d0 (diff) | |
download | org-mode-cfd7d07adc28198c73a10bf8d4c71e1d6d0e9bb8.tar.gz |
ob-python: content of :prefix argument appended to code file during external evaluation
* lisp/ob-python.el (org-babel-execute:python): Pass the new "prefix"
header argument through to external evaluation.
(org-babel-python-evaluate): Pass the new "prefix" header argument
through to external evaluation.
(org-babel-python-evaluate-external-process): When specified prepend
"prefix" to the file used in external evaluation.
-rw-r--r-- | lisp/ob-python.el | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/lisp/ob-python.el b/lisp/ob-python.el index 5b28497..4193b85 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -58,12 +58,13 @@ This function is called by `org-babel-execute-src-block'." (result-type (cdr (assoc :result-type params))) (return-val (when (and (eq result-type 'value) (not session)) (cdr (assoc :return params)))) + (prefix (cdr (assoc :prefix params))) (full-body (org-babel-expand-body:generic (concat body (if return-val (format "return %s" return-val) "")) params (org-babel-variable-assignments:python params))) (result (org-babel-python-evaluate - session full-body result-type result-params))) + session full-body result-type result-params prefix))) (or (cdr (assoc :file params)) (org-babel-reassemble-table result @@ -181,35 +182,38 @@ def main(): open('%s', 'w').write( pprint.pformat(main()) )") (defun org-babel-python-evaluate - (session body &optional result-type result-params) + (session body &optional result-type result-params prefix) "Evaluate BODY as python code." (if session (org-babel-python-evaluate-session session body result-type result-params) (org-babel-python-evaluate-external-process - body result-type result-params))) + body result-type result-params prefix))) (defun org-babel-python-evaluate-external-process - (body &optional result-type result-params) + (body &optional result-type result-params prefix) "Evaluate BODY in external python process. If RESULT-TYPE equals 'output then return standard output as a string. If RESULT-TYPE equals 'value then return the value of the last statement in BODY, as elisp." (case result-type - (output (org-babel-eval org-babel-python-command body)) + (output (org-babel-eval org-babel-python-command + (concat (if prefix (concat prefix "\n") "") body))) (value (let ((tmp-file (org-babel-temp-file "python-"))) (org-babel-eval org-babel-python-command - (format - (if (member "pp" result-params) - org-babel-python-pp-wrapper-method - org-babel-python-wrapper-method) - (mapconcat - (lambda (line) (format "\t%s" line)) - (split-string - (org-remove-indentation - (org-babel-trim body)) - "[\r\n]") "\n") - (org-babel-process-file-name tmp-file 'noquote))) + (concat + (if prefix (concat prefix "\n") "") + (format + (if (member "pp" result-params) + org-babel-python-pp-wrapper-method + org-babel-python-wrapper-method) + (mapconcat + (lambda (line) (format "\t%s" line)) + (split-string + (org-remove-indentation + (org-babel-trim body)) + "[\r\n]") "\n") + (org-babel-process-file-name tmp-file 'noquote)))) ((lambda (raw) (if (or (member "code" result-params) (member "pp" result-params)) |