Переглянути джерело

sessions are now working in R

Eric Schulte 16 роки тому
батько
коміт
5675e56585
3 змінених файлів з 24 додано та 7 видалено
  1. 4 3
      lisp/langs/org-babel-R.el
  2. 2 1
      lisp/org-babel-comint.el
  3. 18 3
      org-babel.org

+ 4 - 3
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\"")

+ 2 - 1
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

+ 18 - 3
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