diff --git a/lisp/langs/org-babel-R.el b/lisp/langs/org-babel-R.el index 8667b125f..4a8764c8a 100644 --- a/lisp/langs/org-babel-R.el +++ b/lisp/langs/org-babel-R.el @@ -111,7 +111,7 @@ last statement in BODY." tmp-file)) (full-body (mapconcat #'org-babel-chomp (list body last-value-eval org-babel-R-eoe-indicator) "\n")) (raw (org-babel-comint-with-output buffer org-babel-R-eoe-output nil - (insert full-body) (comint-send-input))) + (insert full-body) (inferior-ess-send-input))) (results (let ((broke nil)) (delete nil (mapcar (lambda (el) (if (or broke diff --git a/org-babel.org b/org-babel.org index 38e822d23..f3219ac72 100644 --- a/org-babel.org +++ b/org-babel.org @@ -1718,16 +1718,11 @@ This could probably be added to [[file:lisp/org-babel-script.el][org-babel-scrip (see [[* file result types][file result types]]) -* Bugs [13/18] -** TODO defunct R sessions -Sometimes an old R session will turn defunct, and newly inserted code -will not be evaluated (leading to a hang). - +* Bugs [14/18] ** TODO test failing forcing vector results with =test-forced-vector-results= ruby code block Note that this only seems to happen the *second* time the test table is evaluated - #+srcname: bug-trivial-vector #+begin_src emacs-lisp :results vector silent 8 @@ -1769,6 +1764,11 @@ even a third" E.g. the pie chart example. Despite the save-window-excursion in org-babel-execute:R. (I never learned how to do this properly: org-R jumps all over the place...) +** DONE defunct R sessions +Sometimes an old R session will turn defunct, and newly inserted code +will not be evaluated (leading to a hang). + +This seems to be fixed by using `inferior-ess-send-input' rather than `comint-send-input'. ** DONE ruby fails on first call to non-default session #+srcname: bug-new-session @@ -2035,52 +2035,52 @@ org-babel functionality. of these tests may fail. #+TBLNAME: org-babel-tests -| functionality | block | arg | expected | results | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| basic evaluation | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| emacs lisp | basic-elisp | | 5 | 5 | pass | -| shell | basic-shell | | 6 | 6 | pass | -| ruby | basic-ruby | | org-babel | org-babel | pass | -| python | basic-python | | hello world | hello world | pass | -| R | basic-R | | 13 | 13 | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| tables | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| emacs lisp | table-elisp | | 3 | 3 | pass | -| ruby | table-ruby | | 1-2-3 | 1-2-3 | pass | -| python | table-python | | 5 | 5 | pass | -| R | table-R | | 3.5 | 3.5 | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| source block references | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| all languages | chained-ref-last | | Array | Array | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| source block functions | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| emacs lisp | defun-fibb | | fibbd | fibbd | pass | -| run over | Fibonacci | 0 | 1 | 1 | pass | -| a | Fibonacci | 1 | 1 | 1 | pass | -| variety | Fibonacci | 2 | 2 | 2 | pass | -| of | Fibonacci | 3 | 3 | 3 | pass | -| different | Fibonacci | 4 | 5 | 5 | pass | -| arguments | Fibonacci | 5 | 8 | 8 | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| bugs and tasks | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| simple ruby arrays | ruby-array-test | | 3 | 3 | pass | -| R number evaluation | bug-R-number-evaluation | | 2 | 2 | pass | -| multi-line ruby blocks | multi-line-ruby-test | | 2 | 2 | pass | -| forcing vector results | test-forced-vector-results | | Array | nil | expected "Array" but was "nil" | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| sessions | | | | | pass | -|-------------------------+----------------------------+-----+-------------+-------------+--------------------------------| -| set ruby session | set-ruby-session-var | | :set | :set | pass | -| get from ruby session | get-ruby-session-var | | 3 | 3 | pass | -| set python session | set-python-session-var | | set | set | pass | -| get from python session | get-python-session-var | | 4 | 4 | pass | -| set R session | set-R-session-var | | set | set | pass | -| get from R session | get-R-session-var | | 5 | 5 | pass | +| functionality | block | arg | expected | results | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| basic evaluation | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| emacs lisp | basic-elisp | | 5 | 5 | pass | +| shell | basic-shell | | 6 | 6 | pass | +| ruby | basic-ruby | | org-babel | org-babel | pass | +| python | basic-python | | hello world | hello world | pass | +| R | basic-R | | 13 | 13 | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| tables | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| emacs lisp | table-elisp | | 3 | 3 | pass | +| ruby | table-ruby | | 1-2-3 | 1-2-3 | pass | +| python | table-python | | 5 | 5 | pass | +| R | table-R | | 3.5 | 3.5 | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| source block references | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| all languages | chained-ref-last | | Array | Array | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| source block functions | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| emacs lisp | defun-fibb | | fibbd | fibbd | pass | +| run over | Fibonacci | 0 | 1 | 1 | pass | +| a | Fibonacci | 1 | 1 | 1 | pass | +| variety | Fibonacci | 2 | 2 | 2 | pass | +| of | Fibonacci | 3 | 3 | 3 | pass | +| different | Fibonacci | 4 | 5 | 5 | pass | +| arguments | Fibonacci | 5 | 8 | 8 | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| bugs and tasks | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| simple ruby arrays | ruby-array-test | | 3 | nil | expected "3" but was "nil" | +| R number evaluation | bug-R-number-evaluation | | 2 | 2 | pass | +| multi-line ruby blocks | multi-line-ruby-test | | 2 | 2 | pass | +| forcing vector results | test-forced-vector-results | | Array | Array | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| sessions | | | | | pass | +|-------------------------+----------------------------+-----+-------------+-------------+----------------------------| +| set ruby session | set-ruby-session-var | | :set | :set | pass | +| get from ruby session | get-ruby-session-var | | 3 | 3 | pass | +| set python session | set-python-session-var | | set | set | pass | +| get from python session | get-python-session-var | | 4 | 4 | pass | +| set R session | set-R-session-var | | set | set | pass | +| get from R session | get-R-session-var | | 5 | 5 | pass | #+TBLFM: $5='(if (= (length $3) 1) (progn (message (format "running %S" '(sbe $2 (n $3)))) (sbe $2 (n $3))) (sbe $2))::$6='(if (string= $4 $5) "pass" (format "expected %S but was %S" $4 $5)) ** basic tests