edit-prep: language specific src-edit buffer preparation, with R session association

* lisp/ob-R.el (org-babel-edit-prep:R): Associate the appropriate R
  process with the edit buffer when :session is specified.

* lisp/org-src.el (org-edit-src-code): Allow language-specific
  edit-buffer preparation by calling the org-babel-edit-prep:lang
  function when it is defined.
This commit is contained in:
Eric Schulte 2011-04-02 11:46:08 -06:00
parent cd4ce49449
commit 30931bfe1d
2 changed files with 11 additions and 1 deletions

View file

@ -51,6 +51,12 @@
(defvar org-babel-R-command "R --slave --no-save"
"Name of command to use for executing R code.")
(defun org-babel-edit-prep:R (info)
(let ((session (cdr (assoc :session (nth 2 info)))))
(when (and session (string-match "^\\*\\(.+?\\)\\*$" session))
(save-match-data (org-babel-R-initiate-session session nil))
(setq ess-local-process-name (match-string 1 session)))))
(defun org-babel-expand-body:R (body params &optional graphics-file)
"Expand BODY according to PARAMS, return the expanded body."
(let ((graphics-file

View file

@ -214,6 +214,7 @@ buffer."
(let ((mark (and (org-region-active-p) (mark)))
(case-fold-search t)
(info (org-edit-src-find-region-and-lang))
(full-info (org-babel-get-src-block-info))
(org-mode-p (or (org-mode-p) (derived-mode-p 'org-mode)))
(beg (make-marker))
(end (make-marker))
@ -323,7 +324,10 @@ buffer."
(org-src-mode)
(set-buffer-modified-p nil)
(and org-edit-src-persistent-message
(org-set-local 'header-line-format msg)))
(org-set-local 'header-line-format msg))
(let ((edit-prep-func (intern (concat "org-babel-edit-prep:" lang))))
(when (fboundp edit-prep-func)
(funcall edit-prep-func full-info))))
t)))
(defun org-edit-src-continue (e)