0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-29 21:37:50 +00:00

babel: octave: Fix variable assignments made by `org-babel-prep-session:octave'

* ob-octave.el (org-babel-expand-body:octave): Refactor: break variable
    assignment part out into a separate function
    (org-babel-octave-variable-assignments): New function constructing
    list of variable assignment statements
    (org-babel-prep-session:octave): Use new function
    `org-babel-octave-variable-assignments' instead of previous
    (incorrect) variable assignment code.
This commit is contained in:
Dan Davison 2010-10-14 21:56:41 +01:00
parent 8e151c066e
commit a59c4d7896

View file

@ -52,14 +52,10 @@
(org-babel-expand-body:octave body params processed-params))
(defun org-babel-expand-body:octave (body params &optional processed-params)
"Expand BODY according to PARAMS, return the expanded body."
(let ((vars (nth 1 (or processed-params (org-babel-process-params params)))))
(concat
(mapconcat
(lambda (pair)
(format "%s=%s"
(car pair)
(org-babel-octave-var-to-octave (cdr pair))))
vars "\n") "\n" body "\n")))
(mapconcat
#'identity
(append (org-babel-octave-variable-assignments params processed-params)
(list body)) "\n"))
(defvar org-babel-matlab-with-emacs-link nil
"If non-nil use matlab-shell-run-region for session evaluation.
@ -114,6 +110,15 @@ end")
"Prepare SESSION according to PARAMS."
(org-babel-prep-session:octave session params 'matlab))
(defun org-babel-octave-variable-assignments (params &optional processed-params)
"Return list of octave statements assigning the block's variables"
(mapcar
(lambda (pair)
(format "%s=%s"
(car pair)
(org-babel-octave-var-to-octave (cdr pair))))
(nth 1 (or processed-params (org-babel-process-params params)))))
(defun org-babel-octave-var-to-octave (var)
"Convert an emacs-lisp value into an octave variable.
Converts an emacs-lisp variable into a string of octave code
@ -126,13 +131,7 @@ specifying a variable of the same value."
(defun org-babel-prep-session:octave (session params &optional matlabp)
"Prepare SESSION according to the header arguments specified in PARAMS."
(let* ((session (org-babel-octave-initiate-session session params matlabp))
(vars (org-babel-ref-variables params))
(var-lines (mapcar
(lambda (pair)
(format "%s=%s"
(car pair)
(org-babel-octave-var-to-octave (cdr pair))))
vars)))
(var-lines (org-babel-octave-variable-assignments params)))
(org-babel-comint-in-buffer session
(mapc (lambda (var)
(end-of-line 1) (insert var) (comint-send-input nil t)