Function: org-babel-R-initiate-session

org-babel-R-initiate-session is a byte-compiled function defined in ob-R.el.gz.

Signature

(org-babel-R-initiate-session SESSION PARAMS)

Documentation

Create or return the current R SESSION buffer.

Source Code

;; Defined in /usr/src/emacs/lisp/org/ob-R.el.gz
(defun org-babel-R-initiate-session (session _params)
  "Create or return the current R SESSION buffer."
  (unless (string= session "none")
    (let* ((session (or session "*R*"))
           ;; Force using `default-directory', as we promise in the
           ;; manual.  The caller should have taken care about setting
           ;; it according to :dir if necessary.
           ;; https://ess.r-project.org/Manual/ess.html#Changing-the-startup-actions
	   (ess-ask-for-ess-directory nil)
           (ess-directory-function nil)
           (ess-directory nil)
           ;; Make ESS name the process buffer as SESSION.
           (ess-gen-proc-buffer-name-function
            (lambda (_) session)))
      (if (org-babel-comint-buffer-livep session)
	  session
	(save-window-excursion
	  (when (get-buffer session)
	    ;; Session buffer exists, but with dead process
	    (set-buffer session))
          (org-require-package 'ess-r-mode "ESS")
          (set-buffer (run-ess-r))
	  (let ((R-proc (get-process (or ess-local-process-name
					 ess-current-process-name))))
	    (while (process-get R-proc 'callbacks)
	      (ess-wait-for-process R-proc)))
	  (current-buffer))))))