emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [Announcement] Org-babel initial release
@ 2009-09-14 13:44 Eric Schulte
  2009-09-15  8:20 ` Carsten Dominik
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Eric Schulte @ 2009-09-14 13:44 UTC (permalink / raw)
  To: Org Mode

Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
has now been released as a contributed package in Org-mode with
corresponding documentation on worg [1].

Org-babel provides the following functionality:
- Source-code execution and control of output in org buffers
  - currently supported languages [2]:
    - emacs-lisp
    - shell scripts
    - R
    - ruby
    - python
    - SQL
    - gnuplot
    - dot
    - ditaa
    - asymptote
    - Haskell
    - OCaml
    - css
    - sass
  - results of code execution can be [3]:
    - passed to other source-code blocks
    - inserted into Org buffer as Org-mode table
    - inserted into Org buffer as escaped text
    - inserted into Org buffer as raw Org-mode text
    - dropped to a file and linked to from Org-mode buffer (e.g. ditaa)
    - ignored
- Meta-programming language for org mode: each source-code block is
  treated as a function which can accept arguments in the form of:
  - entire org-mode tables
  - output of other source-code blocks
  - raw text
  - values of cells in Org-mode tables using the Org spreadsheet
    functionality
- Spreadsheet enhancement: source-code blocks can be called from
  spreadsheet functions within tables
- Community maintained library of useful code blocks [4]
- reproducible research [5]
- literate programming with org-mode [6]
  - Org-babel has special support for embedding your emacs
    initialization in literate Org-mode files [7]

To activate Org-babel simply grab the latest version of Org-mode and add
the following to your Emacs init (more complete instructions at [8]).

(require 'org-babel-init)

Thanks -- Eric

Footnotes: 
[1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php

[2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages

[3]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#header-arguments

[4]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#library-of-babel

[5]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#reproducable-research

[6]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-programming

[7]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-emacs-initialization

[8]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#getting-started

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-14 13:44 [Announcement] Org-babel initial release Eric Schulte
@ 2009-09-15  8:20 ` Carsten Dominik
  2009-09-15 13:31 ` Miguel Fernando Cabrera
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Carsten Dominik @ 2009-09-15  8:20 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode

Hi Eric,

thank you very much for this fantastic contribution to Org.

- Carsten

On Sep 14, 2009, at 2:44 PM, Eric Schulte wrote:

> Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
> has now been released as a contributed package in Org-mode with
> corresponding documentation on worg [1].
>
> Org-babel provides the following functionality:
> - Source-code execution and control of output in org buffers
> - currently supported languages [2]:
>   - emacs-lisp
>   - shell scripts
>   - R
>   - ruby
>   - python
>   - SQL
>   - gnuplot
>   - dot
>   - ditaa
>   - asymptote
>   - Haskell
>   - OCaml
>   - css
>   - sass
> - results of code execution can be [3]:
>   - passed to other source-code blocks
>   - inserted into Org buffer as Org-mode table
>   - inserted into Org buffer as escaped text
>   - inserted into Org buffer as raw Org-mode text
>   - dropped to a file and linked to from Org-mode buffer (e.g. ditaa)
>   - ignored
> - Meta-programming language for org mode: each source-code block is
> treated as a function which can accept arguments in the form of:
> - entire org-mode tables
> - output of other source-code blocks
> - raw text
> - values of cells in Org-mode tables using the Org spreadsheet
>   functionality
> - Spreadsheet enhancement: source-code blocks can be called from
> spreadsheet functions within tables
> - Community maintained library of useful code blocks [4]
> - reproducible research [5]
> - literate programming with org-mode [6]
> - Org-babel has special support for embedding your emacs
>   initialization in literate Org-mode files [7]
>
> To activate Org-babel simply grab the latest version of Org-mode and  
> add
> the following to your Emacs init (more complete instructions at [8]).
>
> (require 'org-babel-init)
>
> Thanks -- Eric
>
> Footnotes:
> [1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php
>
> [2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages
>
> [3]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#header-arguments
>
> [4]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#library-of-babel
>
> [5]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#reproducable-research
>
> [6]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-programming
>
> [7]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-emacs-initialization
>
> [8]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#getting-started
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-14 13:44 [Announcement] Org-babel initial release Eric Schulte
  2009-09-15  8:20 ` Carsten Dominik
@ 2009-09-15 13:31 ` Miguel Fernando Cabrera
  2009-09-15 14:49   ` Eric Schulte
  2009-09-15 17:26 ` Sebastian Rose
  2009-10-09 12:54 ` Org-babel for jython? Eric S Fraga
  3 siblings, 1 reply; 16+ messages in thread
