🌟 EmmyLua Analyzer Rust

GitHub stars GitHub license GitHub release Rust Crates.io

🔗 Quick Navigation

🚀 Quick StartFeatures📦 Installation📖 Documentation🛠️ Development


💫 Revolutionary Lua Development Experience

Powered by Rust's blazing performance and memory safety

🎯 What Makes Us Different

Performance First

  • 10x faster than traditional Lua servers
  • Zero-cost abstractions with Rust
  • Incremental compilation for instant feedback
  • Memory-efficient analysis engine

🧠 Intelligent Analysis

  • Advanced type inference system
  • Cross-reference resolution
  • Semantic highlighting with context
  • Real-time error detection

🔧 Universal Compatibility

  • Lua 5.1 through 5.4 support
  • LuaJIT optimization
  • Cross-platform deployment
  • Editor-agnostic LSP implementation

📚 Developer Ecosystem

  • Rich documentation generation
  • Code formatting and style enforcement
  • Static analysis and linting
  • Project scaffolding tools

🏗️ Architecture & Crates

Our project is meticulously organized into specialized crates, each serving a critical role in the Lua analysis ecosystem:

Crate Badge Description
🔍 emmylua_parser emmylua_parser The foundational Rust-based Lua parser engineered for maximum efficiency and accuracy. Powers all downstream analysis tools.
🧠 emmylua_code_analysis emmylua_code_analysis Advanced semantic analysis engine providing deep code understanding, type inference, and cross-reference resolution.
🖥️ emmylua_ls emmylua_ls The complete Language Server Protocol implementation offering rich IDE features across all major editors.
📚 emmylua_doc_cli emmylua_doc_cli Professional documentation generator creating beautiful, searchable API docs from your Lua code and annotations.
emmylua_check emmylua_check Comprehensive static analysis tool for code quality assurance, catching bugs before they reach production.

✨ Features

🎯 Core Capabilities

🔍 Language Support

  • Lua 5.1 - Full compatibility
  • Lua 5.2 - Complete feature set
  • Lua 5.3 - Integer types & UTF-8
  • Lua 5.4 - Latest features
  • LuaJIT - Performance optimizations

📝 Annotation System

  • EmmyLua annotations
  • Luacats documentation
  • Type definitions
  • Generic types
  • Union types

🛠️ LSP Features

  • Auto-completion with context
  • Go to definition
  • Find references
  • Hover information
  • Signature help
  • Rename refactoring
  • Code actions
  • Diagnostics

🎨 Code Quality

  • Syntax highlighting
  • Error detection
  • Code formatting
  • Style enforcement
  • Unused variable detection
  • Type checking

🚀 Quick Start

Prerequisites

Before getting started, ensure you have Rust installed on your system:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

📦 Installation

Choose your preferred installation method:

🦀 Via Cargo
# Install the language server
cargo install emmylua_ls

# Install documentation generator
cargo install emmylua_doc_cli

# Install static analyzer
cargo install emmylua_check
📥 Pre-built Binaries

Download the latest binaries from our releases page.

🔧 Build from Source
git clone https://github.com/CppCXY/emmylua-analyzer-rust.git
cd emmylua-analyzer-rust
cargo build --release -p emmylua_ls

🎮 Editor Integration

VS Code

Install the EmmyLua Extension for the best development experience.

Neovim

Configure with your LSP client:

vim.lsp.enable({"emmylua_ls"})
Intellij IDE

Install the EmmyLua2 Plugin from the JetBrains Marketplace.

Other Editors

EmmyLua Analyzer Rust implements the standard LSP protocol, making it compatible with any editor that supports LSP.


📖 Documentation


🛠️ Usage & Examples

🖥️ Language Server (emmylua_ls)

Start the language server with default settings:

emmylua_ls

Advanced usage with custom configuration:

# TCP mode for remote debugging
emmylua_ls -c tcp --port 5007 --log-level debug --log-path ./logs

# Stdio mode (default)
emmylua_ls -c stdio --log-level info

# Stdio mode default parameters
emmylua_ls

Server Parameters:

  • -c, --communication: Communication method (stdio | tcp)
  • --port: TCP port when using TCP mode (default: 5007)
  • --log-level: Logging level (debug | info | warn | error)
  • --log-path: Directory for log files

📚 Documentation Generator (emmylua_doc_cli)

Generate beautiful API documentation:

# Basic usage
emmylua_doc_cli --input ./src --output ./docs

✅ Static Analyzer (emmylua_check)

Perform comprehensive code analysis:

# Analyze current workspace
emmylua_check .

# Analyze specific directory with detailed output
emmylua_check ./src --verbose --format json

🏗️ Development

Building from Source

# Clone the repository
git clone https://github.com/CppCXY/emmylua-analyzer-rust.git
cd emmylua-analyzer-rust

# Build all crates
cargo build --release

# Build specific components
cargo build --release -p emmylua_ls
cargo build --release -p emmylua_doc_cli
cargo build --release -p emmylua_check

Testing

# Run all tests
cargo test

# Run tests for specific crate
cargo test -p emmylua_parser

# Run with coverage
cargo test --all-features --no-fail-fast

Contributing

We welcome contributions!.


📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

Special thanks to all contributors and the Lua community for their continuous support.

⬆ Back to Top