Tencent JCE IDL Support
为腾讯 JCE(类似 Thrift/Protobuf 的接口描述语言).jce 文件提供 VSCode 支持:语法高亮 + 跳转到定义。

功能
1. 语法高亮
- 关键字
module / struct / enum / interface / const / optional / require / vector / map / key / in / out
- 内置类型
bool / byte / short / int / long / float / double / string / void
- struct 字段、enum 成员、interface 方法
- 字段标签
0 1 2 ...
#include "..." 预处理器
// 与 /* */ 注释
2. 跳转到定义(Go to Definition)
- 光标放到标识符上按
F12 或 Ctrl/Cmd + 点击
- 跨工作区所有
.jce 文件查找
- 支持:
module / struct / enum / interface / const / 字段 / 枚举成员 / 方法
- 文件创建、修改、删除都会自动重建索引
使用
直接在 VSCode 扩展市场搜索 JCE Language Support 安装;或手动:
# 从 .vsix 安装
code --install-extension jce-language-support-0.1.0.vsix
# 或开发模式:把本目录软链到扩展目录
ln -s "$(pwd)" ~/.vscode/extensions/winjay.jce-language-support-0.1.0
打开任意 .jce 文件即可生效。
参与开发
npm install
npm run watch # 监听模式编译
修改语法或代码后 Cmd+Shift+P → Developer: Reload Window 即可看到效果。
项目结构
jce-vscode-extension/
├── package.json
├── tsconfig.json
├── language-configuration.json
├── icon.png
├── LICENSE
├── CHANGELOG.md
├── syntaxes/
│ └── jce.tmLanguage.json
└── src/
├── extension.ts
└── jceIndex.ts
工作原理
- 语法高亮:TextMate 规则(
syntaxes/jce.tmLanguage.json),由 VSCode 文本引擎直接消费
- 跳转:插件激活时扫描工作区
**/*.jce,对每行做轻量正则解析,提取 module / struct / enum / interface / const / field / enumMember / method 的名字与位置,存到内存索引。DefinitionProvider 根据光标词查询索引返回 Location
发布到 VSCode Marketplace
前置条件
注册 publisher
访问 https://marketplace.visualstudio.com/manage,用 Microsoft / GitHub 账号登录并创建一个 publisher。package.json 中 publisher 字段必须与该名字完全一致。
创建 Personal Access Token (PAT)
访问 https://dev.azure.com → 右上角用户设置 → Personal Access Tokens → New Token
- Organization: All accessible organizations
- Scopes: 勾选 Marketplace → Manage
- 保存 token(关闭页面后无法再次查看)
安装 vsce
npm install -g @vscode/vsce
打包
npm run package
# 产物:jce-language-support-0.1.0.vsix
首次发布
# 把 token 写入 vsce 本地配置(仅本机)
vsce login <publisher>
# 按提示粘贴 PAT
# 真正发布
vsce publish
# 等价于:先 vsce package 再上传 .vsix
发布成功后约 5~10 分钟会出现在 https://marketplace.visualstudio.com 上。
后续升级
# 1) 改 package.json 的 version
# 2) 在 CHANGELOG.md 追加变更
vsce publish
# 会自动用新 version 打包并发布
只打包不发布(公司内部分发)
vsce package
# 拿到 .vsix 后:
code --install-extension jce-language-support-0.1.0.vsix
已知限制
- 解析器为单行正则,未处理跨行字段(JCE 中罕见)
- 注释中含
{} 时会干扰 brace 深度跟踪
- 解析器无语法树,未来支持 hover / completion 时可考虑引入真正的词法解析
License
MIT