Babel: Languages
Table of Contents
Babel Languages
Note: Many languages in this table still require documentation. A template is provided in the worg git repository for the addition of language documentation.
| Language | Identifier | Documentation | Requirements |
|---|---|---|---|
| Asymptote | asymptote | ob-doc-asymptote | asymptote, asy-mode |
| Awk | awk | ob-doc-awk | awk |
| C | C | ob-doc-C | none |
| C++ | cpp | ob-doc-C | none |
| Calc | calc | none | |
| Clojure | clojure | ob-doc-clojure | clojure, clojure-mode, slime, swank-clojure |
| CSS | css | ob-doc-css | none |
| Ditaa | ditaa | ob-doc-ditaa | ditaa (bundled with Org-mode) |
| Dot (Graphviz) | dot | og-doc-dot | dot |
| Emacs Lisp | emacs-lisp | none | |
| Eukleides | eukleides | ob-doc-eukleides | eukleides |
| Fomus | fomus (contrib) | fomus (music notation) | |
| Fortran | F90 | fortran | |
| Gnuplot | gnuplot | ob-doc-gnuplot | gnuplot, gnuplot-mode |
| Haskell | haskell | haskell, haskell-mode, inf-haskell, lhs2tex | |
| Java | java | java | |
| Javascript | js | node.js | |
| LaTeX | latex | ob-doc-latex | latex, auctex, reftex |
| Ledger | ledger | ob-doc-ledger | ledger |
| Lilypond | ly | ob-doc-lilypond | lilypond music notation |
| Lisp | lisp | ob-doc-lisp | slime |
| Make | makefile | ob-doc-makefile | none |
| Mathomatic | mathomatic | ob-doc-mathomatic | Mathomatic |
| Matlab | matlab | ob-doc-octave-matlab | matlab, matlab.el |
| Maxima | max | ob-doc-maxima | maxima, Common Lisp, gnuplot (optional) |
| Mscgen | mscgen | ob-doc-mscgen | Mscgen |
| Objective Caml | ocaml | ocaml, tuareg-mode | |
| Octave | octave | ob-doc-octave-matlab | octave |
| Org | org | none | |
| OZ | oz (contrib) | ob-doc-oz | Mozart which includes a major mode |
| Perl | perl | perl, cperl-mode (optional) | |
| Picolisp | picolisp | ob-doc-picolisp | PicoLisp |
| PlantUML | plantuml | ||
| Python | python | ob-doc-python | python, python-mode (optional) |
| R | R | ob-doc-R | R, ess-mode, tikzDevice |
| Ruby | ruby | ruby, irb, ruby-mode, inf-ruby mode | |
| Sass | sass | sass, sass-mode | |
| Scheme | scheme | none | |
| Shen | shen | shen | |
| shell | sh | a shell | |
| SQL | sql | none | |
| Sqlite | sqlite | none | |
| Tcl | tcl | ob-doc-tcl | tclsh |
Configure active languages
To add support for a particular language to your Babel installation
first make sure that the requirements of the language are met, then
you may customize the org-babel-load-languages variable, update the
variable's value manually by adding1
(lang . t)
to its definition. A line like the following to explicitly remove support for a language.
(lang . nil)
Here is an example manual configuration of this variable, which
enables support for R, and disables support for emacs-lisp.
;; active Babel languages (org-babel-do-load-languages 'org-babel-load-languages '((R . t) (emacs-lisp . nil) ))
Develop support for new languages
The core Babel functions (viewing, export, tangling, etc…) are language agnostic and will work even for languages that are not explicitly supported. Explicit language-specific support is required only for evaluation of code blocks in a language.
Babel is designed to be easily extended to support new languages. Language support is added by defining language-specific functions using a simple naming convention. The full suite of possible language specific functions need not be implemented all at once, but rather it is possible (and encouraged) to develop language-specific functionality in an incremental fashion – Babel will make use of those functions which are available, and will fail gracefully when functionality has not yet been implemented.
There is a short Emacs Lisp template (ob-template.el) which can be used as a starting point for implementing support for new languages. Developers are encouraged to read the Org-mode contribution instructions in the hope that the language support can be included into the Org-mode core.
Footnotes:
languages in the contrib directory are marked with "(contrib)"
in the "Identifier" section above are not loadable through the
org-babel-do-load-languages variable, but rather must be
explicitly required (e.g. (require 'ob-oz)) after the contrib
directory has been added to you load path.