HIP 代码提示与高亮
HIP 语言 VSCode 扩展 —— 为 .hip 文件提供语法高亮与代码补全。
功能
- 语法高亮:在完整 C++ 语法基础上,独立着色 HIP 特有的修饰符、Runtime API、类型和内置常量
- 代码补全:输入时弹出 250+ 关键字列表,支持 6 个带参数占位符的代码片段(Tab 跳转)
- 零配置:安装即用,不干扰 C/C++ 官方扩展(Microsoft C/C++、clangd)
安装
从 VSIX 安装
# 1. 编译
npm install
npm run compile
# 2. 打包
vsce package
# 3. 安装
code --install-extension hip-language-support-0.2.1.vsix
或直接在 VSCode 中:扩展面板 → ··· → 从 VSIX 安装
系统要求
着色作用域
| Token Scope |
内容 |
示例 |
keyword.control.hip |
函数/存储修饰符 + <<<>>> 语法 |
__global__, __shared__ |
support.function.hip |
Runtime API / 设备函数 / DCU 专属 |
hipMalloc, __syncthreads, duDeviceFlushCache |
storage.type.hip |
HIP 特定类型 |
dim3, hipStream_t, float4 |
constant.language.hip |
内置变量 / 错误码 / 拷贝方向 |
threadIdx, hipSuccess, hipMemcpyHostToDevice |
所有 HIP token 作用域均以标准 C++ 命名空间为前缀,在不支持 HIP 自定义颜色的主题中自动回退为 C++ 对应颜色,视觉风格统一。
代码片段
| 触发器 |
展开效果 |
hipLaunchKernelGGL |
hipLaunchKernelGGL(kernel, dimGrid, dimBlock, sharedMem, stream, args...) |
hipMemcpy |
hipMemcpy(dst, src, sizeBytes, hipMemcpyKind) |
__shfl |
__shfl(var, lane, warpSize) |
__shfl_up |
__shfl_up(var, delta, warpSize) |
__shfl_down |
__shfl_down(var, delta, warpSize) |
__shfl_xor |
__shfl_xor(var, laneMask, warpSize) |
__launch_bounds__ |
__launch_bounds__(MAX_THREADS_PER_BLOCK, MIN_WARPS_PER_EXECUTION_UNIT) |
选中片段后按 Tab 在占位符间跳转。
项目结构
hip-language-support/
├── package.json # 扩展清单
├── language-configuration.json # 括号匹配、注释规则
├── tsconfig.json
├── .vscodeignore
├── syntaxes/
│ └── hip-injection.json # TextMate 包含式语法
├── src/
│ └── extension.ts # 补全提供者
└── out/ # 编译产物
开发
npm install # 安装依赖
npm run compile # 编译 TypeScript
npm run watch # 监听模式
按 F5 启动扩展开发宿主,打开 .hip 文件验证。
版本历史
v0.2.2(2026-07-13)
补全冲突修复:解决 HIP 关键字淹没用户自定义变量/函数名的问题([Issue #1](https://github.com/hip-dev/hip-language-support/issues/1))。
- 根因:
provideCompletionItems 每次无条件返回全部 250+ 条 HIP 关键字,未按光标前缀过滤,大量无关项挤占了 VSCode 原生词法补全(editor.wordBasedSuggestions)的展示空间
- 修复:
- 新增前缀匹配过滤:获取光标处单词,仅返回
startsWith 匹配的 HIP 关键字
- 无匹配时返回空数组
[](而非 undefined),确保词法补全正常合并展示
- 行为变化:输入
myVar → 不再弹出 250 条 HIP 关键字,VSCode 词法补全正常提示 myVariable;输入 hipM → HIP 关键字与用户自定义 hipMyFunction 同屏共存
v0.2.1(2026-07-13)
语法高亮机制升级:从注入式改为包含式,修复 C++ 基础关键字无高亮问题。
hip-injection.json:
- 移除
injectionSelector,改为完整语法定义
- 新增首行
{ "include": "source.cpp" },加载 C++ 全部规则后再叠加 HIP token
<<<>>> 内部 $base 改为 $self,确保 kernel 参数也可复用 C++ 高亮
package.json:
- 版本号升至
0.2.1
- 移除
grammars.injectTo,避免 include: "source.cpp" 与注入模式产生递归
v0.1.0(2026-07-13)
初始版本。包含 TextMate 注入式语法高亮(4 类 token scope)和 250+ 关键字补全提供者。
许可
MIT