[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] How to execute org babel src block line by line?
From: |
Xor3 |
Subject: |
[O] How to execute org babel src block line by line? |
Date: |
Mon, 18 Apr 2016 16:44:48 +0800 |
Hi community,
I want to execute org babel src block one line a time.
Here is what I have tried.
I use `isend' to send things to REPL buffer. When "C-<return>" is pressed
at first time, a REPL buffer which is decided by `lang' params is startd.
Then everything send to that buffer. An additional param `:dir' is configured
to decide the starting `default-directry' of the REPL command.
=================================================
(eval-after-load "org"
'(progn
;; ;; (org-defkey org-mode-map (kbd "C-<return>") 'org-isend-send)
(define-key org-mode-map (kbd "C-<return>") 'org-isend-send)
(defun org-isend-send()
(interactive)
(let* ((oldbuf (current-buffer))
(info (org-babel-get-src-block-info))
(lang (nth 0 info))
(body (nth 1 info))
(params (nth 2 info))
(session (cdr (assoc :session params)))
(dir (cdr (assoc :dir params)))
(isend--command-buffer (concat "*" session "*"))
(working-directory
(or (and dir (file-name-as-directory dir))
default-directory)))
(when (not (get-buffer isend--command-buffer))
(cond
((string-equal lang "python") (save-current-buffer
(let ((default-directory
working-directory))
(call-interactively
'run-python)
(with-current-buffer "*Python*"
(rename-buffer
isend--command-buffer)))))
((string-equal lang "sh") (save-current-buffer
(let ((default-directory
working-directory))
(if (string-equal session "eshell")
(eshell)
(progn
(shell)
(with-current-buffer "*shell*"
(rename-buffer
isend--command-buffer)))))))
(t (error "session?")))
(require 'isend)
(require 'isend-mode)
(when (not isend-mode)
(isend-mode 1)
(make-local-variable 'isend-mode-map)
(define-key isend-mode-map (kbd "C-<return>") nil)
(local-set-key (kbd "C-<return>") 'org-isend-send))
(cond
((string-equal lang "python") (isend-ipython-setup))
(t (isend-shell-setup)))
)
;; (display-buffer isend--command-buffer)
(isend-display-buffer)
(call-interactively 'isend-send)
;; (with-current-buffer isend--command-buffer
;; (goto-char (point-max))
;; (comint-send-input)
;; (funcall (key-binding (kbd "RET")))
;; )
))))
========================================
I want to execute my shells/python/ruby scirpts this way by writing out them
first, then `C-<return>' doing the rest.
Does anyone know a better or more native `org' way to do this?
Thank you for your help.
- [O] How to execute org babel src block line by line?,
Xor3 <=