Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>My Lua LspNew to Visual Studio Code? Get it now.
My Lua Lsp

My Lua Lsp

朱国森

|
13 installs
| (0) | Free
My Lua language support with EmmyLua annotations
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

MyLua LSP

MyLua LSP 为 VS Code 提供 Lua 语言支持,内置 mylua-lsp 语言服务器,并支持 EmmyLua 注解。

特点

  • Rust 实现,启动快:语言服务器用纯 Rust 编写,原生多线程并发解析;在 2 万+ Lua 文件的工程上,打开后约 3 秒即可完成索引初始化(具体取决于硬件与文件分布)。
  • 大规模工程不卡顿:增量解析只重算变动子树,编辑响应稳定;全工作区索引常驻内存,跳转、引用、符号搜索毫秒级返回。

主要功能

  • 语法高亮:Lua 关键字、字符串、数字、注释与 EmmyLua ---@ 注解高亮
  • 语言服务:诊断、悬浮提示、跳转定义、查找引用、大纲、工作区符号搜索
  • 语义增强:Lua 标准库符号识别、全局变量提示、EmmyLua 类型检查
  • 开箱即用:扩展包内置对应平台的 mylua-lsp,一般无需额外配置

快速开始

  1. 安装扩展后打开 .lua 文件。
  2. 等待状态栏中的 MyLua 索引完成提示。
  3. 直接使用 VS Code 的跳转、悬浮、引用、诊断和大纲等能力。

常用配置

所有配置均有默认值,开箱即用。以下是最常调整的几项:

{
  // 诊断范围:full(默认)诊断整个工作区;
  // 大型项目可改为 "openOnly",只诊断已打开的文件,避免大量警告堆积。
  "mylua.diagnostics.scope": "full",

  // 额外的 EmmyLua 注解库目录(LÖVE、OpenResty、内部 SDK 等),
  // 支持绝对路径、~/… 与相对首个工作区根目录的路径
  "mylua.workspace.library": ["./typings"],

  // 觉得内嵌提示太吵时关闭
  "mylua.inlayHint.enable": true
}

几个不常用但影响较大的配置

  • mylua.require.aliases — require 路径别名(点分前缀匹配,最长前缀优先)。项目里用了 require('@utils.foo') 这类别名时必须配置,否则别名模块的跳转与返回值类型推断都无法解析。例:{ "@": "src", "@utils": "src.utils" }
  • mylua.performance.slowParseKeepTreeThresholdMs — 冷启动扫描期间的语法树保留阈值(默认 500ms):扫描时只有解析慢于该值的文件保留语法树,其余只留索引摘要,因此初始内存占用较低。注意它只影响初始扫描——之后使用查找引用等需要语法树的功能时,会重新解析并常驻内存,第一次查找引用比较慢。内存占用可在状态栏 mylua 的tip里看到,上限约为源码总量的 30 倍(索引信息约 10 倍 + 语法树约 20 倍)。如果你的项目文件数量较少,降低这个值到 0,就会全部缓存语法树。
  • mylua.workspace.priorityKeyword — 定义候选优先级的路径片段(默认 ["annotation"],大小写不敏感)。把项目的类型注解/stub 集中放在名字含特定片段的目录(如 typings/)并将片段加入此列表后,当多个文件定义同名符号时,该目录下的定义始终胜出——适合放高优先级的类型注释,避免工作区里同名全局遮蔽注解。修改后需重启语言服务生效。

延伸阅读

  • 全部配置项(Lua 版本、诊断细项等)见配置参考。
  • mylua-lsp 在设计上做了一些取舍:某些写法能获得更精确的跳转、类型与诊断,另一些惯用法则有意不支持。对 Lua 代码与 EmmyLua 注解的推荐用法见推荐写法。

常见问题

没有诊断或跳转结果?

  • 确认当前文件语言模式是 Lua。
  • 等待工作区索引完成。
  • 检查 mylua.workspace.include / mylua.workspace.exclude 是否排除了目标文件。

某些 .lua 文件没有被索引?

MyLua LSP 支持 UTF-8(含 BOM)和 UTF-16(LE/BE,需 BOM)编码的 Lua 源文件。以下文件在工作区扫描时会被跳过:

  • 编译后的 Lua 字节码(luac 输出)
  • 使用 GBK 等不支持的编码保存的文件

开启 mylua.debug.fileLog 后可在 .vscode/mylua-lsp.log 中查看被跳过的文件列表。

反馈

问题与建议请提交到仓库 Issues:https://github.com/treert/ai-mylua-lsp/issues

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft