Skip to content

Repository files navigation

HIP 代码提示与高亮

HIP 语言 VSCode 扩展 —— 为 .hip 文件提供语法高亮与代码补全。


功能

  • 语法高亮:在完整 C++ 语法基础上,独立着色 HIP 特有的修饰符、Runtime API、类型和内置常量
  • 代码补全:360+ 补全项,涵盖 HIP API、C++ 标准类型/关键字/标准库,支持 13 个代码片段(Tab 跳转)
  • 智能排序:C++ 标准类型和关键字优先展示,HIP 专有 API 排在后方,用户自定义变量自然置顶
  • 零配置:安装即用,不干扰 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 安装

系统要求

  • VSCode >= 1.85.0

着色作用域

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++ 对应颜色,视觉风格统一。

代码片段

HIP 片段

触发器 展开效果
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)

C++ 常用片段

触发器 展开效果
#include #include <header>
main int main(int argc, char* argv[]) { ... }
for for (int i = 0; i < n; i++) { ... }
forr for (auto& item : container) { ... }(范围 for)
printf printf("%s\n", args);
cout std::cout << expr << std::endl;
cin std::cin >> var;

选中片段后按 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.3.0(2026-07-17)

C++ 兼容性增强与补全排序优化

  • 新增 C++ 标准类型补全intfloatdoublesize_tunsigned intint8_t~int64_t 等 30+ 种类型
  • 新增 C++ 关键字补全ifforclassnamespacetemplateconststatic 等 60+ 个关键字
  • 新增 C++ 标准库补全std::cinstd::coutstd::vectorstd::sortstd::string 等 70+ 个常用函数/容器
  • 新增 C++ 代码片段mainforforr(范围 for)、coutcin#includeprintf
  • 移除向量类型:删除 int1int4float1float4 等非标准向量类型及其构造函数
  • 优化补全排序:C++ 标准类型/关键字优先展示(za_ 前缀),HIP 专有 API 排在后方(zz_ 前缀),用户自定义变量自然置顶

v0.2.2(2026-07-13)

补全冲突修复:解决 HIP 关键字淹没用户自定义变量/函数名的问题(Issue #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

About

HIP 语言 VSCode 扩展 —— 为 `.hip` 文件提供语法高亮与代码补全。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages