Skip to content

关于补全的 json 文件结构

json
{
  "root": [],
  "options": [],
  "common_options": [],
  "info": {},
  "config": []
}
  • 以上是 json 文件的总体结构
  • json 文件使用了 schema 架构来保证 json 内容的正确和完整
    • 你可以通过悬浮提示了解属性
  • 其实很简单,多看几个已有的 json 文件,就能看懂了

属性详解

1. root

  • 值类型: 数组

  • 最核心的一个属性(通常情况下)

    • 数组中的每一项是一个对象
    • 对象可用属性: name(必需)、aliasnextoptionstip
    • 在 vscode 中,配合 Schema 校验提示,很容易理解
    • 其中,nextoptions 的值也是一个数组,几乎和 root 相同
      • 不同点: options 中不允许添加 options 属性(就是不能在选项中嵌套选项)

2. options

  • 值类型: 数组
  • root 中的每一项的 options 相同
    json
    {
      "options": [
        {
          "name": "--version",
          "alias": ["-V"],
          "tip": ["显示当前版本"]
        }
      ]
    }

3. common_options

  • 值类型: 数组
  • 结构与 options 相同
  • 这里面的所有选项在任何时候都会显示
  • json
    {
      "common_options": [
        {
          "name": "--help",
          "alias": ["-h"],
          "tip": ["显示帮助信息"]
        }
      ]
    }

4. info

  • 值类型: 对象
  • 定义的所有值,可以在其他地方通过以下语法获取
    json
    // {{ $info.xxx }}
    // {{ $json.xxx }} $json 是整个 json 文件形成的对象
    {
      "root": [
        {
          "name": "test",
          "tip": "{{ $info.test_tip }}"
        },
        {
          "name": "abc",
          "tip": "{{ $json.info.abc_tip }}"
        }
      ],
      "info": {
        "test_tip": "这是一个测试内容",
        "abc_tip": "abcdefg"
      }
    }

5. config

  • 值类型: 数组
  • 定义补全的特殊配置(以 git 的特殊配置为例)
    json
    "config": [
        {
          "name": "max_commit",
          "value": 20,
          "values": [
              -1,
              20
          ],
          "tip": [
              "可以为当前项目解析的 commit 的最大数量,默认为 20。\n",
              "如果设置为 <@Magenta>-1<@Blue>, 会解析所有 commit,这对补全加载速度有影响。"
          ]
        }
    ]