From 38d6bf3f6cacc74bb6056357e0eced0ec90b2a28 Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Thu, 8 Apr 2010 15:26:08 -0400 Subject: [PATCH 1/2] babel: allow assigning of variables when preparing R session This is already in place for other languages, but seems to have been forgotten for R. --- contrib/babel/lisp/langs/org-babel-R.el | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/contrib/babel/lisp/langs/org-babel-R.el b/contrib/babel/lisp/langs/org-babel-R.el index 494fbf3ac..b571558fb 100644 --- a/contrib/babel/lisp/langs/org-babel-R.el +++ b/contrib/babel/lisp/langs/org-babel-R.el @@ -59,8 +59,14 @@ called by `org-babel-execute-src-block'." (defun org-babel-prep-session:R (session params) "Prepare SESSION according to the header arguments specified in PARAMS." (let* ((session (org-babel-R-initiate-session session params)) - (vars (org-babel-ref-variables params))) - (mapc (lambda (pair) (org-babel-R-assign-elisp session (car pair) (cdr pair))) vars) + (vars (org-babel-ref-variables params)) + (var-lines + (mapcar + (lambda (pair) (org-babel-R-assign-elisp (car pair) (cdr pair))) vars))) + (org-babel-comint-in-buffer session + (mapc (lambda (var) + (move-end-of-line 1) (insert var) (comint-send-input nil t) + (org-babel-comint-wait-for-output session)) var-lines)) session)) (defun org-babel-load-session:R (session body params) @@ -81,7 +87,7 @@ called by `org-babel-execute-src-block'." (format "%S" s))) (defun org-babel-R-assign-elisp (name value) - "Read the elisp VALUE into a variable named NAME." + "Construct R code assigning the elisp VALUE to a variable named NAME." (if (listp value) (let ((transition-file (make-temp-file "org-babel-R-import"))) ;; ensure VALUE has an orgtbl structure (depth of at least 2) From 0f83b2d203e8da983d23ff84afa2297aa449583a Mon Sep 17 00:00:00 2001 From: Dan Davison Date: Thu, 8 Apr 2010 12:10:25 -0400 Subject: [PATCH 2/2] babel: allow disabling of noweb expansion during tangling --- contrib/babel/lisp/org-babel-tangle.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contrib/babel/lisp/org-babel-tangle.el b/contrib/babel/lisp/org-babel-tangle.el index 5dfbb94d6..64b8f0f7d 100644 --- a/contrib/babel/lisp/org-babel-tangle.el +++ b/contrib/babel/lisp/org-babel-tangle.el @@ -172,8 +172,10 @@ code blocks by language." (source-name (intern (or (fifth info) (format "block-%d" block-counter)))) (src-lang (first info)) - (body (org-babel-expand-noweb-references info)) (params (third info)) + (body (if (equal "no" (cdr (assoc :noweb params))) + (second info) + (org-babel-expand-noweb-references info))) (spec (list link source-name params body (third (cdr (assoc src-lang org-babel-tangle-langs))))) by-lang) (unless (string= (cdr (assoc :tangle params)) "no") ;; maybe skip