Lua Source Code Blocks in Org Mode
Org Mode support for Lua
Introduction
The Lua site describes the language as
a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.
Lua is commonly used as a scripting language in games. It is the scripting language embedded in LuaTeX, an extended version of pdfTeX.
Requirements and Setup
The Lua site has the C source code for the interpreter and compilation instructions. LuaBinaries offers Lua libraries and executables compiled for several platforms. Several Linux distributions either include Lua or offer it as a package. Note that the interpreter is usually named lua
or lua5.3
.
Lua mode is a major mode for editing Lua sources in Emacs. It is available from MELPA as lua-mode
. Code completion can be configured with LSP mode or company-lua.
Finally, you'll need to ensure that org-babel-load-languages
includes an entry for Lua. Typically, org-babel-load-languages
will contain many entries. The example below omits other languages.
(org-babel-do-load-languages 'org-babel-load-languages '((lua . t)))
Org Mode Features for Lua Source Code Blocks
Header Arguments
There are no Lua-specific default header arguments.
There are no Lua-specific header arguments.
Sessions
Sessions are not currently supported.
Result Types
Only basic text output is supported.
Examples of Use
Hello World!
In the Org mode buffer:
#+name: lua-hello-world #+begin_src lua :results output :exports both print 'Hello World!' print ("Hello World!") #+end_src
HTML
export of the source block:
print 'Hello World!' print ("Hello World!")
HTML
export of the result:
Hello World! Hello World!
Some limitations
The current implementation of ob-lua.el
honors strings, integers, reals, or Org lists as variables. It does not honor Org tables:
org-babel-lua-var-to-lua: Wrong type argument: stringp, 1
The current implementation works solely in scripting mode and does not return :results value
.