From 5675e5658507e0ee279056d2d5f2a83a8e8e18da Mon Sep 17 00:00:00 2001 From: Eric Schulte Date: Fri, 12 Jun 2009 15:31:52 -0700 Subject: [PATCH] sessions are now working in R --- lisp/langs/org-babel-R.el | 7 ++++--- lisp/org-babel-comint.el | 3 ++- org-babel.org | 21 ++++++++++++++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/lisp/langs/org-babel-R.el b/lisp/langs/org-babel-R.el index ef63da894..b4ec8327a 100644 --- a/lisp/langs/org-babel-R.el +++ b/lisp/langs/org-babel-R.el @@ -43,8 +43,7 @@ called by `org-babel-execute-src-block'." (result-type (cond ((member "output" result-params) 'output) ((member "value" result-params) 'value) (t 'value))) - (session (org-babel-R-initiate-session ;; (cdr (assoc :session params)) - (get-buffer "*R*"))) + (session (org-babel-R-initiate-session (cdr (assoc :session params)))) results) ;; assign variables (mapc (lambda (pair) (org-babel-R-assign-elisp session (car pair) (cdr pair))) vars) @@ -91,9 +90,11 @@ R process in `org-babel-R-buffer'." (defun org-babel-R-initiate-session (session) "If there is not a current R process then create one." + (message "session is %S" session) (if (org-babel-comint-buffer-livep session) session - (save-window-excursion (R) (current-buffer)))) + (save-window-excursion (R) (rename-buffer (if (bufferp session) (buffer-name session) + (if (stringp session) session (buffer-name)))) (current-buffer)))) (defvar org-babel-R-eoe-indicator "'org_babel_R_eoe'") (defvar org-babel-R-eoe-output "[1] \"org_babel_R_eoe\"") diff --git a/lisp/org-babel-comint.el b/lisp/org-babel-comint.el index 84f0d6917..38905e0ca 100644 --- a/lisp/org-babel-comint.el +++ b/lisp/org-babel-comint.el @@ -37,7 +37,8 @@ (require 'comint) (defun org-babel-comint-buffer-livep (buffer) - (and (buffer-live-p buffer) (get-buffer buffer) (get-buffer-process buffer))) + (let ((buffer (get-buffer buffer))) + (and buffer (buffer-live-p buffer) (get-buffer-process buffer) buffer))) (defmacro org-babel-comint-in-buffer (buffer &rest body) "Check BUFFER with `org-babel-comint-buffer-livep' then execute diff --git a/org-babel.org b/org-babel.org index 7b44c9acb..8a31fc2da 100644 --- a/org-babel.org +++ b/org-babel.org @@ -115,7 +115,7 @@ and the results to be collected in the same table. * Tasks [22/38] -** TODO Create objects in top level (global) environment [2/5] +** TODO Create objects in top level (global) environment [3/5] *sessions* *** initial requirement statement [DED] @@ -587,7 +587,7 @@ echo $other ' is the old date' #+resname: task-call-other-shell : $ Fri Jun 12 13:08:37 PDT 2009 is the old date -*** TODO implement a *session* header argument [3/4] +*** DONE implement a *session* header argument [4/4] =:session= header argument to override the default *session* buffer **** DONE ruby @@ -640,7 +640,22 @@ echo $WHAT #+resname: task-shell-sessions-what : patton -**** TODO R +**** DONE R + +#+srcname: task-R-session +#+begin_src R :session what :results replace +a <- 9 +b <- 8 +a + b +#+end_src + +#+resname: task-R-session +: 17 + +#+srcname: another-task-R-session +#+begin_src R :session what :results replace +a + b +#+end_src *** TODO function to bring up inferior-process buffer