关于补全的 json 文件结构
json
{
"root": [],
"options": [],
"common_options": [],
"info": {},
"config": []
}
- 以上是 json 文件的总体结构
- json 文件使用了 schema 架构来保证 json 内容的正确和完整
- 你可以通过悬浮提示了解属性
- 其实很简单,多看几个已有的 json 文件,就能看懂了
属性详解
1. root
值类型: 数组
最核心的一个属性(通常情况下)
- 数组中的每一项是一个对象
- 对象可用属性:
name
(必需)、alias
、next
、options
、tip
- 在 vscode 中,配合 Schema 校验提示,很容易理解
- 其中,
next
和options
的值也是一个数组,几乎和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,这对补全加载速度有影响。" ] } ]