From e51c092cc455f9deee8d3d5b413493aff84b38c3 Mon Sep 17 00:00:00 2001 From: chasberry Date: Sat, 23 Aug 2014 15:54:55 -0700 Subject: [PATCH 2/2] merge CCBs version --- lisp/ob-R.el | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 08ef9c2..f828bf2 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -383,6 +383,17 @@ last statement in BODY, as elisp." (defvar ess-eval-visibly-p) +(defvar org-babel-R-session-cmd + "local({ + on.exit(file.create(%S)) + sink(%S) + replay( + Filter(Negate(is.source), + evaluate(%S, envir=parent.frame(2), new_device = FALSE, + stop_on_error = 0L))) + sink()})" +"format string for an `R :session :results output' regime.") + (defun org-babel-R-evaluate-session (session body result-type result-params column-names-p row-names-p) "Evaluate BODY in SESSION. @@ -419,24 +430,10 @@ last statement in BODY, as elisp." (org-babel-comint-eval-invisibly-and-wait-for-file session sentinel-file (format -" -tryCatch(.org.eval.result <- evaluate(%S, new_device = FALSE, stop_on_error = 0L), - finally = { - capture.output( - withCallingHandlers( - replay(Filter(function (x) !inherits(x, \"source\"), - .org.eval.result)), - message = function (x) { - cat(x$message); - invokeRestart(\"muffleMessage\") - }), - file=%S) - file.create(%S) - }) -" - (org-babel-chomp body) - output-file - sentinel-file)) + org-babel-R-session-cmd + (org-babel-local-file-name sentinel-file) + (org-babel-local-file-name output-file) + (org-babel-chomp body))) (with-temp-buffer (insert-file-contents output-file) (goto-char (point-min)) -- 1.8.5.2 (Apple Git-48)