Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>lpc for snailNew to Visual Studio Code? Get it now.
lpc for snail

lpc for snail

liym

|
2 installs
| (0) | Free
《最强蜗牛》服务器 LPC 语言的 VSCode 语言服务插件:语法高亮、函数跳转、参数/变量定义跳转、函数列表、语法检查、公式文件支持。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

lpc for snail

《最强蜗牛》服务器 LPC 语言的 VSCode 语言服务插件。

提供语法高亮、跳转到定义(函数 / 宏 / 变量 / 参数)、函数列表、语法检查、公式文件(formula*.txt)支持等 IDE 级别能力,专为最强蜗牛 LPC 工程定制。


功能一览

🎨 语法高亮

为 .c / .h / formula*.txt 文件提供完整的 LPC 语法着色:

  • 预处理指令:#define / #include / #ifdef / #ifndef / #endif / #if / #elif / #else / #undef / #pragma,含指令行内注释、\ 续行感知
  • 关键字:loop / upto / downto / in / catch / inherit,以及 C 风格流程控制 if/else/for/while/do/switch/case/default/break/continue/return
  • 类型:void / int / float / string / buffer / mapping / array / mixed / object / function / BOOL,及可选类型 type?
  • 修饰符:public / private / protected / override / nosave / const / static / varargs
  • 预定义常量:TRUE / FALSE / UNDEFINED / EMPTY_MAPPING / EMPTY_ARRAY 等
  • 运算符:-> / => / :: / $< / ... / ..(范围)及全部赋值 / 比较 / 逻辑 / 位运算符
  • 字符串:普通双引号字符串、三引号字符串 """P..."""P
  • 字面量:数组 ({...})、mapping ([...])、十六进制 / 浮点数
  • 闭包:(: ... :) 语法块
  • efun:80+ 内置函数关键字高亮
  • 注释:// 行注释、/* */ 块注释

🧭 跳转到定义(Ctrl+Click / F12)

智能上下文感知,按 9 级优先级解析跳转目标:

场景 示例
函数内局部变量 点击变量 → 跳到它的声明处
函数参数 点击参数 → 跳到 input: 行并聚焦该参数
公式宏 CALC_NEWBIE_BONUS → formula.txt 的 [CALC_NEWBIE_BONUS] 段(而非 formula.h)
普通宏引用 RACE_TYPE_YAYA → 定义它的 .h 文件
inherit MACRONAME; inherit F_COMN_DBASE; → 宏定义所在的 .h
父类调用 ::query() → inherit 父类中的 query()
守护进程方法 CONFIG_D->get_config() → /gs/daemons/configd.c
当前文件函数 is_user() → 同文件内定义
跨文件全局搜索 同名函数跨工作区查找

📋 函数列表(Outline / Ctrl+P @)

  • 当前文件所有函数定义(含前向声明)自动显示在 VSCode 大纲视图
  • 函数签名详情:override public string? get_service_thread()
  • 变量显示类型与修饰符:nosave mapping pets
  • 函数体内局部变量 / 参数作为子节点显示
  • Ctrl+P 输入 @ 快速跳转到函数
  • 快捷键 Ctrl+K(macOS Cmd+K)打开函数列表

🔍 语法检查(诊断)

检查项 级别 说明
未知类型 Warning 校验 int/string/mapping 等合法类型及 type? 可选类型
缺少分号 Error 基于解析器错误恢复检测
未使用变量 Hint 符号表遍历检查,自动跳过 nosave/const

🧩 formula*.txt 公式文件支持

最强蜗牛的公式 DSL 文件([SECTION] + input: + output: + LPC body):

  • 复用 LPC 文法着色(关键字 / 类型 / 函数 / 注释)
  • 括号匹配、// 注释切换
  • Ctrl+Click 跳转:公式宏跳到对应 [SECTION] 段;公式内局部变量跳声明、参数跳 input 行
  • 服务端跳过诊断(公式 DSL 非合法 LPC,避免误报刷屏)

⌨️ 自动补全与悬停

  • 自动补全:efun 内置函数、当前文件函数 / 全局变量、函数内局部变量与参数、宏名;触发字符 . > : ( "
  • 悬停信息:函数签名、变量类型、efun 签名、宏定义值

🗂 工作区索引

  • 启动时扫描工作区全部 .c / .h,构建跨文件符号索引
  • 支持多工作区目录(如 fog_server + fog_new 同时索引)
  • 支持虚拟路径 ↔ 物理路径映射,跨根跳转

快捷键

快捷键 功能
Ctrl+Click / F12 跳转到定义
Ctrl+K(macOS Cmd+K) 显示当前文件函数列表
Shift+F12 查找引用

命令面板

命令 说明
LPC: Go to Symbol 显示函数列表
LPC: Rebuild Workspace Index 重建工作区索引

配置项

在工作区根目录放置 lpc-project.json 配置项目结构:

{
  "name": "最强蜗牛 - LPC 项目",
  "workspaceFolders": [
    {
      "name": "fog_server",
      "path": "server_scripts/",
      "virtualPathMappings": {
        "/gs/": "gs/",
        "/global/": "global/"
      },
      "includePaths": ["global/include/", "gs/include/"],
      "macroHeaderFiles": ["global/include/global_config.h", "gs/include/config.h"]
    }
  ]
}
字段 说明
workspaceFolders[].path 相对工作区根的 server_scripts 路径
virtualPathMappings LPC 虚拟路径到物理路径的映射
includePaths #include <...> 搜索路径
macroHeaderFiles 预加载的宏定义头文件

VSCode 设置项:

设置 默认值 说明
lpc.trace.server off 语言服务通信日志(off / messages / verbose)
lpc.maxNumberOfProblems 100 单文件最大诊断数量
lpc.projectConfig lpc-project.json 项目配置文件路径

已知限制

  • 预处理器条件编译(#ifdef 等)的内容不跳过,全部解析(指令行已空白化,不影响解析)
  • 仅字符串字面量的 call_other 支持跳转
  • 每次启动全量扫描,大项目首次加载较慢(索引持久化待后续版本)

反馈与贡献

  • 架构与实现细节见 DOC.md
  • 问题反馈:在仓库提交 Issue

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft