Proto Definition Jump - VSCode Extension
一个用于Protocol Buffer (proto)文件的VSCode插件,提供定义跳转、符号搜索和引用查找功能。
功能特性
- 定义跳转: 按住Ctrl(Cmd)+点击或使用F12快捷键跳转到消息、服务、枚举、RPC方法等的定义
- 定义跳转: 按住Ctrl(Cmd)+点击或使用F12快捷键跳转到消息、服务、枚举、RPC方法等的定义
- 🚀 索引缓存: 智能预索引和缓存系统,大幅提升大项目中的跳转性能(5-20倍速度提升)
- 🔄 C++到Proto跳转: 在C++文件中右键pb消息类型,直接跳转到对应的proto定义
- 跨文件跳转: 支持跨文件的定义跳转和import解析
- 符号搜索: 在文档或工作区中快速搜索proto符号
- 引用查找: 查找符号的所有引用位置
- Import文件跳转: 支持跳转到import语句中引用的proto文件
- 智能解析: 支持包名、嵌套消息等复杂结构的解析
- 可配置路径: 支持配置proto文件的基础路径,灵活处理复杂项目结构
- 🎨 语法高亮: 完整的proto语法高亮支持,包括关键字、类型、注释等
- 🌈 语义高亮: 智能识别定义和引用,提供更精确的颜色标记
- 🎭 主题支持: 内置专用主题,兼容现有VSCode主题
支持的跳转类型
Proto文件内跳转
- 消息类型 (message)
- 服务定义 (service)
- 枚举类型 (enum)
- RPC方法 (rpc)
- 字段引用
- Import文件
C++到Proto跳转
- pb消息类型变量声明
- pb消息类型指针/引用
- 函数参数中的pb消息类型
- 智能指针包装的pb消息类型
安装方法
从源码构建
- 克隆或下载本项目
- 在项目根目录运行以下命令:
# 安装依赖
npm install
# 编译TypeScript
npm run compile
# 打包插件
npm install -g vsce
vsce package
- 在VSCode中安装生成的
.vsix文件:
- 打开VSCode
- 按Ctrl+Shift+P打开命令面板
- 输入"Extensions: Install from VSIX..."
- 选择生成的
.vsix文件
使用方法
- 在VSCode中打开包含proto文件的项目
- 打开任意
.proto文件
- 将光标放在要跳转的符号上
- 使用以下方式之一进行跳转:
- 按F12键
- 按Ctrl(Cmd)+点击
- 右键选择"Go to Definition"
- 使用命令面板执行"Proto: Go to Definition"
C++到Proto跳转使用方法
- 在C++文件中,将光标放在pb消息类型上
- 右键选择"Jump to Proto"
- 插件会自动跳转到对应的proto文件定义
支持的C++代码模式:
mmgamecenterpclogic::LoginReq req; // 直接声明
mmgamecenterpclogic::LoginReq* req_ptr; // 指针声明
std::unique_ptr<mmgamecenterpclogic::LoginReq> req_uptr; // 智能指针
void HandleLogin(const mmgamecenterpclogic::LoginReq& req); // 函数参数
示例
项目包含了示例proto文件,展示了支持的各种跳转场景:
examples/user.proto - 用户服务定义
examples/common.proto - 通用消息定义
examples/order.proto - 订单服务定义(包含跨文件引用)
开发
项目结构
├── src/
│ ├── extension.ts # 插件主入口
│ ├── protoParser.ts # Proto文件解析器
│ ├── definitionProvider.ts # 定义跳转提供器
│ └── symbolProvider.ts # 符号搜索提供器
├── examples/ # 示例proto文件
├── package.json # 插件配置
└── tsconfig.json # TypeScript配置
核心组件
- ProtoParser: 解析proto文件,提取消息、服务、枚举等定义
- ProtoDefinitionProvider: 提供定义跳转功能
- ProtoDocumentSymbolProvider: 提供文档符号列表
- ProtoWorkspaceSymbolProvider: 提供工作区符号搜索
- ProtoReferenceProvider: 提供引用查找功能
调试
- 在VSCode中打开项目
- 按F5启动调试,会打开一个新的"Extension Development Host"窗口
- 在新窗口中打开包含proto文件的项目进行测试
已知限制
- 目前仅支持proto3语法
- 不支持复杂的import路径解析(如通过protoc的-I参数指定的路径)
- 不支持proto文件的语法高亮(建议配合其他proto插件使用)
贡献
欢迎提交Issue和Pull Request来改进这个插件。
许可证
MIT License
| |