给 skynet sproto(.sproto)协议文件的 VSCode 语言支持:语法高亮、F12 跳转定义、悬停预览、大纲(Outline)。
功能
- 语法高亮:注释
#、类型定义.TypeName、协议name tag {、字段name id : type、基础类型、request/response。 - F12 跳转定义:光标在
模块.类型(如match_mirror.ChapterMirrorInfo、base.IntKV)上按 F12 / Ctrl+点击,跳到common/<模块>.sproto里.<类型> {的定义处。数组前缀*与 map 后缀(key)会被自动忽略。 - 悬停预览:鼠标悬停在类型引用上,直接看到该类型的完整定义块,不用跳文件。
- 大纲(Outline):编辑器面包屑 / Outline 面板列出本文件的协议(带
#tag)和类型,展开看字段;协议下按request/response分组。
约定(本项目 p3proto 布局)
proto/command/<模块>.sproto 协议: cs_xxx 67 { request{} response{} }
proto/common/<模块>.sproto 类型: .ChapterMirrorInfo { chapter_id 2 : integer }
- 类型引用 =
<模块>.<类型名>;<模块>= sproto 文件名,<类型名>定义在common/<模块>.sproto的.<类型名> {。 - 扩展从当前
.sproto文件所在目录回溯 proto 根(command/common的父目录),扫同根下command/与common/建索引;对符号链接/junction(如P3Client/proto → p3proto)天然生效。索引在文件增删改时自动失效重建。
已知限制
- F12 只解析
模块.类型与裸类型名;(key)map 键指向类型内字段的跳转暂未做。 - 类型解析基于大括号缩进约定(每行一个 header / 一个字段 / 单独的
}),非通用 sproto 词法分析;本项目文件均满足。