From e75d75bd60dcc8074e2712936d19d4147ef79fa2 Mon Sep 17 00:00:00 2001 From: Daniel Nicolai 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