forked from mirrors/org-mode
brought in org-babel.org from session
This commit is contained in:
parent
304a59ef1a
commit
9bf504e207
211
org-babel.org
211
org-babel.org
|
@ -1,6 +1,6 @@
|
|||
#+OPTIONS: H:3 num:nil toc:t
|
||||
#+TITLE: org-babel --- facilitating communication between programming languages and people
|
||||
#+SEQ_TODO: TODO PROPOSED | DONE DEFERRED REJECTED
|
||||
#+SEQ_TODO: TODO PROPOSED | DONE DEFERRED REJECTED
|
||||
#+OPTIONS: H:3 num:nil toc:t
|
||||
#+STARTUP: oddeven hideblocks
|
||||
|
||||
* Introduction
|
||||
|
@ -114,8 +114,8 @@ table, allowing the test suite to be run be evaluation of the table
|
|||
and the results to be collected in the same table.
|
||||
|
||||
|
||||
* Tasks [22/39]
|
||||
** TODO Create objects in top level (global) environment [0/6]
|
||||
* Tasks [22/38]
|
||||
** TODO Create objects in top level (global) environment [2/5]
|
||||
*sessions*
|
||||
|
||||
*** initial requirement statement [DED]
|
||||
|
@ -465,39 +465,138 @@ for the execution of source-code blocks.
|
|||
with the results (this implies the *script* =:results=
|
||||
argument as well)
|
||||
|
||||
*** TODO rework evaluation lang-by-lang [0/4]
|
||||
*** DONE rework evaluation lang-by-lang [4/4]
|
||||
|
||||
This should include...
|
||||
- STDOUT and functional results
|
||||
- functional results working with the comint buffer
|
||||
- results headers
|
||||
- script :: return the output of STDOUT
|
||||
- write a macro which runs the first redirection, executes the
|
||||
body, then runs the second redirection
|
||||
- last :: return the value of the last statement
|
||||
-
|
||||
|
||||
- sessions in comint buffers
|
||||
|
||||
**** TODO R
|
||||
**** DONE Ruby [4/4]
|
||||
- [X] functional results working with comint
|
||||
- [X] script results
|
||||
- [X] ensure scalar/vector results args are taken into consideration
|
||||
- [X] ensure callable by other source block
|
||||
|
||||
#+srcname: task-R-with-inf-process-buffer
|
||||
#+begin_src R
|
||||
a <- 8
|
||||
b <- 9
|
||||
c <- 10
|
||||
#+srcname: ruby-use-last-output
|
||||
#+begin_src ruby :results replace
|
||||
a = 2
|
||||
b = 4
|
||||
c = a + b
|
||||
[a, b, c, 78]
|
||||
#+end_src
|
||||
|
||||
#+resname: ruby-use-last-output
|
||||
| 2 | 4 | 6 | 78 |
|
||||
|
||||
#+srcname: task-call-use-last-output
|
||||
#+begin_src ruby :var last=ruby-use-last-output :results replace
|
||||
last.flatten.size + 1
|
||||
#+end_src
|
||||
|
||||
#+resname: task-call-use-last-output
|
||||
: 5
|
||||
|
||||
***** ruby sessions
|
||||
|
||||
#+srcname: first-ruby-session-task
|
||||
#+begin_src ruby :session schulte :results silent
|
||||
schulte = 27
|
||||
#+end_src
|
||||
|
||||
#+srcname: second-ruby-session-task
|
||||
#+begin_src ruby :session schulte :results silent
|
||||
schulte + 3
|
||||
#+end_src
|
||||
|
||||
#+srcname: without-the-right-session
|
||||
#+begin_src ruby :results silent
|
||||
schulte
|
||||
#+end_src
|
||||
|
||||
**** DONE R [4/4]
|
||||
|
||||
- [X] functional results working with comint
|
||||
- [X] script results
|
||||
- [X] ensure scalar/vector results args are taken into consideration
|
||||
- [X] ensure callable by other source block
|
||||
|
||||
To redirect output to a file, you can use the =sink()= command.
|
||||
|
||||
#+srcname: task_R_B
|
||||
#+begin_src R :results value vector silent
|
||||
a <- 9
|
||||
b <- 10
|
||||
b - a
|
||||
a + b
|
||||
#+end_src
|
||||
|
||||
**** TODO Ruby
|
||||
|
||||
#+srcname: ruby-use-last-output
|
||||
#+begin_src ruby
|
||||
a = 1
|
||||
b = 2
|
||||
c = 3
|
||||
(a + b) * c
|
||||
#+srcname: task-R-use-other-output
|
||||
#+begin_src R :var twoentyseven=task_R_B() :results replace value
|
||||
83
|
||||
twoentyseven + 9
|
||||
#+end_src
|
||||
|
||||
**** TODO Python
|
||||
#+resname: task-R-use-other-output
|
||||
: 28
|
||||
|
||||
**** TODO Shells
|
||||
**** DONE Python [4/4]
|
||||
- [X] functional results working with comint
|
||||
- [X] script results
|
||||
- [X] ensure scalar/vector results args are taken into consideration
|
||||
- [X] ensure callable by other source block
|
||||
|
||||
*** TODO implement a *session* header argument
|
||||
#+srcname: task-new-eval-for-python
|
||||
#+begin_src python :results silent output scalar
|
||||
8
|
||||
9
|
||||
10
|
||||
#+end_src
|
||||
|
||||
use this header argument to override the default *session* buffer
|
||||
#+srcname: task-use-new-eval
|
||||
#+begin_src python :var tasking=task-new-eval-for-python() :results replace
|
||||
tasking + 2
|
||||
#+end_src
|
||||
|
||||
#+resname: task-use-new-eval
|
||||
: 12
|
||||
|
||||
**** DONE Shells [4/4]
|
||||
- [X] functional results working with comint
|
||||
- [X] script results
|
||||
- [X] ensure scalar/vector results args are taken into consideration
|
||||
- [X] ensure callable by other source block
|
||||
|
||||
#+srcname: task-shell-new-evaluation
|
||||
#+begin_src sh :results silent value scalar
|
||||
echo 'eric'
|
||||
date
|
||||
#+end_src
|
||||
|
||||
#+srcname: task-call-other-shell
|
||||
#+begin_src sh :var other=task-shell-new-evaluation() :results replace scalar
|
||||
echo $other ' is the old date'
|
||||
#+end_src
|
||||
|
||||
#+resname: task-call-other-shell
|
||||
: $ Fri Jun 12 13:08:37 PDT 2009 is the old date
|
||||
|
||||
*** TODO implement a *session* header argument [0/4]
|
||||
=:session= header argument to override the default *session* buffer
|
||||
|
||||
**** TODO R
|
||||
|
||||
|
||||
|
||||
**** TODO ruby
|
||||
**** TODO python
|
||||
**** TODO shell
|
||||
|
||||
*** TODO function to bring up inferior-process buffer
|
||||
|
||||
|
@ -510,6 +609,37 @@ up the inf-proc buffer using =pop-to-buffer=.
|
|||
Callable with a prefix argument to specify how many lines should be
|
||||
dumped into the source-code buffer.
|
||||
|
||||
*** REJECTED comint notes
|
||||
|
||||
Implementing comint integration in [[file:lisp/org-babel-comint.el][org-babel-comint.el]].
|
||||
|
||||
Need to have...
|
||||
- handling of outputs
|
||||
- split raw output from process by prompts
|
||||
- a ring of the outputs, buffer-local, `org-babel-comint-output-ring'
|
||||
- a switch for dumping all outputs to a buffer
|
||||
- inputting commands
|
||||
|
||||
Lets drop all this language specific stuff, and just use
|
||||
org-babel-comint to split up our outputs, and return either the last
|
||||
value of an execution or the combination of values from the
|
||||
executions.
|
||||
|
||||
**** comint filter functions
|
||||
: ;; comint-input-filter-functions hook process-in-a-buffer
|
||||
: ;; comint-output-filter-functions hook function modes.
|
||||
: ;; comint-preoutput-filter-functions hook
|
||||
: ;; comint-input-filter function ...
|
||||
|
||||
#+srcname: obc-filter-ruby
|
||||
#+begin_src ruby :results last
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
#+end_src
|
||||
|
||||
** TODO support for working with =*Org Edit Src Example*= buffers [1/4]
|
||||
*** TODO set buffer-local-process variables appropriately [DED]
|
||||
I think something like this would be great. You've probably
|
||||
|
@ -647,7 +777,6 @@ waiting for guidance from those more familiar with yasnippets
|
|||
python. I bet ruby does too. Maybe more of an issue for functional
|
||||
style; in my proposed scripting style the error just gets dumped to
|
||||
the org buffer and the user is thus alerted.
|
||||
|
||||
** TODO figure out how to handle graphic output
|
||||
This is listed under [[* graphical output][graphical output]] in out objectives.
|
||||
|
||||
|
@ -890,6 +1019,24 @@ tabel
|
|||
|
||||
Another example is in the [[*operations%20in%20on%20tables][grades example]].
|
||||
|
||||
** PROPOSED Are we happy with current behaviour regarding vector/scalar output?
|
||||
This simple example of multilingual chaining produces vector output if
|
||||
there are spaces in the message and scalar otherwise.
|
||||
|
||||
#+begin_src R :var msg=msg-from-python
|
||||
paste(msg, "und_R", sep="_")
|
||||
#+end_src
|
||||
|
||||
#+srcname: msg-from-python
|
||||
#+begin_src python :var msg=msg-from-elisp
|
||||
msg + "_y_python"
|
||||
#+end_src
|
||||
|
||||
#+srcname: msg-from-elisp
|
||||
#+begin_src emacs-lisp :var msg="org-babel_speaks"
|
||||
(concat msg "_elisp")
|
||||
#+end_src
|
||||
|
||||
** PROPOSED conversion between org-babel and noweb (e.g. .Rnw) format
|
||||
I haven't thought about this properly. Just noting it down. What
|
||||
Sweave uses is called "R noweb" (.Rnw).
|
||||
|
@ -1471,7 +1618,19 @@ This could probably be added to [[file:lisp/org-babel-script.el][org-babel-scrip
|
|||
(see [[* file result types][file result types]])
|
||||
|
||||
|
||||
* Bugs [11/14]
|
||||
* Bugs [11/15]
|
||||
|
||||
** TODO when reading results from =#+resname= line
|
||||
|
||||
Errors when trying to read from resname lines.
|
||||
|
||||
#+resname: bug-in-resname
|
||||
: 8
|
||||
|
||||
#+srcname: bug-in-resname-reader
|
||||
#+begin_src emacs-lisp :var buggy=bug-in-resname() :results silent
|
||||
buggy
|
||||
#+end_src
|
||||
|
||||
** TODO non-orgtbl formatted lists
|
||||
for example
|
||||
|
|
Loading…
Reference in a new issue