Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Snail HelperNew to Visual Studio Code? Get it now.
Snail Helper

Snail Helper

wenwj

|
5 installs
| (0) | Free
toolkit for snail
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Snail Helper

一个针对蜗牛项目的 VS Code 扩展工具集,提供快捷修复、文件头插入、基于模板创建界面文件等能力。

功能一览

  • Quick Fix(Ctrl+.):在 Lua 文件中提供“快速修复”入口,调用修复逻辑
  • 命令面板与右键菜单:
    • 修复警告代码(ID: snail.fixWarningCode)
    • 插入文件头(ID: snail.insertFileHeader)
    • 基于模板创建界面(ID: snail.createUIFormTemplate)
    • 诊断与定向修复:
      • UI 界面 onGetFocus:若下一条有效代码行未调用 ClassName.super.onGetFocus(...),给出警告并提供一键插入修复(自动补齐 self 与参数)
      • 函数式父类声明:当 class(PURE_FILE, function() return Base:create(PURE_FILE) end) 且 Base 非 cc.*,给出警告并一键替换为 class(PURE_FILE, Base)

激活方式

  • 打开 Lua 文件(onLanguage:lua)或编辑器启动完成(onStartupFinished)时激活
  • 在 Lua 文件内按 Ctrl+. 将看到“Snail Quick Fix”

命令说明

  • 修复警告代码(snail.fixWarningCode)

    • 作用:对“当前行”进行一系列重构/替换
      • 宏替换:按配置将宏名替换为枚举式写法(如 BG_STYLE_NOTEBOOK → BgStyle.NOTEBOOK)
      • TextStyleM:将 TextStyleM.setTextStyle(...) 转换为 TextStyleM.setTextStyleNew(...) 并重排参数
      • 全局函数调用:按映射表将全局方法替换为命名空间方法(如 showItemDesc → FormUtil.showItemDesc)
    • 触发方式:
      • 命令面板执行
      • 快捷键:Ctrl+Shift+L(macOS: Cmd+Shift+L)
      • Lua 文件中通过 Ctrl+. 快速修复列表
  • 插入文件头(snail.insertFileHeader)

    • 作用:在光标处(或当前选区)插入一段标准化的文件头注释
    • 支持:.lua / .c / .cpp / .h / .hpp / .cc
    • 注释前缀会根据语言自动选择 -- 或 //
    • 快捷键:Ctrl+Alt+H(macOS: Cmd+Alt+H)
  • 基于模板创建界面(snail.createUIFormTemplate)

    • 作用:基于模板生成 Lua 界面文件,替换占位符并打开生成的主文件
    • 用法:在资源管理器中右键目标文件夹,或执行命令后选择目标目录
    • 模板文件:默认读取主工程下 client/tool/scripts_template/UITemplate.txt

诊断与自动修复规则

  • UI onGetFocus 必须调用 super

    • 识别 function ClassName:onGetFocus(...),若其下一条有效代码行未包含 ClassName.super.onGetFocus(...),标记为警告
    • 快速修复:自动在下一行插入 ClassName.super.onGetFocus(self, ...),缩进为当前行 +4 空格
    • 进入条件:
      • 文件为 Lua;且该文件中存在“UI 界面类”定义:
        • ClassName = class(PURE_FILE, BaseName),并且 BaseName 不是 cc.*
        • 或 ClassName = class(PURE_FILE, function() return Base:create(PURE_FILE) end)(支持多行),并且 Base 不是 cc.*
      • 类中存在方法定义:function ClassName:onGetFocus(...)
      • 方法定义后的“下一条有效代码行”(跳过空行、-- 单行注释和 --[[ ... ]] 多行注释)没有出现 ClassName.super.onGetFocus(...)
      • UIFormBase 本身不参与此检查
  • 函数式父类应改为直接父类名

    • 识别 ClassName = class(PURE_FILE, function() return Base:create(PURE_FILE) end)(支持多行),当 Base 非 cc.* 时发出警告
    • 快速修复:把函数参数整体替换为 Base

设置项(Settings)

以下设置可在“设置”中搜索 snail 调整:

  • snail.base.rootDir(字符串,默认 ./)

    • 含义:整体工程的根目录;用于定位相对路径
  • snail.template.templateDir(字符串,资源作用域)

    • 含义:界面模板所在目录(可相对 rootDir 或绝对路径)
    • 说明:未设置时,命令会使用内置默认路径 ./client/tool/scripts_template
  • snail.fix.functionReplacement(对象,资源作用域)

    • 含义:全局函数替换映射表
    • 示例:
        {
        	"showItemDesc": "FormUtil.showItemDesc",
        	"openPanel": "UIRouter.open"
        }
      
  • snail.fix.macroReplacement(对象,资源作用域)

    • 含义:宏替换映射表
    • 示例:
        {
        	"BG_STYLE_NOTEBOOK": "BgStyle.NOTEBOOK",
        	"COLOR_RED": "Color.RED"
        }
      

注意事项

  • Quick Fix 仅在 Lua 文件且当前行非空时可看到条目
  • 模板路径不存在时会给出提示,请检查 snail.base.rootDir 与 snail.template.templateDir

兼容性

  • 需要 VS Code 版本 ≥ 1.53.0
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft