packages/omo-codex/plugin/skills/lsp-setup/references/lua/README.md
lua-ls — lua-language-server.luahttps://github.com/LuaLS/lua-language-serverSee https://github.com/LuaLS/lua-language-server.
brew install lua-language-serverpacman -S lua-language-server (Arch) / AURbin to PATHConfirm it resolves:
command -v lua-language-server
Builtin — usually NO config needed (auto-resolved by extension). Configure only to set priority, init options, override extensions, or disable. Same JSON shape in .codex/lsp-client.json (Codex) AND .opencode/lsp.json (OpenCode/omo):
{ "lsp": { "lua-ls": { "priority": 100 } } }
For builtin ids in a PROJECT config, command is supplied automatically — only set priority/initialization/extensions/disabled/env. A fully custom (non-builtin) server with its own command must go in the USER config (~/.codex/lsp-client.json).
For Neovim config development, point the server at the Neovim runtime and set the Lua runtime version so vim globals and stdlib resolve:
{
"lsp": {
"lua-ls": {
"initialization": {
"Lua": {
"runtime": { "version": "LuaJIT" },
"workspace": {
"library": ["/usr/share/nvim/runtime/lua"]
},
"diagnostics": { "globals": ["vim"] }
}
}
}
}
}
None.
lua-language-server must be on PATH; reopen the shell after install.vim global: add vim to Lua.diagnostics.globals and set Lua.workspace.library (see above) for Neovim work.Lua.runtime.version (LuaJIT, Lua 5.4, etc.) to match your interpreter, or stdlib functions report as undefined.bun ../../scripts/verify-lsp.ts path/to/file.lua