emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* What's up with ob-template.el? It seems heavily outdated
@ 2021-05-21 13:33 dalanicolai
  2021-05-21 13:50 ` Pedro Bruel
  2021-09-25 14:19 ` Bastien
  0 siblings, 2 replies; 8+ messages in thread
From: dalanicolai @ 2021-05-21 13:33 UTC (permalink / raw)
  To: emacs-orgmode

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

I am trying to improve org-babel support for maxima.
However, when starting from ob-template.el
<https://code.orgmode.org/bzg/worg/raw/master/org-contrib/babel/ob-template.el>,
which is advised in the section "develop support for new languages" in
the org-mode
docs <https://orgmode.org/worg/org-contrib/babel/languages/index.html>, it
seems that the code within that template file is heavily incorrect.

I can write a whole list with "bugs", but it already starts with most of
the params in the `org-babel-execute` function getting processed
incorrectly.

So I am wondering, am I missing something here? Or is this documentation
just heavily outdated?

Would you be interested in some updated ob-template.el file?

You have any experience with adding language support? Then how did you
approach it?

Also, I could not really find a (recent) bug-report about this issue. So
nobody mentioned this before?

I can already find my way, using edebug and checking out other ob-...el
files. I am just interested in (and surprised about) the current situation
and why it is like that. And I am wondering if maybe there is some more
recent documentation available.

Thanks!

[-- Attachment #2: Type: text/html, Size: 1444 bytes --]

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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-05-21 13:33 What's up with ob-template.el? It seems heavily outdated dalanicolai
@ 2021-05-21 13:50 ` Pedro Bruel
  2021-05-26 12:07   ` dalanicolai
  2021-09-25 14:19 ` Bastien
  1 sibling, 1 reply; 8+ messages in thread
From: Pedro Bruel @ 2021-05-21 13:50 UTC (permalink / raw)
  To: dalanicolai; +Cc: emacs-orgmode

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

I would be interested in an updated ob-template.el file.
I have never added support for a new language, but I started working with
ob-julia.el, and I essentially read ob-R.el to learn how it all fits
together and how to add missing features to ob-julia.

Le ven. 21 mai 2021 à 10:34, dalanicolai <dalanicolai@gmail.com> a écrit :

> I am trying to improve org-babel support for maxima.
> However, when starting from ob-template.el
> <https://code.orgmode.org/bzg/worg/raw/master/org-contrib/babel/ob-template.el>,
> which is advised in the section "develop support for new languages" in the org-mode
> docs <https://orgmode.org/worg/org-contrib/babel/languages/index.html>,
> it seems that the code within that template file is heavily incorrect.
>
> I can write a whole list with "bugs", but it already starts with most of
> the params in the `org-babel-execute` function getting processed
> incorrectly.
>
> So I am wondering, am I missing something here? Or is this documentation
> just heavily outdated?
>
> Would you be interested in some updated ob-template.el file?
>
> You have any experience with adding language support? Then how did you
> approach it?
>
> Also, I could not really find a (recent) bug-report about this issue. So
> nobody mentioned this before?
>
> I can already find my way, using edebug and checking out other ob-...el
> files. I am just interested in (and surprised about) the current situation
> and why it is like that. And I am wondering if maybe there is some more
> recent documentation available.
>
> Thanks!
>

[-- Attachment #2: Type: text/html, Size: 2236 bytes --]

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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-05-21 13:50 ` Pedro Bruel
@ 2021-05-26 12:07   ` dalanicolai
  2021-05-26 12:12     ` dalanicolai
  2021-05-27 11:16     ` Nicholas Savage
  0 siblings, 2 replies; 8+ messages in thread
From: dalanicolai @ 2021-05-26 12:07 UTC (permalink / raw)
  To: Pedro Bruel; +Cc: emacs-orgmode

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

Ha! Well not too much response here...

Anyway @Pedro:
So I do not have too much time to work on an updated template. But I have
added a somewhat updated template file to my emacs-lisp repo here
<org-babel-execute:template> along with some handy tips
<https://github.com/dalanicolai/dala-emacs-lisp#ob-templateel>.
Then of course you can further just check out examples of other ob-....el
files. Hope this is useful.

[-- Attachment #2: Type: text/html, Size: 526 bytes --]

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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-05-26 12:07   ` dalanicolai
@ 2021-05-26 12:12     ` dalanicolai
  2021-05-27 11:16     ` Nicholas Savage
  1 sibling, 0 replies; 8+ messages in thread
From: dalanicolai @ 2021-05-26 12:12 UTC (permalink / raw)
  To: Pedro Bruel; +Cc: emacs-orgmode

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

Because of the image in that repo the link does not jump exactly to the
right location... anyway the tips are just below that image/animation.
Also, for some reason the link to my repo failed... so here
<https://github.com/dalanicolai/dala-emacs-lisp> it is again (well it just
links to the same page as the tips link)

On Wed, 26 May 2021 at 14:07, dalanicolai <dalanicolai@gmail.com> wrote:

> Ha! Well not too much response here...
>
> Anyway @Pedro:
> So I do not have too much time to work on an updated template. But I have
> added a somewhat updated template file to my emacs-lisp repo here along
> with some handy tips
> <https://github.com/dalanicolai/dala-emacs-lisp#ob-templateel>.
> Then of course you can further just check out examples of other ob-....el
> files. Hope this is useful.
>
>

[-- Attachment #2: Type: text/html, Size: 1220 bytes --]

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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-05-26 12:07   ` dalanicolai
  2021-05-26 12:12     ` dalanicolai
@ 2021-05-27 11:16     ` Nicholas Savage
  1 sibling, 0 replies; 8+ messages in thread
From: Nicholas Savage @ 2021-05-27 11:16 UTC (permalink / raw)
  To: Emanuel Berg via General discussions about Org-mode.

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

Thanks for working on updating the template!

If the worg ob-template.el is broken, I feel like your updates should be replacing what is there, even if it isn't perfect yet. I can help you replace it if you would like to be contributing your version to improving the documentation.

On Wed, May 26, 2021, at 08:07, dalanicolai wrote:
> Ha! Well not too much response here...
> 
> Anyway @Pedro:
> So I do not have too much time to work on an updated template. But I have added a somewhat updated template file to my emacs-lisp repo here <org-babel-execute:template> along with some handy tips <https://github.com/dalanicolai/dala-emacs-lisp#ob-templateel>.
> Then of course you can further just check out examples of other ob-....el files. Hope this is useful.

[-- Attachment #2: Type: text/html, Size: 1141 bytes --]

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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-05-21 13:33 What's up with ob-template.el? It seems heavily outdated dalanicolai
  2021-05-21 13:50 ` Pedro Bruel
@ 2021-09-25 14:19 ` Bastien
  2021-09-25 21:46   ` dalanicolai
  1 sibling, 1 reply; 8+ messages in thread
From: Bastien @ 2021-09-25 14:19 UTC (permalink / raw)
  To: dalanicolai; +Cc: emacs-orgmode

Hi,

thanks for your work on ob-template.el.

Would you be willing to contribute it to Org's core?

If so, please fill in this form:
https://orgmode.org/request-assign-future.txt

Once that's done, please send a patch to this list against the main
branch.  See the instructions on contributing here:

https://orgmode.org/worg/org-contribute.html

Thanks!

-- 
 Bastien


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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-09-25 14:19 ` Bastien
@ 2021-09-25 21:46   ` dalanicolai
  2021-09-27  8:22     ` Bastien
  0 siblings, 1 reply; 8+ messages in thread
From: dalanicolai @ 2021-09-25 21:46 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode


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

Hi Bastien,

For sure I am happy to contribute it to (w)org.

I have very recently assigned copyright to the FSF for sketch-mode
<https://github.com/dalanicolai/sketch-mode> (it is currently on
https://elpa.gnu.org/devel/).
So do I have to assign separately again for this contribution? (Would be no
problem of course, just a question)

Anyway, I will already attach the patch. For some reason my Emacs (i.e.
Spacemacs) also reformats the table with
supported languages in index.org. So, maybe you can check if it is
correctly formatted. As I updated this long ago,
it would take me too long to look again at this now (so therefore, I simply
added a link to a mail from Eric Schulte
with some more info), but it should be better than the current info, and a
very acceptable (re)start.

Regards,
Daniel


On Sat, 25 Sept 2021 at 16:19, Bastien <bzg@gnu.org> wrote:

> Hi,
>
> thanks for your work on ob-template.el.
>
> Would you be willing to contribute it to Org's core?
>
> If so, please fill in this form:
> https://orgmode.org/request-assign-future.txt
>
> Once that's done, please send a patch to this list against the main
> branch.  See the instructions on contributing here:
>
> https://orgmode.org/worg/org-contribute.html
>
> Thanks!
>
> --
>  Bastien
>

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

[-- Attachment #2: 0001-Update-ob-template.el-file.patch --]
[-- Type: text/x-patch, Size: 40761 bytes --]

From e75d75bd60dcc8074e2712936d19d4147ef79fa2 Mon Sep 17 00:00:00 2001
From: Daniel Nicolai <dalanicolai@gmail.com>
Date: Sat, 25 Sep 2021 22:58:39 +0200
Subject: [PATCH] Update ob-template.el file

---
 org-contrib/babel/languages/index.org | 220 +++++++++++++++-----------
 org-contrib/babel/ob-template.el      |  61 +++++--
 2 files changed, 168 insertions(+), 113 deletions(-)

diff --git a/org-contrib/babel/languages/index.org b/org-contrib/babel/languages/index.org
index 626b81ff..2d582ff7 100644
--- a/org-contrib/babel/languages/index.org
+++ b/org-contrib/babel/languages/index.org
@@ -31,103 +31,103 @@ the Emacs package system.
 
 #+caption: Languages supported by Babel
 #+name: babel-languages
-| Core language        | Identifier  | Requirements                                   | Maintainer        |
-|----------------------+-------------+------------------------------------------------+-------------------|
-| [[file:ob-doc-abc.org][ABC]]                  | =abc=         | [[http://moinejf.free.fr/][abcm2ps]], [[https://github.com/mkjunker/abc-mode][abc-mode]]                              | William Waites    |
-| [[file:ob-doc-asymptote.org][Asymptote]]            | =asymptote=   | [[http://asymptote.sourceforge.net/][Asymptote]], [[http://asymptote.sourceforge.net/doc/Editing-modes.html][asy-mode]]                            | Luc Pellissier    |
-| [[file:ob-doc-awk.org][Awk]]                  | =awk=         | AWK                                            | Tyler Smith       |
-| [[file:ob-doc-C.org][C]]                    | =C=           | none                                           | Thierry Banel     |
-| [[file:ob-doc-C.org][C++]]                  | =cpp=         | none                                           |                   |
-| Calc                 | =calc=        | none                                           | Tom Gillespie     |
-| [[file:ob-doc-clojure.org][Clojure]]              | =clojure=     | [[http://clojure.org/][Clojure]], [[https://github.com/clojure-emacs/clojure-mode][Clojure Mode]], [[https://github.com/clojure-emacs/cider][CIDER]], [[http://leiningen.org/][Leiningen]]        | Bastien Guerry    |
-| comint               | =comint=      |                                                |                   |
-| Coq                  | =coq=         | [[https://coq.inria.fr/][Coq]], [[https://proofgeneral.github.io/][Proof General]]                             | Luc Pellissier    |
-| [[file:ob-doc-css.org][CSS]]                  | =css=         | none                                           |                   |
-| [[file:ob-doc-C.org][D]]                    | =D=           | [[http://dlang.org][D]]                                              |                   |
-| [[file:ob-doc-ditaa.org][Ditaa]]                | =ditaa=       | [[http://ditaa.sourceforge.net][ditaa]] (bundled with Org-mode)                  |                   |
-| [[file:ob-doc-dot.org][Dot (Graphviz)]]       | =dot=         | [[http://www.graphviz.org/][dot]]                                            | Justin Abrahms    |
-| ebnf                 | =ebnf=        | [[https://www.emacswiki.org/emacs/EbnfToPsPackage][ebnf2ps]]                                        |                   |
-| Emacs Lisp           | =emacs-lisp=  | none                                           |                   |
-| [[file:ob-doc-eshell.org][eshell]]               | =eshell=      | eshell                                         | stardiviner       |
-| Forth                | =forth=       | [[https://www.gnu.org/software/gforth/][gforth]]                                         |                   |
-| Fortran              | =F90=         | fortran                                        |                   |
-| [[file:ob-doc-gnuplot.org][Gnuplot]]              | =gnuplot=     | [[http://www.gnuplot.info/][gnuplot]], [[http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html][gnuplot-mode]]                          |                   |
-| Groovy               | =groovy=      | [[https://groovy-lang.org/][Apache Groovy]]                                  | Palak Mathur      |
-| Haskell              | =haskell=     | [[http://www.haskell.org/][haskell]], [[http://projects.haskell.org/haskellmode-emacs/][haskell-mode]], [[http://www.haskell.org/haskellwiki/Haskell_mode_for_Emacs#inf-haskell.el:_the_best_thing_since_the_breadknife][inf-haskell]], [[http://people.cs.uu.nl/andres/lhs2tex/][lhs2tex]]    | Lawrence Bottorff |
-| hledger              | =hledger=     | [[https://hledger.org/][hledger]]                                        |                   |
-| Io                   | =io=          | [[https://iolanguage.org/index.html][Io]], java                                       |                   |
-| [[file:ob-doc-J.org][J]]                    | =J=           | [[http://www.jsoftware.com/][J]], [[https://github.com/zellio/j-mode][j-mode]]                                      | Joseph Novakovich |
-| [[file:ob-doc-java.org][Java]]                 | =java=        | [[https://openjdk.java.net/][Java]]                                           | Ian Martins       |
-| [[file:ob-doc-js.org][Javascript]]           | =js=          | [[http://nodejs.org/][node.js]]                                        |                   |
-| [[file:ob-doc-LaTeX.org][LaTeX]]                | =latex=       | [[http://www.latex-project.org/][latex]], [[http://www.gnu.org/software/auctex/][auctex]], [[http://www.gnu.org/software/auctex/reftex.html][reftex]]                          |                   |
-| [[file:ob-doc-ledger.org][Ledger]]               | =ledger=      | [[http://wiki.github.com/jwiegley/ledger/][ledger]]                                         | Eric S. Fraga     |
-| [[file:ob-doc-lilypond.org][Lilypond]]             | =ly=          | [[http://lilypond.org/][LilyPond]]                                       |                   |
-| [[file:ob-doc-lisp.org][Lisp]]                 | =lisp=        | lisp, [[http://common-lisp.net/project/slime/][Slime]]                                    |                   |
-| lua                  | =lua=         | [[http://www.lua.org/][lua]]                                            |                   |
-| [[file:ob-doc-makefile.org][Make]]                 | =makefile=    | none                                           |                   |
-| [[file:ob-doc-octave-matlab.org][Matlab]]               | =matlab=      | [[https://www.mathworks.com/products/matlab.html][MATLAB]], [[http://sourceforge.net/projects/matlab-emacs/][matlab.el]]                              |                   |
-| [[file:ob-doc-maxima.org][Maxima]]               | =max=         | [[http://maxima.sourceforge.net/][Maxima]], Common Lisp, gnuplot (optional)        |                   |
-| [[file:ob-doc-mscgen.org][Mscgen]]               | =mscgen=      | [[http://www.mcternan.me.uk/mscgen/][Mscgen]]                                         | Justin Abrahms    |
-| Objective Caml       | =ocaml=       | [[http://caml.inria.fr/][ocaml]], [[http://www-rocq.inria.fr/~acohen/tuareg/][tuareg-mode]]                             |                   |
-| [[file:ob-doc-octave-matlab.org][Octave]]               | =octave=      | [[https://www.gnu.org/software/octave/][Octave]]                                         |                   |
-| Org                  | =org=         | none                                           |                   |
-| [[file:ob-doc-perl.org][Perl]]                 | =perl=        | [[http://www.perl.org/][perl]], [[http://www.emacswiki.org/emacs/CPerlMode][cperl-mode]] (optional)                    | Corwin Brust      |
-| [[file:ob-doc-picolisp.org][Picolisp]]             | =picolisp=    | [[http://picolisp.com/5000/!wiki?home][PicoLisp]]                                       |                   |
-| PlantUML             | =plantuml=    | [[https://plantuml.com][PlantUML]]                                       |                   |
-| Processing           | =processing=  | [[https://processing.org/][Processing]]                                     |                   |
-| [[file:ob-doc-python.org][Python]]               | =python=      | [[http://www.python.org/][python]], [[https://launchpad.net/python-mode][python-mode]] (optional)                 | Jack Kamm         |
-| [[file:ob-doc-R.org][R]]                    | =R=           | [[http://www.r-project.org/][R]], [[http://ess.r-project.org/][ess-mode]], [[http://cran.r-project.org/web/packages/tikzDevice/index.html][tikzDevice]]                        | Jeremie Juste     |
-| Ruby                 | =ruby=        | [[http://www.ruby-lang.org/][ruby]], [[http://www.ruby-lang.org/][irb]], [[http://github.com/eschulte/rinari/raw/master/util/ruby-mode.el][ruby-mode]], [[http://github.com/eschulte/rinari/raw/master/util/inf-ruby.el][inf-ruby mode]]            |                   |
-| Sass                 | =sass=        | [[http://sass-lang.com/][Sass]], [[http://github.com/nex3/haml/blob/master/extra/sass-mode.el][sass-mode]]                                |                   |
-| Scheme               | =scheme=      | none                                           |                   |
-| [[file:ob-doc-screen.org][Screen]]               | =screen=      | [[https://www.gnu.org/software/screen/][GNU Screen]]                                     | Ken Mankoff       |
-| Sed                  | =sed=         | [[https://www.gnu.org/software/sed/][sed]]                                            |                   |
-| shell                | =shell=       | a shell                                        |                   |
-| Shen                 | =shen=        | [[http://www.shenlanguage.org/][Shen]], [[http://elpa.gnu.org/packages/shen-mode.html][shen-mode]]                                |                   |
-| [[file:ob-doc-sql.org][SQL]]                  | =sql=         | an RDBMS                                       |                   |
-| [[file:ob-doc-sqlite.org][SQLite]]               | =sqlite=      | [[http://www.sqlite.org/index.html][SQLite]], [[http://www.sqlite.org/sqlite.html][sqlite3]], [[http://www.emacswiki.org/emacs/SqlMode][SQL mode]]                      | Nick Savage       |
-| [[file:ob-doc-stan.org][Stan]]                 | =stan=        | [[http://mc-stan.org/][Stan]], [[https://github.com/stan-dev/stan-mode][Stan mode]]                                |                   |
-| [[file:ob-doc-vala.org][Vala]]                 | =vala=        | [[https://wiki.gnome.org/Projects/Vala][Vala]]                                           |                   |
-|                      |             |                                                |                   |
-|----------------------+-------------+------------------------------------------------+-------------------|
-| *Contrib language*     | *Identifier*  | *Requirements*                                   | *Maintainer*        |
-|----------------------+-------------+------------------------------------------------+-------------------|
-| Arduino              | =arduino=     | [[https://www.arduino.cc/][Arduino]]                                        |                   |
-| C#                   | =csharp=      | [[https://github.com/mono/mono][mono]]                                           |                   |
-| [[file:ob-doc-eukleides.org][Eukleides]]            | =eukleides=   | [[http://eukleides.org/][eukleides]]                                      |                   |
-| Fomus                | =fomus=       | [[http://fomus.sourceforge.net/][fomus (music notation)]]                         |                   |
-| [[https://github.com/gjkerns/ob-julia/blob/master/ob-julia-doc.org][Julia]]                | =julia=       | [[http://ess.r-project.org][ess]]                                            |                   |
-| Mathematica          | =mathematica= | [[https://www.wolfram.com/mathematica/][Mathematica]]                                    |                   |
-| [[file:ob-doc-mathomatic.org][Mathomatic]]           | =mathomatic=  | [[https://github.com/mfillpot/mathomatic][Mathomatic]]                                     |                   |
-| [[file:ob-doc-oz.org][OZ]]                   | =oz=          | [[http://www.mozart2.org/][Mozart]] which includes a major mode             |                   |
-| php                  | =php=         | [[https://www.php.net/][PHP]]                                            |                   |
-| redis                | =redis=       | [[https://redis.io/][redis]]                                          |                   |
-| sclang               | =sclang=      | [[https://supercollider.github.io/][SuperCollider]]                                  |                   |
-| smiles               | =smiles=      |                                                |                   |
-| spice                | =spice=       | [[http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE/][SPICE]]                                          |                   |
-| [[file:ob-doc-stata.org][Stata]]                | =stata=       | [[http://stata.com/][Stata]], [[http://ess.r-project.org/][ess-mode]]                                |                   |
-| [[file:ob-doc-tcl.org][Tcl]]                  | =tcl=         | [[http://www.tcl.tk/][tclsh]]                                          |                   |
-| VB.net               | =vbnet=       | [[https://github.com/mono/mono][mono]], [[https://www.mankier.com/package/mono-basic][vbnc]]                                     |                   |
-|                      |             |                                                |                   |
-|----------------------+-------------+------------------------------------------------+-------------------|
-| *Package language*     | *Identifier*  | *Requirements*                                   | *Maintainer*        |
-|----------------------+-------------+------------------------------------------------+-------------------|
+| Core language        | Identifier      | Requirements                                   | Maintainer        |
+|----------------------+-----------------+------------------------------------------------+-------------------|
+| [[file:ob-doc-abc.org][ABC]]                  | =abc=           | [[http://moinejf.free.fr/][abcm2ps]], [[https://github.com/mkjunker/abc-mode][abc-mode]]                              | William Waites    |
+| [[file:ob-doc-asymptote.org][Asymptote]]            | =asymptote=     | [[http://asymptote.sourceforge.net/][Asymptote]], [[http://asymptote.sourceforge.net/doc/Editing-modes.html][asy-mode]]                            | Luc Pellissier    |
+| [[file:ob-doc-awk.org][Awk]]                  | =awk=           | AWK                                            | Tyler Smith       |
+| [[file:ob-doc-C.org][C]]                    | =C=             | none                                           | Thierry Banel     |
+| [[file:ob-doc-C.org][C++]]                  | =cpp=           | none                                           |                   |
+| Calc                 | =calc=          | none                                           | Tom Gillespie     |
+| [[file:ob-doc-clojure.org][Clojure]]              | =clojure=       | [[http://clojure.org/][Clojure]], [[https://github.com/clojure-emacs/clojure-mode][Clojure Mode]], [[https://github.com/clojure-emacs/cider][CIDER]], [[http://leiningen.org/][Leiningen]]        | Bastien Guerry    |
+| comint               | =comint=        |                                                |                   |
+| Coq                  | =coq=           | [[https://coq.inria.fr/][Coq]], [[https://proofgeneral.github.io/][Proof General]]                             | Luc Pellissier    |
+| [[file:ob-doc-css.org][CSS]]                  | =css=           | none                                           |                   |
+| [[file:ob-doc-C.org][D]]                    | =D=             | [[http://dlang.org][D]]                                              |                   |
+| [[file:ob-doc-ditaa.org][Ditaa]]                | =ditaa=         | [[http://ditaa.sourceforge.net][ditaa]] (bundled with Org-mode)                  |                   |
+| [[file:ob-doc-dot.org][Dot (Graphviz)]]       | =dot=           | [[http://www.graphviz.org/][dot]]                                            | Justin Abrahms    |
+| ebnf                 | =ebnf=          | [[https://www.emacswiki.org/emacs/EbnfToPsPackage][ebnf2ps]]                                        |                   |
+| Emacs Lisp           | =emacs-lisp=    | none                                           |                   |
+| [[file:ob-doc-eshell.org][eshell]]               | =eshell=        | eshell                                         | stardiviner       |
+| Forth                | =forth=         | [[https://www.gnu.org/software/gforth/][gforth]]                                         |                   |
+| Fortran              | =F90=           | fortran                                        |                   |
+| [[file:ob-doc-gnuplot.org][Gnuplot]]              | =gnuplot=       | [[http://www.gnuplot.info/][gnuplot]], [[http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html][gnuplot-mode]]                          |                   |
+| Groovy               | =groovy=        | [[https://groovy-lang.org/][Apache Groovy]]                                  | Palak Mathur      |
+| Haskell              | =haskell=       | [[http://www.haskell.org/][haskell]], [[http://projects.haskell.org/haskellmode-emacs/][haskell-mode]], [[http://www.haskell.org/haskellwiki/Haskell_mode_for_Emacs#inf-haskell.el:_the_best_thing_since_the_breadknife][inf-haskell]], [[http://people.cs.uu.nl/andres/lhs2tex/][lhs2tex]]    | Lawrence Bottorff |
+| hledger              | =hledger=       | [[https://hledger.org/][hledger]]                                        |                   |
+| Io                   | =io=            | [[https://iolanguage.org/index.html][Io]], java                                       |                   |
+| [[file:ob-doc-J.org][J]]                    | =J=             | [[http://www.jsoftware.com/][J]], [[https://github.com/zellio/j-mode][j-mode]]                                      | Joseph Novakovich |
+| [[file:ob-doc-java.org][Java]]                 | =java=          | [[https://openjdk.java.net/][Java]]                                           | Ian Martins       |
+| [[file:ob-doc-js.org][Javascript]]           | =js=            | [[http://nodejs.org/][node.js]]                                        |                   |
+| [[file:ob-doc-LaTeX.org][LaTeX]]                | =latex=         | [[http://www.latex-project.org/][latex]], [[http://www.gnu.org/software/auctex/][auctex]], [[http://www.gnu.org/software/auctex/reftex.html][reftex]]                          |                   |
+| [[file:ob-doc-ledger.org][Ledger]]               | =ledger=        | [[http://wiki.github.com/jwiegley/ledger/][ledger]]                                         | Eric S. Fraga     |
+| [[file:ob-doc-lilypond.org][Lilypond]]             | =ly=            | [[http://lilypond.org/][LilyPond]]                                       |                   |
+| [[file:ob-doc-lisp.org][Lisp]]                 | =lisp=          | lisp, [[http://common-lisp.net/project/slime/][Slime]]                                    |                   |
+| lua                  | =lua=           | [[http://www.lua.org/][lua]]                                            |                   |
+| [[file:ob-doc-makefile.org][Make]]                 | =makefile=      | none                                           |                   |
+| [[file:ob-doc-octave-matlab.org][Matlab]]               | =matlab=        | [[https://www.mathworks.com/products/matlab.html][MATLAB]], [[http://sourceforge.net/projects/matlab-emacs/][matlab.el]]                              |                   |
+| [[file:ob-doc-maxima.org][Maxima]]               | =max=           | [[http://maxima.sourceforge.net/][Maxima]], Common Lisp, gnuplot (optional)        |                   |
+| [[file:ob-doc-mscgen.org][Mscgen]]               | =mscgen=        | [[http://www.mcternan.me.uk/mscgen/][Mscgen]]                                         | Justin Abrahms    |
+| Objective Caml       | =ocaml=         | [[http://caml.inria.fr/][ocaml]], [[http://www-rocq.inria.fr/~acohen/tuareg/][tuareg-mode]]                             |                   |
+| [[file:ob-doc-octave-matlab.org][Octave]]               | =octave=        | [[https://www.gnu.org/software/octave/][Octave]]                                         |                   |
+| Org                  | =org=           | none                                           |                   |
+| [[file:ob-doc-perl.org][Perl]]                 | =perl=          | [[http://www.perl.org/][perl]], [[http://www.emacswiki.org/emacs/CPerlMode][cperl-mode]] (optional)                    | Corwin Brust      |
+| [[file:ob-doc-picolisp.org][Picolisp]]             | =picolisp=      | [[http://picolisp.com/5000/!wiki?home][PicoLisp]]                                       |                   |
+| PlantUML             | =plantuml=      | [[https://plantuml.com][PlantUML]]                                       |                   |
+| Processing           | =processing=    | [[https://processing.org/][Processing]]                                     |                   |
+| [[file:ob-doc-python.org][Python]]               | =python=        | [[http://www.python.org/][python]], [[https://launchpad.net/python-mode][python-mode]] (optional)                 | Jack Kamm         |
+| [[file:ob-doc-R.org][R]]                    | =R=             | [[http://www.r-project.org/][R]], [[http://ess.r-project.org/][ess-mode]], [[http://cran.r-project.org/web/packages/tikzDevice/index.html][tikzDevice]]                        | Jeremie Juste     |
+| Ruby                 | =ruby=          | [[http://www.ruby-lang.org/][ruby]], [[http://www.ruby-lang.org/][irb]], [[http://github.com/eschulte/rinari/raw/master/util/ruby-mode.el][ruby-mode]], [[http://github.com/eschulte/rinari/raw/master/util/inf-ruby.el][inf-ruby mode]]            |                   |
+| Sass                 | =sass=          | [[http://sass-lang.com/][Sass]], [[http://github.com/nex3/haml/blob/master/extra/sass-mode.el][sass-mode]]                                |                   |
+| Scheme               | =scheme=        | none                                           |                   |
+| [[file:ob-doc-screen.org][Screen]]               | =screen=        | [[https://www.gnu.org/software/screen/][GNU Screen]]                                     | Ken Mankoff       |
+| Sed                  | =sed=           | [[https://www.gnu.org/software/sed/][sed]]                                            |                   |
+| shell                | =shell=         | a shell                                        |                   |
+| Shen                 | =shen=          | [[http://www.shenlanguage.org/][Shen]], [[http://elpa.gnu.org/packages/shen-mode.html][shen-mode]]                                |                   |
+| [[file:ob-doc-sql.org][SQL]]                  | =sql=           | an RDBMS                                       |                   |
+| [[file:ob-doc-sqlite.org][SQLite]]               | =sqlite=        | [[http://www.sqlite.org/index.html][SQLite]], [[http://www.sqlite.org/sqlite.html][sqlite3]], [[http://www.emacswiki.org/emacs/SqlMode][SQL mode]]                      | Nick Savage       |
+| [[file:ob-doc-stan.org][Stan]]                 | =stan=          | [[http://mc-stan.org/][Stan]], [[https://github.com/stan-dev/stan-mode][Stan mode]]                                |                   |
+| [[file:ob-doc-vala.org][Vala]]                 | =vala=          | [[https://wiki.gnome.org/Projects/Vala][Vala]]                                           |                   |
+|                      |                 |                                                |                   |
+|----------------------+-----------------+------------------------------------------------+-------------------|
+| *Contrib language*   | *Identifier*    | *Requirements*                                 | *Maintainer*      |
+|----------------------+-----------------+------------------------------------------------+-------------------|
+| Arduino              | =arduino=       | [[https://www.arduino.cc/][Arduino]]                                        |                   |
+| C#                   | =csharp=        | [[https://github.com/mono/mono][mono]]                                           |                   |
+| [[file:ob-doc-eukleides.org][Eukleides]]            | =eukleides=     | [[http://eukleides.org/][eukleides]]                                      |                   |
+| Fomus                | =fomus=         | [[http://fomus.sourceforge.net/][fomus (music notation)]]                         |                   |
+| [[https://github.com/gjkerns/ob-julia/blob/master/ob-julia-doc.org][Julia]]                | =julia=         | [[http://ess.r-project.org][ess]]                                            |                   |
+| Mathematica          | =mathematica=   | [[https://www.wolfram.com/mathematica/][Mathematica]]                                    |                   |
+| [[file:ob-doc-mathomatic.org][Mathomatic]]           | =mathomatic=    | [[https://github.com/mfillpot/mathomatic][Mathomatic]]                                     |                   |
+| [[file:ob-doc-oz.org][OZ]]                   | =oz=            | [[http://www.mozart2.org/][Mozart]] which includes a major mode             |                   |
+| php                  | =php=           | [[https://www.php.net/][PHP]]                                            |                   |
+| redis                | =redis=         | [[https://redis.io/][redis]]                                          |                   |
+| sclang               | =sclang=        | [[https://supercollider.github.io/][SuperCollider]]                                  |                   |
+| smiles               | =smiles=        |                                                |                   |
+| spice                | =spice=         | [[http://bwrcs.eecs.berkeley.edu/Classes/IcBook/SPICE/][SPICE]]                                          |                   |
+| [[file:ob-doc-stata.org][Stata]]                | =stata=         | [[http://stata.com/][Stata]], [[http://ess.r-project.org/][ess-mode]]                                |                   |
+| [[file:ob-doc-tcl.org][Tcl]]                  | =tcl=           | [[http://www.tcl.tk/][tclsh]]                                          |                   |
+| VB.net               | =vbnet=         | [[https://github.com/mono/mono][mono]], [[https://www.mankier.com/package/mono-basic][vbnc]]                                     |                   |
+|                      |                 |                                                |                   |
+|----------------------+-----------------+------------------------------------------------+-------------------|
+| *Package language*   | *Identifier*    | *Requirements*                                 | *Maintainer*      |
+|----------------------+-----------------+------------------------------------------------+-------------------|
 | [[https://bitbucket.org/pdo/axiom-environment][Axiom]]                | =axiom=, =spad= | [[http://www.axiom-developer.org/][axiom]], [[http://www.open-axiom.org/][OpenAxiom]], or [[http://fricas.sourceforge.net/][FriCAS]], [[https://bitbucket.org/pdo/axiom-environment/][axiom-environment]] |                   |
-| [[https://github.com/zweifisch/ob-elixir][Elixir]]               | =elixir=      | [[http://elixir-lang.org/][elixir]], [[http://www.erlang.org/][Erlang]]                                 |                   |
-| [[https://github.com/krisajenkins/ob-translate][Google Translate]]     | =translate=   | [[https://github.com/atykhonov/google-translate][google-translate]]                               |                   |
-| [[file:ob-doc-haxe.org][Haxe]]                 | =haxe=        | [[https://haxe.org/][Haxe]]                                           |                   |
-| [[https://github.com/krisajenkins/ob-browser][HTML]]                 | =browser=     | [[http://phantomjs.org/][PhantomJS]], ob-browser.js                       |                   |
-| [[https://github.com/zweifisch/ob-http][http request]]         | =http=        | [[http://curl.haxx.se/][cURL]]                                           |                   |
-| [[https://github.com/gregsexton/ob-ipython][iPython]]              | =ipython=     | [[file:ob-doc-python.org][ob-python]]                                      |                   |
-| [[http://github.com/zweifisch/ob-kotlin][Kotlin]]               | =kotlin=      | [[http://kotlinlang.org/][Kotlin]], [[https://github.com/quantumman/emacs.d/blob/master/auto-install/kotlin-mode.el][kotlin-mode]]                            |                   |
-| Lisp Flavored Erlang | =lfe=         | [[http://lfe.io/][lfe]]                                            |                   |
-| [[https://github.com/krisajenkins/ob-mongo][MongoDB]]              | =mongo=       | [[https://www.mongodb.org/][MongoDB]]                                        |                   |
-| [[https://github.com/zweifisch/ob-cypher][Neo4j]]                | =cypher=      | [[http://neo4j.com/][neo4j]], [[https://github.com/fxbois/cypher-mode][cypher-mode]]                             |                   |
-| [[https://github.com/ljos/ob-prolog][Prolog]]               | =prolog=      | [[http://www.swi-prolog.org/][SWI Prolog]]                                     |                   |
-| [[https://github.com/millarc/ob-rec.el][rec]]                  | =rec=         | [[https://www.gnu.org/software/recutils/][GNU Recutils]]                                   |                   |
-| Scala                | =scala=       | [[http://www.scala-lang.org][Scala]]                                          |                   |
-| [[https://github.com/swannodette/ob-sml][Standard ML]]          | =sml=         | [[https://en.wikipedia.org/wiki/Standard_ML][Standard ML]], [[http://www.iro.umontreal.ca/~monnier/elisp/][sml-mode]]                          |                   |
-| [[https://github.com/lurdan/ob-typescript][Typescript]]           | =typescript=  | [[https://nodejs.org/][node.js]], [[https://www.npmjs.com/package/typescript][typescript]]                            |                   |
+| [[https://github.com/zweifisch/ob-elixir][Elixir]]               | =elixir=        | [[http://elixir-lang.org/][elixir]], [[http://www.erlang.org/][Erlang]]                                 |                   |
+| [[https://github.com/krisajenkins/ob-translate][Google Translate]]     | =translate=     | [[https://github.com/atykhonov/google-translate][google-translate]]                               |                   |
+| [[file:ob-doc-haxe.org][Haxe]]                 | =haxe=          | [[https://haxe.org/][Haxe]]                                           |                   |
+| [[https://github.com/krisajenkins/ob-browser][HTML]]                 | =browser=       | [[http://phantomjs.org/][PhantomJS]], ob-browser.js                       |                   |
+| [[https://github.com/zweifisch/ob-http][http request]]         | =http=          | [[http://curl.haxx.se/][cURL]]                                           |                   |
+| [[https://github.com/gregsexton/ob-ipython][iPython]]              | =ipython=       | [[file:ob-doc-python.org][ob-python]]                                      |                   |
+| [[http://github.com/zweifisch/ob-kotlin][Kotlin]]               | =kotlin=        | [[http://kotlinlang.org/][Kotlin]], [[https://github.com/quantumman/emacs.d/blob/master/auto-install/kotlin-mode.el][kotlin-mode]]                            |                   |
+| Lisp Flavored Erlang | =lfe=           | [[http://lfe.io/][lfe]]                                            |                   |
+| [[https://github.com/krisajenkins/ob-mongo][MongoDB]]              | =mongo=         | [[https://www.mongodb.org/][MongoDB]]                                        |                   |
+| [[https://github.com/zweifisch/ob-cypher][Neo4j]]                | =cypher=        | [[http://neo4j.com/][neo4j]], [[https://github.com/fxbois/cypher-mode][cypher-mode]]                             |                   |
+| [[https://github.com/ljos/ob-prolog][Prolog]]               | =prolog=        | [[http://www.swi-prolog.org/][SWI Prolog]]                                     |                   |
+| [[https://github.com/millarc/ob-rec.el][rec]]                  | =rec=           | [[https://www.gnu.org/software/recutils/][GNU Recutils]]                                   |                   |
+| Scala                | =scala=         | [[http://www.scala-lang.org][Scala]]                                          |                   |
+| [[https://github.com/swannodette/ob-sml][Standard ML]]          | =sml=           | [[https://en.wikipedia.org/wiki/Standard_ML][Standard ML]], [[http://www.iro.umontreal.ca/~monnier/elisp/][sml-mode]]                          |                   |
+| [[https://github.com/lurdan/ob-typescript][Typescript]]           | =typescript=    | [[https://nodejs.org/][node.js]], [[https://www.npmjs.com/package/typescript][typescript]]                            |                   |
 
 
 Note: Many languages in Table [[babel-languages]] require
@@ -197,6 +197,34 @@ Developers are encouraged to read the [[file:../../org-contribute.org][Org-mode
 instructions]] in the hope that the language support can be included
 into the Org-mode core.
 
+** Some additional comments/development tips
+Although most of the instructions in ob-template.el should be very
+useful, and explain clearly how to use the code, some explanations for
+more advanced functionalities could be a little outdated
+(contributions are very welcome. The thread [[https://lists.gnu.org/archive/html/emacs-orgmode/2015-09/msg00487.html][here]] may contain some
+extra useful information, although most of the suggestions provided by
+Eric should have been implemented). If some of the instructions are
+not clear, then here follow some suggestion for how to approach
+'uncertainties':
+
+- start with instrumenting [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Using-Edebug.html][see edebug]] the =org-babel-execute:template=
+  function, and subsequently evaluate some test-code block. In this way you
+  can easily figure out how org-babel processes header arguments. Then in
+  the end, the result printed by a code block simply consists of the output
+  of that function.
+- The trick is to process the vars/result-params and the =full=body=
+  variable (~let~ form within =org-babel-execute:template= function) and
+  send the appropriate lines to some inferior process (or as an argument to
+  some shell command). The inferior process can be created in the function
+  =org-babel-template-initiate-session=. The result returned by the inferior
+  process (or by the shell command), should be returned by
+  =org-babel-execute:template= (of course you might further process it
+  before you return it).
+- Don't forget to read the comments in the ob-template file, e.g. for
+  sending/receiving output to/from an inferior process, the functions in
+  =org-babel-comint= might be useful, etc...
+
+
 * Footnotes
 
 [fn:1] If you want to load a language in the =contrib= directory by
diff --git a/org-contrib/babel/ob-template.el b/org-contrib/babel/ob-template.el
index 7c3fbb0d..87afb3dc 100644
--- a/org-contrib/babel/ob-template.el
+++ b/org-contrib/babel/ob-template.el
@@ -26,12 +26,32 @@
 
 ;;; Commentary:
 
-;; This file is not intended to ever be loaded by org-babel, rather it
-;; is a template for use in adding new language support to Org-babel.
-;; Good first steps are to copy this file to a file named by the
-;; language you are adding, and then use `query-replace' to replace
-;; all strings of "template" in this file with the name of your new
-;; language.
+;; This file is not intended to ever be loaded by org-babel, rather it is a
+;; template for use in adding new language support to Org-babel. Good first
+;; steps are to copy this file to a file named by the language you are adding,
+;; and then use `query-replace' to replace all strings of "template" in this
+;; file with the name of your new language.
+
+;; After the `query-replace' step, it is recommended to load the file and
+;; register it to org-babel either via the customize menu, or by evaluating the
+;; line: (add-to-list 'org-babel-load-languages '(template . t)) where
+;; `template' should have been replaced by the name of the language you are
+;; implementing (note that this applies to all occurrences of 'template' in this
+;; file).
+
+;; After that continue by creating a simple code block that looks like e.g.
+;;
+;; #+begin_src template
+
+;; test
+
+;; #+end_src
+
+;; Finally you can use `edebug' to instrumentalize
+;; `org-babel-expand-body:template' and continue to evaluate the code block. You
+;; try to add header keywords and change the body of the code block and
+;; reevaluate the code block to observe how things get handled.
+
 ;;
 ;; If you have questions as to any of the portions of the file defined
 ;; below please look to existing language support for guidance.
@@ -43,6 +63,7 @@
 ;; of Org-mode, otherwise unassigned language support files can still
 ;; be included in the contrib/ directory of the Org-mode repository.
 
+
 ;;; Requirements:
 
 ;; Use this section to list the requirements of this language.  Most
@@ -63,19 +84,22 @@
 ;; optionally declare default header arguments for this language
 (defvar org-babel-default-header-args:template '())
 
-;; This function expands the body of a source code block by doing
-;; things like prepending argument definitions to the body, it should
-;; be called by the `org-babel-execute:template' function below.
+;; This function expands the body of a source code block by doing things like
+;; prepending argument definitions to the body, it should be called by the
+;; `org-babel-execute:template' function below. Variables get concatenated in
+;; the `mapconcat' form, therefore to change the formatting you can edit the
+;; `format' form.
 (defun org-babel-expand-body:template (body params &optional processed-params)
   "Expand BODY according to PARAMS, return the expanded body."
-  (require 'inf-template)
-  (let ((vars (nth 1 (or processed-params (org-babel-process-params params)))))
+  (require 'inf-template nil t)
+  (let ((vars (org-babel--get-vars (or processed-params (org-babel-process-params params)))))
     (concat
      (mapconcat ;; define any variables
       (lambda (pair)
         (format "%s=%S"
                 (car pair) (org-babel-template-var-to-template (cdr pair))))
-      vars "\n") "\n" body "\n")))
+      vars "\n")
+     "\n" body "\n")))
 
 ;; This is the main function which is called to evaluate a code
 ;; block.
@@ -101,13 +125,16 @@
 This function is called by `org-babel-execute-src-block'"
   (message "executing Template source code block")
   (let* ((processed-params (org-babel-process-params params))
-         ;; set the session if the session variable is non-nil
-         (session (org-babel-template-initiate-session (first processed-params)))
+         ;; set the session if the value of the session keyword is not the
+         ;; string `none'
+         (session (unless (string= value "none")
+                   (org-babel-template-initiate-session
+                    (cdr (assq :session processed-params)))))
          ;; variables assigned for use in the block
-         (vars (second processed-params))
-         (result-params (third processed-params))
+         (vars (org-babel--get-vars processed-params))
+         (result-params (assq :result-params processed-params))
          ;; either OUTPUT or VALUE which should behave as described above
-         (result-type (fourth processed-params))
+         (result-type (assq :result-type processed-params))
          ;; expand the body with `org-babel-expand-body:template'
          (full-body (org-babel-expand-body:template
                      body params processed-params)))
-- 
2.31.1


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

* Re: What's up with ob-template.el? It seems heavily outdated
  2021-09-25 21:46   ` dalanicolai
@ 2021-09-27  8:22     ` Bastien
  0 siblings, 0 replies; 8+ messages in thread
From: Bastien @ 2021-09-27  8:22 UTC (permalink / raw)
  To: dalanicolai; +Cc: emacs-orgmode

Hi,

dalanicolai <dalanicolai@gmail.com> writes:

> For sure I am happy to contribute it to (w)org.

Thanks!

> I have very recently assigned copyright to the FSF for sketch-mode
> (it is currently on https://elpa.gnu.org/devel/).
> So do I have to assign separately again for this contribution? (Would
> be no problem of course, just a question)

Your assignment covers any contribution to GNU Emacs, so we're good to
go.

> Anyway, I will already attach the patch. For some reason my Emacs
> (i.e. Spacemacs) also reformats the table with
> supported languages in index.org. So, maybe you can check if it is
> correctly formatted. As I updated this long ago,
> it would take me too long to look again at this now (so therefore, I
> simply added a link to a mail from Eric Schulte
> with some more info), but it should be better than the current info,
> and a very acceptable (re)start.

I applied it against Worg.

Thanks,

PS: Note that you don't need the FSF assignment for Worg, as it is not
included in Org or Emacs, you just need to agree publishing your code
or contribution under the GNU FDL 1.3 license.

-- 
 Bastien


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

end of thread, other threads:[~2021-09-27  8:23 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-21 13:33 What's up with ob-template.el? It seems heavily outdated dalanicolai
2021-05-21 13:50 ` Pedro Bruel
2021-05-26 12:07   ` dalanicolai
2021-05-26 12:12     ` dalanicolai
2021-05-27 11:16     ` Nicholas Savage
2021-09-25 14:19 ` Bastien
2021-09-25 21:46   ` dalanicolai
2021-09-27  8:22     ` Bastien

Code repositories for project(s) associated with this 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).