diff options
author | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-14 21:05:02 +0100 |
---|---|---|
committer | Dan Davison <davison@stats.ox.ac.uk> | 2010-10-21 13:05:58 +0100 |
commit | 24a5f8b4e524b40d3ec32f9d3859ebaf7abac140 (patch) | |
tree | 511bf6a47df933bc6b8d4b864248e56d999298d7 | |
parent | 1bc914cd7aace0b81abcdde0b8fe74a28eae5c02 (diff) | |
download | org-mode-24a5f8b4e524b40d3ec32f9d3859ebaf7abac140.tar.gz |
babel: python: Fix variable assignments made by `org-babel-prep-session:python'
* ob-python.el (org-babel-expand-body:python): Refactor: break variable
assignment part out into a separate function
(org-babel-python-variable-assignments): New function constructing
list of variable assignment statements
(org-babel-prep-session:python): Use new function
`org-babel-python-variable-assignments' instead of previous
(incorrect) variable assignment code.
-rw-r--r-- | lisp/ob-python.el | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/lisp/ob-python.el b/lisp/ob-python.el index c056cb6..2b23c34 100644 --- a/lisp/ob-python.el +++ b/lisp/ob-python.el @@ -50,16 +50,15 @@ (defvar org-src-preserve-indentation) (defun org-babel-expand-body:python (body params &optional processed-params) "Expand BODY according to PARAMS, return the expanded body." - (concat - (mapconcat ;; define any variables - (lambda (pair) - (format "%s=%s" - (car pair) - (org-babel-python-var-to-python (cdr pair)))) - (nth 1 (or processed-params (org-babel-process-params params))) "\n") - "\n" - (org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]")) - "\n")) + (let ((var-lines + (org-babel-python-variable-assignments params processed-params))) + (mapconcat + #'identity + (append + (org-babel-python-variable-assignments params processed-params) + (list + (org-babel-trim body (if org-src-preserve-indentation "[\f\n\r\v]")))) + "\n"))) (defun org-babel-execute:python (body params) "Execute a block of Python code with Babel. @@ -83,13 +82,7 @@ This function is called by `org-babel-execute-src-block'." (defun org-babel-prep-session:python (session params) "Prepare SESSION according to the header arguments in PARAMS." (let* ((session (org-babel-python-initiate-session session)) - (vars (org-babel-ref-variables params)) - (var-lines (mapcar ;; define any variables - (lambda (pair) - (format "%s=%s" - (car pair) - (org-babel-python-var-to-python (cdr pair)))) - vars))) + (var-lines (org-babel-python-variable-assignments params))) (org-babel-comint-in-buffer session (mapc (lambda (var) (end-of-line 1) (insert var) (comint-send-input) @@ -107,6 +100,14 @@ This function is called by `org-babel-execute-src-block'." ;; helper functions +(defun org-babel-python-variable-assignments (params &optional processed-params) + (mapcar + (lambda (pair) + (format "%s=%s" + (car pair) + (org-babel-python-var-to-python (cdr pair)))) + (nth 1 (or processed-params (org-babel-process-params params))))) + (defun org-babel-python-var-to-python (var) "Convert an elisp value to a python variable. Convert an elisp value, VAR, into a string of python source code |