Lua script that lets you use Neovim as a Lua interpreter.
Neovim embeds a Lua interpreter, but it doesn't expose the same command line interface as plain lua.
The plain interface looks like this:
usage: lua [options] [script [args]]
Available options are:
-e stat execute string 'stat'
-i enter interactive mode after executing 'script'
-l mod require library 'mod' into global 'mod'
-l g=mod require library 'mod' into global 'g'
-v show version information
-E ignore environment variables
-W turn warnings on
-- stop handling options
- stop handling options and execute stdin
nlua is a script which emulates that interface, Using Neovim's -l option under the hood.
Currently supported:
-e-v--[script [args]]- stdin handling
-
It lets you use Neovim as Lua interpreter for luarocks. This in turn allows you to run tools like busted to test Neovim plugins.
-
It allows tools like local-lua-debugger-vscode to use the Neovim Lua. Enabling debugging of busted test cases for Neovim plugins.
See:
envexecutable supporting the-Soption. Runenv --helpin a shell to verify.- Neovim 0.9+ with LuaJIT
This package is available on luarocks.
-
Install luarocks using a package manager. For example
pacman -S luarocks -
Install
nluavialuarocks:luarocks --local install nlua
-
Add
~/.luarocks/bin/nluato your$PATH:export PATH=$PATH:$HOME/.luarocks/bin:
-
Confirm it's working:
echo "print(1 + 2)" | nlua
Note
On Windows, luarocks will install a nlua.bat wrapper script.
luarocks --local install busted
busted --lua nlua spec/mytest_spec.luaIf you see a module 'busted.runner' not found error you need to update your LUA_PATH:
eval $(luarocks path --no-bin)
busted --lua nlua spec/mytest_spec.luaYou can use the plugin template to create a new repository that contains nlua/busted based test setup.
This allows package installation directly via nlua instead of a system lua
Create a ~/.luarocks/config-nlua.lua with the following contents.
For luarocks 3.10.0 and above:
lua_version = "5.1"
variables = {
LUA = "$HOME/.luarocks/bin/nlua", -- path to where nlua is installed
LUA_INCDIR = "/usr/include/luajit-2.1",
}For luarocks 3.9.2 and below:
lua_version = "5.1"
variables = {
lua_interpreter = "nlua"
LUA_INCDIR = "/usr/include/luajit-2.1",
LUA_BINDIR = "$HOME/.luarocks/bin", -- path to where nlua is installed
}To make using this custom configuration a bit easier, you can create a small wrapper.
Create a file called nluarocks somewhere in $PATH - e.g. in
~/.local/bin/nluarocks - with the following content:
#!/usr/bin/env bash
LUAROCKS_CONFIG=$HOME/.luarocks/config-nlua.lua luarocks --local "$@"Now you should be able to install packages from luarocks using the nvim
Lua-interpreter. For example:
nluarocks install busted