diff options
author | Rasmus <rasmus@gmx.us> | 2018-01-22 15:57:42 +0100 |
---|---|---|
committer | Rasmus <rasmus@gmx.us> | 2018-01-22 16:02:55 +0100 |
commit | bb396a369c93e57b033844003c7ceab61d61aa08 (patch) | |
tree | 31a9ef7d5792d64bf181b17cb8255386efd5d96d /lisp/org/ob-python.el | |
parent | fa582153f7a75e1eaaef4bfd2b381916233dc0a7 (diff) | |
download | emacs-bb396a369c93e57b033844003c7ceab61d61aa08.tar.gz |
Update Org to v9.1.6
Please note this is a bugfix release. See etc/ORG-NEWS for details.
Diffstat (limited to 'lisp/org/ob-python.el')
-rw-r--r-- | lisp/org/ob-python.el | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el index 3ea050fffea..951e4d2a4b4 100644 --- a/lisp/org/ob-python.el +++ b/lisp/org/ob-python.el @@ -239,6 +239,15 @@ def main(): open('%s', 'w').write( pprint.pformat(main()) )") +(defconst org-babel-python--exec-tmpfile + (concat + "__org_babel_python_fname = '%s'; " + "__org_babel_python_fh = open(__org_babel_python_fname); " + "exec(compile(" + "__org_babel_python_fh.read(), __org_babel_python_fname, 'exec'" + ")); " + "__org_babel_python_fh.close()")) + (defun org-babel-python-evaluate (session body &optional result-type result-params preamble) "Evaluate BODY as Python code." @@ -306,16 +315,23 @@ last statement in BODY, as elisp." (results (pcase result-type (`output - (mapconcat - #'org-trim - (butlast - (org-babel-comint-with-output - (session org-babel-python-eoe-indicator t body) - (funcall input-body body) - (funcall send-wait) (funcall send-wait) - (insert org-babel-python-eoe-indicator) - (funcall send-wait)) - 2) "\n")) + (let ((body (if (string-match-p ".\n+." body) ; Multiline + (let ((tmp-src-file (org-babel-temp-file + "python-"))) + (with-temp-file tmp-src-file (insert body)) + (format org-babel-python--exec-tmpfile + tmp-src-file)) + body))) + (mapconcat + #'org-trim + (butlast + (org-babel-comint-with-output + (session org-babel-python-eoe-indicator t body) + (funcall input-body body) + (funcall send-wait) (funcall send-wait) + (insert org-babel-python-eoe-indicator) + (funcall send-wait)) + 2) "\n"))) (`value (let ((tmp-file (org-babel-temp-file "python-"))) (org-babel-comint-with-output |