🚀 EmmyLua 语言服务器特性指南
August 12, 2025 · View on GitHub
🚀 EmmyLua 语言服务器特性指南
全面了解 EmmyLua Analyzer Rust 的强大功能

📋 目录
🎯 智能补全
EmmyLua 提供了业界领先的智能代码补全功能,不仅支持基础的函数、变量、表字段、模块补全,更包含多项创新特性。
🔧 核心补全功能
🚀 Auto Require
|
🏷️ Alias & Enum
|
⚡ Function Lambda
|
🏗️ Namespace
|
🛣️ 路径补全系统
| 功能 | 描述 | 示例 |
|---|---|---|
| 📁 Module Path | require 参数智能补全,支持 . 和 / 分隔符 | require("utils.string") |
| 💾 File System | 检测路径字符串,提供文件系统补全 | "./config/settings.lua" |
🎪 高级补全特性
- 🔧 Postfix: 变量后输入
@或.触发表达式补全 - 📝 Snippet: 内置代码片段,未来支持自定义模板系统
💡 提示: 所有补全功能都支持模糊匹配和智能排序,让您的编码体验更加流畅。
💡 代码提示
智能的鼠标悬浮提示系统,为您提供丰富的上下文信息和代码洞察。
✨ 基础提示功能
- 🔍 变量信息: 类型、作用域、定义位置
- ⚡ 函数签名: 参数类型、返回值、文档注释
- 📊 表字段: 字段类型、访问权限、继承关系
- 📦 模块信息: 导出内容、依赖关系、版本信息
🚀 高级特性
🔢 常量计算
当变量为常量类型时,悬浮提示将显示:
- ✅ 常量值: 直接显示变量的实际值
- 🧮 表达式计算: 自动计算常量表达式的结果
- 📊 类型推断: 显示计算后的精确类型
local PI = 3.14159 -- 悬浮显示: local PI: number = 3.14159
local AREA = PI * 2 -- 悬浮显示: local AREA: number = 6.28318
💡 小贴士: 常量计算功能支持复杂的数学表达式和字符串操作,帮助您更好地理解代码逻辑。
🔍 代码检查
基于 EmmyLua 注解的强大静态分析系统,帮助您在编码过程中发现潜在问题并保持代码质量。
⚙️ 检查控制
📝 注释控制
|
文件级别禁用
|
单行禁用
|
⚙️ 配置文件控制
通过配置文件精细控制检查行为:
{
"diagnostics": {
"disable": ["undefined-global", "unused-local"],
"enable": [],
"severity": {
"undefined-global": "error",
"unused": "warning"
}
}
}
📊 代码导航
强大的代码导航系统,让您在大型项目中快速定位和浏览代码。
🗂️ 文档符号
📋 结构化视图
在 VS Code 中通过多种方式访问:
- 📊 OUTLINE 面板: 左侧边栏结构化视图
- ⌨️ 快捷键:
Ctrl+Shift+O快速打开符号列表 - 🔍 实时筛选: 输入关键字快速定位符号
🔍 工作区符号搜索
🎯 全局搜索
|
🚀 智能特性
|
🔗 代码跳转
🎯 跳转到定义
| 方式 | 操作 | 描述 |
|---|---|---|
| ⌨️ 命令 | Go to Definition | 标准 LSP 跳转 |
| 👁️ 预览 | Peek Definition | 弹窗预览定义 |
| 🖱️ 点击 | Ctrl + 左键 | 快速跳转 |
🔎 引用查找
📍 标准引用查找
- 🔍 查找所有引用:
Find All References - 🖱️ 快速查找:
Ctrl + 左键
🚀 增强引用功能
graph LR
A[字符串引用] --> B[精确匹配]
C[模糊引用] --> D[智能推断]
E[配置控制] --> F[可选启用]
- 📝 字符串引用: 查找字符串字面量的使用位置
- 🎯 模糊引用: 无定义变量的智能匹配
- ⚙️ 配置控制: 通过配置文件控制启用状态
💡 提示: 引用查找支持跨文件分析,能够准确识别模块间的依赖关系。
🔄 重构功能
安全高效的代码重构工具,帮助您在不破坏代码逻辑的前提下优化代码结构。
🏷️ 重命名重构
⌨️ 快捷操作
- 重命名快捷键:
F2 - 智能检测: 自动识别所有相关引用
- 跨文件支持: 支持多文件同步重命名
🛡️ 安全机制
| 特性 | 描述 |
|---|---|
| 🔍 作用域分析 | 精确识别变量作用域,避免误重命名 |
| 📁 跨文件检测 | 检测模块导入导出的重命名影响 |
| ⚠️ 冲突检测 | 提前发现命名冲突并给出建议 |
| 📋 预览功能 | 重命名前预览所有受影响的位置 |
🎨 代码格式化
基于 EmmyLuaCodeStyle 的代码格式化系统。
✨ 格式化功能
📄 文档格式化
|
🎯 选择格式化
|
📂 代码折叠
🏗️ 标准折叠
- 🔧 函数折叠:
function ... end - 🔀 控制流折叠:
if,for,while等 - 📊 表折叠: 大型表结构折叠
🎯 自定义折叠
--region 自定义折叠区域
-- 这里是需要折叠的代码
local config = {
-- 配置项...
}
--endregion
💡 配置提示: 详细的格式化配置选项请参考 EmmyLuaCodeStyle 文档。
🔗 链接功能
智能识别和处理代码中的各种链接,提升开发效率。
🎨 颜色预览
🌈 颜色识别
EmmyLua 智能分析字符串中的颜色值并提供可视化预览
🔍 支持格式
|
✨ 可视化特性
|
📁 文档链接
🔗 智能路径识别
-- 文件路径自动识别为可点击链接
local config_path = "./config/settings.lua"
local image_file = "assets/images/logo.png"
🚀 链接功能
| 功能 | 描述 | 示例 |
|---|---|---|
| 📂 文件打开 | 点击路径直接打开文件 | "./utils/helper.lua" |
✨ 视觉增强
多层次的视觉增强功能,让代码更加清晰易读。
🎨 语义高亮
🌈 智能语法着色
基于 LSP semanticHighlighting 标准的高级语法高亮系统
🎯 高亮特性
|
🔍 Token 分析
|
🎨 视觉区分
|
🖊️ EmmyLua 增强渲染
🎯 私有协议增强
通过专有协议实现的高级代码渲染功能:
local mutable_var = 10 -- 可变变量:下划线标记
local const_value = 42 -- 常量:普通显示
✨ 增强功能
- 📏 可变变量下划线: 可变的 local 变量自动添加下划线
- 🎨 类型着色: 根据类型系统进行智能着色
- ⚡ 实时更新: 代码修改时实时更新渲染效果
💡 内联提示 (Inlay Hints)
📊 智能提示系统
在代码中显示有用的类型和状态信息,无需鼠标悬浮
🔧 提示类型
| 提示类型 | 描述 | 示例 |
|---|---|---|
| 🏷️ 参数类型 | 显示函数参数的类型信息 | function(name: string) |
| 📊 变量类型 | 显示变量的推断类型 | local count: number |
| 🔄 重写标记 | 标记重写的父类方法 | override function() |
| ⚡ 异步调用 | 标记 await 异步调用 | await coroutine() |
⚙️ 配置控制
{
"inlayHints": {
"enable": true,
"paramHint": true,
"indexHint": true,
"localHint": false,
"overrideHint": true
}
}
🎯 文档高亮
🔍 智能高亮功能
虽然编辑器提供基础高亮,EmmyLua 提供更精确的高亮支持:
|
📍 引用高亮
|
🏷️ 关键字组
|
🌐 跨编辑器支持
为其他编辑器提供与 VS Code 同等的高亮体验,确保一致的开发体验。