You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VSCode中创建自定义语言的语法检查与语法高亮功能?

实现VSCode自定义语言支持的步骤

1. 创建VSCode扩展项目

  • 先安装Node.js,再全局安装Yeoman和VSCode扩展生成器:npm install -g yo generator-code
  • 运行yo code,选择「New Language Support」模板,按提示输入语言标识(比如loose-json-plsql)、关联的文件扩展名(比如.ljp),生成基础扩展结构。

2. 编写语法高亮规则(TextMate语法)

  • 打开扩展目录下的syntaxes/loose-json-plsql.tmLanguage.json,修改规则适配你的宽松JSON结构:
    • 匹配无引号键:添加规则"match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*:",将键标记为entity.name.tag.json类的高亮组,让键显示为特定颜色。
    • 处理布尔值:匹配\\b(true|false)\\b,标记为constant.language.boolean.json,让true/false高亮显示。
    • 嵌套PL/SQL高亮:针对包含PL/SQL的字符串值(如myQuery对应的内容),用begin/end;作为边界,通过include: source.plsql复用VSCode自带的PL/SQL语法高亮规则,让字符串内的PL/SQL代码自动高亮。
  • 按F5启动扩展开发窗口,打开你的自定义测试文件,验证高亮效果,调整正则或规则直到符合预期。

3. 实现语法检查功能

  • 两种可选方案:
    • 简易方案:写一个小脚本把宽松JSON转换为标准JSON(给键补加引号),然后结合VSCode的jsonValidation贡献点,用JSON Schema做基础校验。
    • 专业方案:实现自定义语言服务器(LSP):
      • 安装依赖:npm install vscode-languageserver vscode-languageserver-utils
      • 编写服务器逻辑:解析无引号键的JSON结构,检查对象/数组闭合、键值对格式错误;调用PL/SQL语法检查工具(如Oracle官方语法校验库)验证字符串内的PL/SQL代码。
      • 在package.json中配置语言服务器的启动脚本,让VSCode在打开自定义文件时自动启动服务。

4. 添加自动补全功能

  • 基于语言服务器实现动态补全:
    • 在语言服务器中监听completionItem/resolve请求,根据当前上下文生成补全建议:
      • 针对无引号键:提供常用键名(如action、debug、myQuery)的快速补全。
      • 针对PL/SQL字符串:复用VSCode的PL/SQL补全规则,在字符串内触发PL/SQL关键字、函数名的补全。
  • 如果需求简单,也可以在package.json的contributions.completions中定义静态补全项,但动态补全更灵活。

5. 配置扩展全局可用

  • 完善package.json中的配置:
    • 确保contributes.languages里的extensions字段包含你的自定义文件扩展名(如[".ljp"]),让VSCode自动识别该类型文件。
    • 可添加configuration选项,允许用户自定义高亮颜色、补全触发时机等。

6. 全局安装扩展

  • 本地打包:在扩展目录运行vsce package生成.vsix安装包。
  • 全局安装:打开VSCode,通过「扩展」面板的「从VSIX安装」选项导入生成的文件,即可在所有项目中使用该自定义语言支持。

内容的提问来源于stack exchange,提问作者DarkLeader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:47:12