Skip to content

Editor Setup

Installua code is Lua code, so the Lua tooling you may already have works on it. If you write Lua for a living you can probably skip this page – otherwise, two tools are worth installing once, and every Installua project you ever start will benefit.

lua-language-server is what gives your editor completion, hover documentation, go-to-definition and a warning when a call gets the wrong number of arguments. It reads the type definitions Installua generates for you, so this works across the whole API – commands, page settings and the plugins you declare yourself included.

Most editors have a ready-made extension that bundles it:

Editor Extension
VS Code sumneko.lua (Marketplace)
VSCodium, Cursor, Antigravity & friends sumneko.lua (OpenVSX)
Sublime Text LSP and LSP-lua
Neovim nvim-lspconfig
Zed built in, no setup needed

Anything else – the releases page has binaries, and the project documents how to wire them up

Your own funcs and globals are typed too, with what the compiler inferred from the whole project: a func returning a string reads as returning one. Run installua stubs again after adding or changing one.

The type definitions assume the .luarc.json that installua init writes, which turns off the parts of Lua’s standard library Installua doesn’t have. Your own settings can go in the same file. If a setting the definitions rely on is missing, installua stubs warns and names it, and installua init --interactive offers to rewrite the file.

selene is a separate tool: a Lua linter. Installua uses it for the things a language server won’t tell you – above all, the Lua names Installua doesn’t support, which selene reports as errors that name the replacement to use instead.

One caveat: the published selene binary is built for Lua 5.1, which can’t parse the <const> that build-time constants are declared with. Build it for Lua 5.4 instead:

Terminal window
cargo install selene --features selene-lib/lua54

selene reads one file at a time, so the std installua stubs writes also lists your project’s own funcs and globals. Run installua stubs again after adding one, as you would for the language server.

selene is optional. Skip it and everything still compiles – you just lose the friendly nudge when you reach for a Lua feature that isn’t there.