A high-performance Lua language server, linter, and documentation generator — built with Rust.
- Fast — Incremental analysis powered by Rust; handles large codebases with ease
- Complete — Supports Lua 5.1 – 5.5 and LuaJIT, with EmmyLua & Luacats annotations
- Universal — Standard LSP protocol works with VS Code, Neovim, IntelliJ, and any LSP-compatible editor
- All-in-one — Language server, code formatter, static analyzer, and doc generator in a single toolchain
# Via Cargo
cargo install emmylua_ls # Language server
cargo install emmylua_check # Static analyzer / linter
cargo install emmylua_doc_cli # Documentation generatorOr download pre-built binaries from the Releases page.
VS Code
Install the EmmyLua Extension.
Neovim
vim.lsp.enable({"emmylua_ls"})IntelliJ IDE
Install the EmmyLua2 Plugin from the JetBrains Marketplace.
Other editors
Any editor with LSP support can use emmylua_ls via stdio (default) or TCP.
| Version | Status |
|---|---|
| Lua 5.1 | ✅ Full support |
| Lua 5.2 | ✅ Full support |
| Lua 5.3 | ✅ Integer types, UTF-8 |
| Lua 5.4 | ✅ Attributes, generational GC |
| Lua 5.5 | ✅ New global syntax |
| LuaJIT | ✅ FFI, bit operations |
Completion · Go to Definition · Find References · Go to Implementation · Hover · Signature Help · Rename · Code Actions · Diagnostics · Document & Workspace Symbols · Formatting · Folding · Document Links · Semantic Tokens · Inlay Hints · Document Highlights · Code Lens · Call Hierarchy · Document Color
- Static analysis with 40+ diagnostic rules
- Code formatting and style enforcement
- EmmyLua / Luacats annotation support
# Default stdio mode
emmylua_ls
# TCP mode for remote debugging
emmylua_ls -c tcp --port 5007 --log-level debug --log-path ./logs| Parameter | Description |
|---|---|
-c, --communication |
stdio (default) or tcp |
--port |
TCP port (default: 5007) |
--log-level |
debug / info / warn / error |
--log-path |
Log output directory |
emmylua_check . # Analyze current directory
emmylua_check ./src --verbose --format json # Detailed JSON outputemmylua_doc_cli ./src --output ./docs| Resource | Link |
|---|---|
| Features Guide | features_EN.md |
| Configuration | emmyrc_json_EN.md |
| Annotations Reference | annotations_EN |
| Code Style | EmmyLuaCodeStyle |
| External Formatters | external_formatter_options_EN.md |
git clone https://github.com/EmmyLuaLs/emmylua-analyzer-rust.git
cd emmylua-analyzer-rust
cargo build --release # Build everything
cargo build --release -p emmylua_ls # Build only the language servercargo test # Run all tests
cargo test -p emmylua_parser # Run parser tests onlyWe welcome contributions! See CONTRIBUTING.md for details.
Thanks to all contributors and the Lua community.