summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Ecay <aaronecay@gmail.com>2013-04-01 01:42:15 -0400
committerEric Schulte <schulte.eric@gmail.com>2013-04-03 09:17:06 -0600
commitfe98647f14064b49d0cbed57e90681ced8f9f34e (patch)
tree1ec085342c58205049f1e587c013cf4a9b9a36f2
parent2f39a704cfc56083ad1568fae9f3a5352145629e (diff)
downloadorg-mode-fe98647f14064b49d0cbed57e90681ced8f9f34e.tar.gz
Fix org-babel-R-initiate-session
* lisp/ob-R.el (org-babel-R-initiate-session): handle case where the session buffer exists, but does not have a live process If the session buffer exists, but the user has exited the R process manually, then the (R) command will create a new buffer, then try to rename it over the old buffer, causing an error. The right thing to do is to start R within the existing buffer.
-rw-r--r--lisp/ob-R.el20
1 files changed, 12 insertions, 8 deletions
diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index 9875f81..de9ec5b 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -209,14 +209,18 @@ This function is called by `org-babel-execute-src-block'."
(if (org-babel-comint-buffer-livep session)
session
(save-window-excursion
- (require 'ess) (R)
- (rename-buffer
- (if (bufferp session)
- (buffer-name session)
- (if (stringp session)
- session
- (buffer-name))))
- (current-buffer))))))
+ (save-excursion
+ (when (get-buffer session)
+ ;; Session buffer exists, but with dead process
+ (set-buffer session))
+ (require 'ess) (R)
+ (rename-buffer
+ (if (bufferp session)
+ (buffer-name session)
+ (if (stringp session)
+ session
+ (buffer-name))))
+ (current-buffer)))))))
(defun org-babel-R-associate-session (session)
"Associate R code buffer with an R session.