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+
This package is available on luarocks.
Install luarocks using a package manager. For example
pacman -S luarocksInstall
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 installedLUA_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