Skip to content

EmmyLuaLs/emmylua-analyzer-rust

Repository files navigation

EmmyLua Analyzer Rust

A high-performance Lua language server, linter, and documentation generator — built with Rust.

GitHub stars License Release Crates.io

Quick Start · Features · Documentation · Development


Why EmmyLua Analyzer 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

Quick Start

Install

# Via Cargo
cargo install emmylua_ls          # Language server
cargo install emmylua_check       # Static analyzer / linter
cargo install emmylua_doc_cli     # Documentation generator

Or download pre-built binaries from the Releases page.

Editor Setup

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.


Features

Language Support

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

LSP Capabilities

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

Code Quality

  • Static analysis with 40+ diagnostic rules
  • Code formatting and style enforcement
  • EmmyLua / Luacats annotation support

Usage

Language Server

# 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

Static Analyzer

emmylua_check .                           # Analyze current directory
emmylua_check ./src --verbose --format json  # Detailed JSON output

Documentation Generator

emmylua_doc_cli ./src --output ./docs

Documentation

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

Development

Build from Source

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 server

Test

cargo test                      # Run all tests
cargo test -p emmylua_parser    # Run parser tests only

Contributing

We welcome contributions! See CONTRIBUTING.md for details.


License

MIT


Thanks to all contributors and the Lua community.

Back to top

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors