Luamacs is the result of merging the Emacs-lisp and Lua interpreters. Each of the interpreters can lookup values and call functions the other one. They have each been extended with a new data type that allows them to manipulate references to values in the others environment.

From Emacs, Lua values are referenced using the pseudo object 'lua'. For example, the variable 'x' is referenced with 'lua.x'. From Lua, lisp variable values are referenced using the table 'el'. Because emacs-lisp variables and functions exist in separate namespaces, a separate table 'elf' is used to reference lisp functions from Lua. Additional lisp primitives are provided for working with lua tables directly. When lisp lists, vectors, or hashtables are referenced from lua they are wrapped in a Lua table that provides methods for manipulating the lisp values in the natural lua way.

Examples, internal details, and code, are in the repository