|
@@ -365,7 +365,7 @@ last statement in BODY, as elisp."
|
|
|
(defvar ess-eval-visibly-p)
|
|
|
|
|
|
(defun org-babel-R-evaluate-session
|
|
|
- (session body result-type result-params column-names-p row-names-p)
|
|
|
+ (session body result-type result-params column-names-p row-names-p)
|
|
|
"Evaluate BODY in SESSION.
|
|
|
If RESULT-TYPE equals 'output then return standard output as a
|
|
|
string. If RESULT-TYPE equals 'value then return the value of the
|
|
@@ -395,20 +395,23 @@ last statement in BODY, as elisp."
|
|
|
(org-babel-import-elisp-from-file tmp-file '(16)))
|
|
|
column-names-p)))
|
|
|
(output
|
|
|
- (let* ((output-file (org-babel-temp-file "R-"))
|
|
|
- (sentinel-file (concat output-file "-sentinel")))
|
|
|
- (org-babel-comint-eval-invisibly-and-wait-for-file
|
|
|
- session sentinel-file
|
|
|
- (format "capture.output({%s}, file=%S); file.create(%S)"
|
|
|
- (org-babel-chomp body)
|
|
|
- output-file
|
|
|
- sentinel-file))
|
|
|
- (with-temp-buffer
|
|
|
- (insert-file-contents output-file)
|
|
|
- (goto-char (point-min))
|
|
|
- (flush-lines "^$")
|
|
|
- (delete-trailing-whitespace)
|
|
|
- (buffer-string))))))
|
|
|
+ (mapconcat
|
|
|
+ 'org-babel-chomp
|
|
|
+ (butlast
|
|
|
+ (delq nil
|
|
|
+ (mapcar
|
|
|
+ (lambda (line) (when (> (length line) 0) line))
|
|
|
+ (mapcar
|
|
|
+ (lambda (line) ;; cleanup extra prompts left in output
|
|
|
+ (if (string-match
|
|
|
+ "^\\([ ]*[>+\\.][ ]?\\)+\\([[0-9]+\\|[ ]\\)" line)
|
|
|
+ (substring line (match-end 1))
|
|
|
+ line))
|
|
|
+ (org-babel-comint-with-output (session org-babel-R-eoe-output)
|
|
|
+ (insert (mapconcat 'org-babel-chomp
|
|
|
+ (list body org-babel-R-eoe-indicator)
|
|
|
+ "\n"))
|
|
|
+ (inferior-ess-send-input)))))) "\n"))))
|
|
|
|
|
|
(defun org-babel-R-process-value-result (result column-names-p)
|
|
|
"R-specific processing of return value.
|