From: Miguel Fernando Cabrera @ 2009-09-15 13:31 UTC (permalink / raw)
  To: Org Mode


[-- Attachment #1.1: Type: text/plain, Size: 3340 bytes --]

Dan and Eric,

Just reading the documentation one can get excited by the possibilities it
brings to org-mode.
Thank you for this great contribution.

I have one question, as mentioned in the document on can pass a table to the
code block. Is possible to send a  as a parameter a dynamic clock table?.
For example to create a pie-chart of the clock-table data using R?



-- 
Miguel Fernando Cabrera
<http://mfcabrera.com/>"A los hombres fuertes les pasa lo que a los
barriletes; se elevan cuando es
mayor el viento que se opone a su ascenso." - José Ingenieros



On Mon, Sep 14, 2009 at 8:44 AM, Eric Schulte <schulte.eric@gmail.com>wrote:

> Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
> has now been released as a contributed package in Org-mode with
> corresponding documentation on worg [1].
>
> Org-babel provides the following functionality:
> - Source-code execution and control of output in org buffers
>  - currently supported languages [2]:
>    - emacs-lisp
>    - shell scripts
>    - R
>    - ruby
>    - python
>    - SQL
>    - gnuplot
>    - dot
>    - ditaa
>    - asymptote
>    - Haskell
>    - OCaml
>    - css
>    - sass
>  - results of code execution can be [3]:
>    - passed to other source-code blocks
>    - inserted into Org buffer as Org-mode table
>    - inserted into Org buffer as escaped text
>    - inserted into Org buffer as raw Org-mode text
>    - dropped to a file and linked to from Org-mode buffer (e.g. ditaa)
>    - ignored
> - Meta-programming language for org mode: each source-code block is
>  treated as a function which can accept arguments in the form of:
>  - entire org-mode tables
>  - output of other source-code blocks
>  - raw text
>  - values of cells in Org-mode tables using the Org spreadsheet
>    functionality
> - Spreadsheet enhancement: source-code blocks can be called from
>  spreadsheet functions within tables
> - Community maintained library of useful code blocks [4]
> - reproducible research [5]
> - literate programming with org-mode [6]
>  - Org-babel has special support for embedding your emacs
>    initialization in literate Org-mode files [7]
>
> To activate Org-babel simply grab the latest version of Org-mode and add
> the following to your Emacs init (more complete instructions at [8]).
>
> (require 'org-babel-init)
>
> Thanks -- Eric
>
> Footnotes:
> [1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php
>
> [2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages
>
> [3]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#header-arguments
>
> [4]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#library-of-babel
>
> [5]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#reproducable-research
>
> [6]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-programming
>
> [7]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-emacs-initialization
>
> [8]
> http://orgmode.org/worg/org-contrib/babel/org-babel.php#getting-started
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>

[-- Attachment #1.2: Type: text/html, Size: 4851 bytes --]

[-- Attachment #2: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 13:31 ` Miguel Fernando Cabrera
@ 2009-09-15 14:49   ` Eric Schulte
  2009-09-15 15:10     ` Eric Schulte
  0 siblings, 1 reply; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 14:49 UTC (permalink / raw)
  To: Miguel Fernando Cabrera; +Cc: Org Mode

Hi Miguel,

This feature is currently not implemented, however I will take a look at
including it.  For such a feature to work you would have to add a name
to your dynamic clock table, something like...

#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t :name todays-clock
#+END: clocktable

I'll let you know if I get this working. -- Eric

Miguel Fernando Cabrera <mfcabrera@gmail.com> writes:

> Dan and Eric,
>
> Just reading the documentation one can get excited by the possibilities it brings to org-mode.
> Thank you for this great contribution.
>
> I have one question, as mentioned in the document on can pass a table to the code block. Is possible
> to send a  as a parameter a dynamic clock table?. For example to create a pie-chart of the
> clock-table data using R?
>
> --
> Miguel Fernando Cabrera
> "A los hombres fuertes les pasa lo que a los barriletes; se elevan cuando es
> mayor el viento que se opone a su ascenso." - José Ingenieros
>
> On Mon, Sep 14, 2009 at 8:44 AM, Eric Schulte <schulte.eric@gmail.com> wrote:
>
>     Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
>     has now been released as a contributed package in Org-mode with
>     corresponding documentation on worg [1].
>    
>     Org-babel provides the following functionality:
>     - Source-code execution and control of output in org buffers
>      - currently supported languages [2]:
>        - emacs-lisp
>        - shell scripts
>        - R
>        - ruby
>        - python
>        - SQL
>        - gnuplot
>        - dot
>        - ditaa
>        - asymptote
>        - Haskell
>        - OCaml
>        - css
>        - sass
>      - results of code execution can be [3]:
>        - passed to other source-code blocks
>        - inserted into Org buffer as Org-mode table
>        - inserted into Org buffer as escaped text
>        - inserted into Org buffer as raw Org-mode text
>        - dropped to a file and linked to from Org-mode buffer (e.g. ditaa)
>        - ignored
>     - Meta-programming language for org mode: each source-code block is
>      treated as a function which can accept arguments in the form of:
>      - entire org-mode tables
>      - output of other source-code blocks
>      - raw text
>      - values of cells in Org-mode tables using the Org spreadsheet
>        functionality
>     - Spreadsheet enhancement: source-code blocks can be called from
>      spreadsheet functions within tables
>     - Community maintained library of useful code blocks [4]
>     - reproducible research [5]
>     - literate programming with org-mode [6]
>      - Org-babel has special support for embedding your emacs
>        initialization in literate Org-mode files [7]
>    
>     To activate Org-babel simply grab the latest version of Org-mode and add
>     the following to your Emacs init (more complete instructions at [8]).
>    
>     (require 'org-babel-init)
>    
>     Thanks -- Eric
>    
>     Footnotes:
>     [1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php
>    
>     [2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages
>    
>     [3]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#header-arguments
>    
>     [4]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#library-of-babel
>    
>     [5]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#reproducable-research
>    
>     [6]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-programming
>    
>     [7]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#literate-emacs-initialization
>    
>     [8]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#getting-started
>
>     _______________________________________________
>     Emacs-orgmode mailing list
>     Remember: use `Reply All' to send replies to the list.
>     Emacs-orgmode@gnu.org
>     http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 14:49   ` Eric Schulte
@ 2009-09-15 15:10     ` Eric Schulte
  0 siblings, 0 replies; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 15:10 UTC (permalink / raw)
  To: Miguel Fernando Cabrera; +Cc: Org Mode

Hi Miguel,

It seems I spoke too soon, It looks like the current version of
Org-babel will support dynamic clock tables if they are structured as
the following with a #+tblname: line preceding the block.

--8<---------------cut here---------------start------------->8---
#+TBLNAME: todays-clock
#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
Clock summary at [2009-09-15 Tue 08:51], for Tuesday, September 15, 2009.

| L | Headline     | Time   |      |
|---+--------------+--------+------|
|   | *Total time* | *1:10* |      |
|---+--------------+--------+------|
| 1 | top          | 1:10   |      |
| 2 | show all     |        | 1:00 |
| 2 | later        |        | 0:10 |
#+END: clocktable

#+begin_src emacs-lisp :var data=todays-clock
(length (car data))
#+end_src

#+resname:
: 4

#+begin_src emacs-lisp :var data=todays-clock
(length data)
#+end_src

#+resname:
: 4
--8<---------------cut here---------------end--------------->8---

Unfortunately I don't know much about R, so converting the times to
something easily graphed in a pie chart may be a little bit more
difficult.

Best -- Eric

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-14 13:44 [Announcement] Org-babel initial release Eric Schulte
  2009-09-15  8:20 ` Carsten Dominik
  2009-09-15 13:31 ` Miguel Fernando Cabrera
@ 2009-09-15 17:26 ` Sebastian Rose
  2009-09-15 17:54   ` Eric Schulte
  2009-09-15 17:56   ` Rick Moynihan
  2009-10-09 12:54 ` Org-babel for jython? Eric S Fraga
  3 siblings, 2 replies; 16+ messages in thread
From: Sebastian Rose @ 2009-09-15 17:26 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode

"Eric Schulte" <schulte.eric@gmail.com> writes:
> Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
> has now been released as a contributed package in Org-mode with
> corresponding documentation on worg [1].


What else should I say - THIS IS GREAT NEWS!!



I wonder how complicated it would be to add more languages. Especially
PHP, JavaScript (e.g. per rhino) and Perl.

Is there some documentation or advice on the net in that concern? I'd
like to add a language I understand besides Bash... :)

Hmmm - maybe `org-babel-sh.el' is a good starting point.





* Some thoughts


I actually wonder, if all those interpreted languages are different at
all. Why not add an generic call to interpreters. Executing Shell
scripts or Perl, Php, JavaScript... makes no big difference here. On
Linux at least, they all work with either shebang or called with OPTION
FILENAME.

To execute a temporary file without shebang, all interpreters take a
filename:

rhino -f FILE  # -f is optional
php   -f FILE  # -f is optional
perl     FILE

Or execute code directly (which is useless for us, since we would need
to quote the code correctly...):

rhino -e  CODE...
perl  -e  CODE...
php   -r  CODE...


So how about:

  #+srcname: generic-circumference(a)
  #+begin_src javascript :interpreter rhino -f

  print ( "Write me to temp file and call `rhino -f TMPFILE'" )
  java.lang.System.out.println ( 2 * a * java.lang.Math.PI )

  #+end_src

This way, a source block written on my Linux-System would execute on her
MAC and his Windows machine without change (provided the interpreter is
installed and in $PATH... `org-program-exists' ... to use interpreters
without having them in $PATH, a customizable map could be used).






BTW: I just discovered rhino - looks interesting, seems you can
(de-)serialize Java(Script) objects... and thus keep track of things
between sessions ;) start programs, call Java Methods...  See
https://developer.mozilla.org/en/Rhino_Shell



Best wishes,

  Sebastian

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 17:26 ` Sebastian Rose
@ 2009-09-15 17:54   ` Eric Schulte
  2009-09-15 19:15     ` Sebastian Rose
  2009-09-15 17:56   ` Rick Moynihan
  1 sibling, 1 reply; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 17:54 UTC (permalink / raw)
  To: Sebastian Rose; +Cc: Org Mode

Hi Sebastian,

Sebastian Rose <sebastian_rose@gmx.de> writes:

> "Eric Schulte" <schulte.eric@gmail.com> writes:
>> Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
>> has now been released as a contributed package in Org-mode with
>> corresponding documentation on worg [1].
>
>
> What else should I say - THIS IS GREAT NEWS!!
>

Thanks, I hope fellow Orgers find it useful

>
> I wonder how complicated it would be to add more languages. Especially
> PHP, JavaScript (e.g. per rhino) and Perl.
>

Yes, I must admit the current set of implemented language is very
specific to Dan and my personal needs.  I really hope that other people
add the languages they need/use, and I tried to design the structure of
org-babel to make the addition of new languages as painless as possible.

>
> Is there some documentation or advice on the net in that concern? I'd
> like to add a language I understand besides Bash... :)
>
> Hmmm - maybe `org-babel-sh.el' is a good starting point.
>

Yes, currently the best way to get a feel for how to add languages would
be to start with an existing language file (I'd suggest
org-babel-python.el or org-babel-ruby.el, or for simpler less
comprehensive language support look at org-babel-ditaa or
org-babel-haskell) and make changes from there.  I agree that a brief
tutorial for adding language support would be helpful.

Basically Org-babel expects any new language file to define two
functions...

- org-babel-execute:lang-name (body params) :: which executes the code
     in body according to the header arguments in params, and

- org-babel-prep-session:ruby (session params) :: which starts an
     interactive session in session setting any variables from params

>
> * Some thoughts
>
>
> I actually wonder, if all those interpreted languages are different at
> all. Why not add an generic call to interpreters. Executing Shell
> scripts or Perl, Php, JavaScript... makes no big difference here. On
> Linux at least, they all work with either shebang or called with OPTION
> FILENAME.
>

There are two key language specific features which keep us from treating
all interpreted languages identically.
1) Org-babel collects the last value of a source-code block to be
   returned (see [1]) and this value needs to be collected and
   potentially converted into elisp in a language specific manner
2) Org-babel has support for evaluation in a session allowing
   persistence of state between different blocks which use the same
   session.  I now notice that the :session header argument is not
   currently documented on the Worg page.  I'll try to add this
   documentation soon.  The sessions are handled through Emacs comint
   buffers which are very language specific.

>
> To execute a temporary file without shebang, all interpreters take a
> filename:
>
> rhino -f FILE  # -f is optional
> php   -f FILE  # -f is optional
> perl     FILE
>
> Or execute code directly (which is useless for us, since we would need
> to quote the code correctly...):
>
> rhino -e  CODE...
> perl  -e  CODE...
> php   -r  CODE...
>

I agree that it would be possible to implement a much more general
code-evaluation mechanism based on execution of temporary files, but we
would lose the nice features mentioned above.

>
>
> So how about:
>
>   #+srcname: generic-circumference(a)
>   #+begin_src javascript :interpreter rhino -f
>
>   print ( "Write me to temp file and call `rhino -f TMPFILE'" )
>   java.lang.System.out.println ( 2 * a * java.lang.Math.PI )
>
>   #+end_src
>
> This way, a source block written on my Linux-System would execute on her
> MAC and his Windows machine without change (provided the interpreter is
> installed and in $PATH... `org-program-exists' ... to use interpreters
> without having them in $PATH, a customizable map could be used).
>

Under the current setup, all source-code blocks should be executable on
*any* system which supports the required language and Emacs modes
mentioned in the commented elisp block at [2]

Best -- Eric

>
>
>
>
>
>
> BTW: I just discovered rhino - looks interesting, seems you can
> (de-)serialize Java(Script) objects... and thus keep track of things
> between sessions ;) start programs, call Java Methods...  See
> https://developer.mozilla.org/en/Rhino_Shell
>
>
>
> Best wishes,
>
>   Sebastian

Footnotes: 
[1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#results

[2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 17:26 ` Sebastian Rose
  2009-09-15 17:54   ` Eric Schulte
@ 2009-09-15 17:56   ` Rick Moynihan
  2009-09-15 20:07     ` Eric Schulte
  2009-09-15 22:02     ` Eric Schulte
  1 sibling, 2 replies; 16+ messages in thread
From: Rick Moynihan @ 2009-09-15 17:56 UTC (permalink / raw)
  To: Sebastian Rose; +Cc: Org Mode

Reply below:

2009/9/15 Sebastian Rose <sebastian_rose@gmx.de>:
>
> * Some thoughts
>
>
> I actually wonder, if all those interpreted languages are different at
> all. Why not add an generic call to interpreters. Executing Shell
> scripts or Perl, Php, JavaScript... makes no big difference here. On
> Linux at least, they all work with either shebang or called with OPTION
> FILENAME.
>
> To execute a temporary file without shebang, all interpreters take a
> filename:
>
> rhino -f FILE  # -f is optional
> php   -f FILE  # -f is optional
> perl     FILE
>
> Or execute code directly (which is useless for us, since we would need
> to quote the code correctly...):
>
> rhino -e  CODE...
> perl  -e  CODE...
> php   -r  CODE...
>
>
> So how about:
>
>  #+srcname: generic-circumference(a)
>  #+begin_src javascript :interpreter rhino -f
>
>  print ( "Write me to temp file and call `rhino -f TMPFILE'" )
>  java.lang.System.out.println ( 2 * a * java.lang.Math.PI )
>
>  #+end_src
>
> This way, a source block written on my Linux-System would execute on her
> MAC and his Windows machine without change (provided the interpreter is
> installed and in $PATH... `org-program-exists' ... to use interpreters
> without having them in $PATH, a customizable map could be used).
>

Was having a similar idea, as I language I'd love to use with this is
my current fave clojure:

http://clojure.org/

It's a language based on the JVM and consequently being able to pass
in command line options to the interpreter is important...  I'd
imagine most of the time the source blocks within a single file would
share the vast majority of environment settings too (for example
setting the JVM's class path) so being able to specify these values to
pass to the interpreter, once at the top of the file would be really
nice.

R.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 17:54   ` Eric Schulte
@ 2009-09-15 19:15     ` Sebastian Rose
  2009-09-15 20:03       ` Eric Schulte
  0 siblings, 1 reply; 16+ messages in thread
From: Sebastian Rose @ 2009-09-15 19:15 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode

"Eric Schulte" <schulte.eric@gmail.com> writes:
> Thanks, I hope fellow Orgers find it useful


Sure they do!

Make Emacs+Org-mode the `killer-application' :)


>> I wonder how complicated it would be to add more languages. Especially
>> PHP, JavaScript (e.g. per rhino) and Perl.
...

>> Hmmm - maybe `org-babel-sh.el' is a good starting point.
>>
>
> Yes, currently the best way to get a feel for how to add languages would
> be to start with an existing language file (I'd suggest
> org-babel-python.el or org-babel-ruby.el, or for simpler less
> comprehensive language support look at org-babel-ditaa or
> org-babel-haskell) and make changes from there.  I agree that a brief
> tutorial for adding language support would be helpful.


A skeleton maybe?
And just a few comments describing the I/O of the basic functions
(and/or the global vars/containers that take the results).


> Basically Org-babel expects any new language file to define two
> functions...
>
> - org-babel-execute:lang-name (body params) :: which executes the code
>      in body according to the header arguments in params, and
>
> - org-babel-prep-session:ruby (session params) :: which starts an
>      interactive session in session setting any variables from params


OK. I'll look at those...



> There are two key language specific features which keep us from treating
> all interpreted languages identically.
> 1) Org-babel collects the last value of a source-code block to be
>    returned (see [1]) and this value needs to be collected and
>    potentially converted into elisp in a language specific manner
> 2) Org-babel has support for evaluation in a session allowing
>    persistence of state between different blocks which use the same
>    session.  I now notice that the :session header argument is not
>    currently documented on the Worg page.  I'll try to add this
>    documentation soon.  The sessions are handled through Emacs comint
>    buffers which are very language specific.


Ahhh, I now comprehend.  You're library makes all kinds of source blocks
work together as  a whole. Great! I now  understand your intention! Make
that old  joke become true:  "Emacs is a  great OS, it's just  missing a
good editor" :-D
   ..... Nachtigall ick hör dir trappsen ...


Seriously: There's not that much code to write in the language
files. The features seem more than worth it. I just had little snippets
in mind... hrm, sorry.




> Footnotes: 
> [1]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#results
>
> [2]  http://orgmode.org/worg/org-contrib/babel/org-babel.php#languages

OK - not _really_ RTFM :-D

I remember I stared at those sections last night - seems I was half
asleep already.




Best wishes


   Sebastian

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 19:15     ` Sebastian Rose
@ 2009-09-15 20:03       ` Eric Schulte
  2009-09-15 20:53         ` Sebastian Rose
  0 siblings, 1 reply; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 20:03 UTC (permalink / raw)
  To: Sebastian Rose; +Cc: Org Mode

[-- Attachment #1: Type: text/plain, Size: 961 bytes --]

Sebastian Rose <sebastian_rose@gmx.de> writes:

> "Eric Schulte" <schulte.eric@gmail.com> writes:

>>
>> Yes, currently the best way to get a feel for how to add languages would
>> be to start with an existing language file (I'd suggest
>> org-babel-python.el or org-babel-ruby.el, or for simpler less
>> comprehensive language support look at org-babel-ditaa or
>> org-babel-haskell) and make changes from there.  I agree that a brief
>> tutorial for adding language support would be helpful.
>
>
> A skeleton maybe?
> And just a few comments describing the I/O of the basic functions
> (and/or the global vars/containers that take the results).
>
>

Good idea, I'm attaching an org-babel-template.el file which tries to be
just that.  I'd be interested to hear how it works for you, or if you
want to make any changes.  Once there is a good version maybe it would
be a good thing to either add to the babel/lisp/langs directory, or at
least to post on Worg.


[-- Attachment #2: org-babel-template.el --]
[-- Type: application/emacs-lisp, Size: 5549 bytes --]

[-- Attachment #3: Type: text/plain, Size: 1218 bytes --]



>> There are two key language specific features which keep us from treating
>> all interpreted languages identically.
>> 1) Org-babel collects the last value of a source-code block to be
>>    returned (see [1]) and this value needs to be collected and
>>    potentially converted into elisp in a language specific manner
>> 2) Org-babel has support for evaluation in a session allowing
>>    persistence of state between different blocks which use the same
>>    session.  I now notice that the :session header argument is not
>>    currently documented on the Worg page.  I'll try to add this
>>    documentation soon.  The sessions are handled through Emacs comint
>>    buffers which are very language specific.
>
>
> Ahhh, I now comprehend.  You're library makes all kinds of source blocks
> work together as  a whole. Great! I now  understand your intention! Make
> that old  joke become true:  "Emacs is a  great OS, it's just  missing a
> good editor" :-D
>    ..... Nachtigall ick hör dir trappsen ...
>

:)

heh, I hadn't thought of it that way, but yea, the idea is to allow
different languages to interact all using emacs-lisp as the
lower-common-denominator.

Best -- Eric

[-- Attachment #4: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 17:56   ` Rick Moynihan
@ 2009-09-15 20:07     ` Eric Schulte
  2009-09-15 22:02     ` Eric Schulte
  1 sibling, 0 replies; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 20:07 UTC (permalink / raw)
  To: Rick Moynihan; +Cc: Org Mode

Rick Moynihan <rick.moynihan@gmail.com> writes:

>
> Was having a similar idea, as I language I'd love to use with this is
> my current fave clojure:
>
> http://clojure.org/
>

Everyone I talk to seems to love clojure, I need to find an excuse to
use it myself.

>
> It's a language based on the JVM and consequently being able to pass
> in command line options to the interpreter is important...  I'd
> imagine most of the time the source blocks within a single file would
> share the vast majority of environment settings too (for example
> setting the JVM's class path) so being able to specify these values to
> pass to the interpreter, once at the top of the file would be really
> nice.
>

This should be easily implemented using a new header argument (languages
are free to define new header arguments as they see fit).  For an
example of a language passing command line options through header
arguments, see the org-babel-ditaa.el file which defines a :cmdline
header argument allowing arguments to be passed to the ditaa command as
in the example below where the -r and -S options are passed to the ditaa
command.

--8<---------------cut here---------------start------------->8---
#+begin_src ditaa :file blue.png :cmdline -r -S
+---------+
| cBLU    |
|         |
|    +----+
|    |cPNK|
|    |    |
+----+----+
#+end_src
--8<---------------cut here---------------end--------------->8---

Cheers -- Eric

>
> R.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 20:03       ` Eric Schulte
@ 2009-09-15 20:53         ` Sebastian Rose
  0 siblings, 0 replies; 16+ messages in thread
From: Sebastian Rose @ 2009-09-15 20:53 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode

"Eric Schulte" <schulte.eric@gmail.com> writes:
> Sebastian Rose <sebastian_rose@gmx.de> writes:
>
>> "Eric Schulte" <schulte.eric@gmail.com> writes:
>
>>>
>>> Yes, currently the best way to get a feel for how to add languages would
>>> be to start with an existing language file (I'd suggest
>>> org-babel-python.el or org-babel-ruby.el, or for simpler less
>>> comprehensive language support look at org-babel-ditaa or
>>> org-babel-haskell) and make changes from there.  I agree that a brief
>>> tutorial for adding language support would be helpful.
>>
>>
>> A skeleton maybe?
>> And just a few comments describing the I/O of the basic functions
>> (and/or the global vars/containers that take the results).
>>
>>
>
> Good idea, I'm attaching an org-babel-template.el file which tries to be
> just that.  I'd be interested to hear how it works for you, or if you
> want to make any changes.  Once there is a good version maybe it would
> be a good thing to either add to the babel/lisp/langs directory, or at
> least to post on Worg.


Ahhh - now that I get simple output from PHP...
simple already worked for my, by taking the org-babel-python.el,
replacing org-babel-python-evaluate by org-babel-sh-evaluate and replace
all `python' and `sh' by `php'.

(OK - and wrap the `full-body' into `<?php ' and ' ?>').

But then I screwed it up by replacing the modified org-babel-sh-evaluate
by the  org-babel-python-evaluate function again - now I don't get the
results out... but I'm on the track.



OK - I'll try the template. I need to understand the whole thing anyway
:)


Best wishes

  Sebastian

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 17:56   ` Rick Moynihan
  2009-09-15 20:07     ` Eric Schulte
@ 2009-09-15 22:02     ` Eric Schulte
  2009-10-09 16:38       ` Marcelo de Moraes Serpa
  1 sibling, 1 reply; 16+ messages in thread
From: Eric Schulte @ 2009-09-15 22:02 UTC (permalink / raw)
  To: Rick Moynihan; +Cc: Org Mode

Rick Moynihan <rick.moynihan@gmail.com> writes:

> I'd imagine most of the time the source blocks within a single file
> would share the vast majority of environment settings too (for example
> setting the JVM's class path) so being able to specify these values to
> pass to the interpreter, once at the top of the file would be really
> nice.
>

I addressed the "passing command line" portion of your comment earlier
but neglected the "setting file-wide header arguments" portion.

RE: "setting file-wide header arguments"

it is now possible to set header arguments for subtrees of a file using
properties, for example the following will have :results silent set for
all of it's code blocks.

* silent
  :PROPERTIES:
  :results:  silent
  :END:

I agree file-wide settings would be useful, but they are not yet
implemented.

Best -- Eric

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Org-babel for jython?
  2009-09-14 13:44 [Announcement] Org-babel initial release Eric Schulte
                   ` (2 preceding siblings ...)
  2009-09-15 17:26 ` Sebastian Rose
@ 2009-10-09 12:54 ` Eric S Fraga
  2009-10-09 15:34   ` Dan Davison
  3 siblings, 1 reply; 16+ messages in thread
From: Eric S Fraga @ 2009-10-09 12:54 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode

At Mon, 14 Sep 2009 07:44:57 -0600,
Eric Schulte wrote:
> 
> Dan Davison and I (Eric Schulte) are happy to announce that Org-babel
> has now been released as a contributed package in Org-mode with
> corresponding documentation on worg [1].
> 
> Org-babel provides the following functionality:
> - Source-code execution and control of output in org buffers
>   - currently supported languages [2]:
>     - emacs-lisp
>     - shell scripts
>     - R
>     - ruby
>     - python

Eric et al.,

any chance of creating a jython interface?  Or has anybody else done
this already?  

I've tried creating one from your org-babel-python.el file by changing
all occurrences of python to jython (bar one: the run-python command
as that actually does run jython automatically, much to my surprise!).
That works for single shot executions.  It does not work for sessions
and I really don't know where to start looking...  Any pointers or
suggestions more than welcome, of course.

What I've done may work for (un?)-tangled code but haven't tried yet.

Thanks,
eric

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: Org-babel for jython?
  2009-10-09 12:54 ` Org-babel for jython? Eric S Fraga
@ 2009-10-09 15:34   ` Dan Davison
  0 siblings, 0 replies; 16+ messages in thread
From: Dan Davison @ 2009-10-09 15:34 UTC (permalink / raw)
  To: Eric S Fraga; +Cc: Org Mode

Eric S Fraga <ucecesf@ucl.ac.uk> writes:

> Eric et al.,
>
> any chance of creating a jython interface?  Or has anybody else done
> this already?  
>
> I've tried creating one from your org-babel-python.el file by changing
> all occurrences of python to jython (bar one: the run-python command
> as that actually does run jython automatically, much to my surprise!).

Hi Eric,

Would you like to put your jython work so far in a public git branch,
for example (pending responses to my excellent suggestion the other
day...)

http://repo.or.cz/w/org-mode/babel.git [normal webpage; not a git url]

That way we can all have a go at it when time permits. If you email me
offline I can send you the admin password to give yourself push
permission.

Dan

> That works for single shot executions.  It does not work for sessions
> and I really don't know where to start looking...  Any pointers or
> suggestions more than welcome, of course.
>
> What I've done may work for (un?)-tangled code but haven't tried yet.
>
> Thanks,
> eric
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Announcement] Org-babel initial release
  2009-09-15 22:02     ` Eric Schulte
@ 2009-10-09 16:38       ` Marcelo de Moraes Serpa
  0 siblings, 0 replies; 16+ messages in thread
From: Marcelo de Moraes Serpa @ 2009-10-09 16:38 UTC (permalink / raw)
  To: Eric Schulte; +Cc: Org Mode


[-- Attachment #1.1: Type: text/plain, Size: 1435 bytes --]

That's awesome news! Thank you for this great contribution. Now I can use my
beloved ruby to write view-extensions to my org PIM :D (even though I'm very
interested in learning elisp, but this makes things much more practical and
powerful!).

Marcelo.

On Tue, Sep 15, 2009 at 5:02 PM, Eric Schulte <schulte.eric@gmail.com>wrote:

> Rick Moynihan <rick.moynihan@gmail.com> writes:
>
> > I'd imagine most of the time the source blocks within a single file
> > would share the vast majority of environment settings too (for example
> > setting the JVM's class path) so being able to specify these values to
> > pass to the interpreter, once at the top of the file would be really
> > nice.
> >
>
> I addressed the "passing command line" portion of your comment earlier
> but neglected the "setting file-wide header arguments" portion.
>
> RE: "setting file-wide header arguments"
>
> it is now possible to set header arguments for subtrees of a file using
> properties, for example the following will have :results silent set for
> all of it's code blocks.
>
> * silent
>  :PROPERTIES:
>  :results:  silent
>  :END:
>
> I agree file-wide settings would be useful, but they are not yet
> implemented.
>
> Best -- Eric
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>

[-- Attachment #1.2: Type: text/html, Size: 2154 bytes --]

[-- Attachment #2: Type: text/plain, Size: 204 bytes --]

_______________________________________________
Emacs-orgmode mailing list
Remember: use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2009-10-09 16:38 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-14 13:44 [Announcement] Org-babel initial release Eric Schulte
2009-09-15  8:20 ` Carsten Dominik
2009-09-15 13:31 ` Miguel Fernando Cabrera
2009-09-15 14:49   ` Eric Schulte
2009-09-15 15:10     ` Eric Schulte
2009-09-15 17:26 ` Sebastian Rose
2009-09-15 17:54   ` Eric Schulte
2009-09-15 19:15     ` Sebastian Rose
2009-09-15 20:03       ` Eric Schulte
2009-09-15 20:53         ` Sebastian Rose
2009-09-15 17:56   ` Rick Moynihan
2009-09-15 20:07     ` Eric Schulte
2009-09-15 22:02     ` Eric Schulte
2009-10-09 16:38       ` Marcelo de Moraes Serpa
2009-10-09 12:54 ` Org-babel for jython? Eric S Fraga
2009-10-09 15:34   ` Dan Davison

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).