{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/fujidana/vscode-spec-command/refs/heads/master/schema/scdict.schema.json", "title": "spec-command dictionary", "description": "Dictionary for \"fujidana.spec-command\", an extension of Visual Studio Code for spec command files. The extension can load dictionaries that comply with the JSON schema to provide code hints.", "type": "object", "required": [ "kind", "identifier", "scope", "categories" ], "properties": { "$schema": { "type": "string", "description": "URI of the JSON schema. If the file name is *.scdict.json, this property is optional and defaults to the URI of the schema in the extension. Otherwise, the value of this property should be the URI of the schema in the extension or that in the remote repository (GitHub)." }, "kind": { "const": "spec-command.dictionary", "description": "Kind of the dictionary. The value must be \"spec-command.dictionary\"." }, "identifier": { "type": "string", "description": "Identifier of the dictionary, typically given by the user. The value should be unique within the scope.", "minLength": 1 }, "scope": { "type": "string", "description": "Scope of the dictionary. This also indicates where the dictionary is stored.", "enum": [ "extension", "global", "workspace" ] }, "name": { "type": "string", "description": "Name of the dictionary. It should not include any line breaks." }, "description": { "type": "string", "description": "Description of the dictionary. The extension renders the value as Markdown-style text." }, "categories": { "type": "object", "description": "Categories of the dictionary. Each property represents a category.", "additionalProperties": false, "properties": { "constant": { "$ref": "#/$defs/entriesInCategory", "description": "Category for constants. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "variable": { "$ref": "#/$defs/entriesInCategory", "description": "Category for variables. Both scalar variables and associative arrays are categorized here. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "array": { "$ref": "#/$defs/entriesInCategory", "description": "Category for data arrays. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "macro": { "$ref": "#/$defs/entriesInCategory", "description": "Category for macros. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "function": { "$ref": "#/$defs/entriesInCategory", "description": "Category for functions. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "keyword": { "$ref": "#/$defs/entriesInCategory", "description": "Category for reserved keywords. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "snippet": { "$ref": "#/$defs/entriesInCategory", "description": "Category for code snippets. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "motor": { "$ref": "#/$defs/entriesInCategory", "description": "Category for motors. Each property is an entry of the dictionary. The key of the property must be a valid identifier." }, "counter": { "$ref": "#/$defs/entriesInCategory", "description": "Category for counters. Each property is an entry of the dictionary. The key of the property must be a valid identifier." } } } }, "$defs": { "entriesInCategory": { "type": "object", "propertyNames": { "pattern": "^[_a-zA-Z][_a-zA-Z0-9]*$" }, "patternProperties": { "": { "$ref": "#/$defs/entry" } }, "additionalProperties": false }, "entry": { "type": "object", "description": "An entry in a category. \"signature\" property is required.", "required": [ "signature" ], "additionalProperties": false, "properties": { "signature": { "type": "string", "description": "Signature of the entry. In case of variables and constants, this is usually the name of the variable or constant. In case of functions, this is usually the function signature including parameters and surrounding parentheses.", "minLength": 1 }, "description": { "type": "string", "description": "Description of the entry. The extension parses the value as Markdown-style text and shows it in the descriptive area of the code hints." }, "available": { "$ref": "#/$defs/versionRange", "description": "Version range in which the entry is available." }, "deprecated": { "$ref": "#/$defs/versionRange", "description": "Version range in which the entry is deprecated." }, "snippet": { "type": "string", "description": "Code snippet to be inserted when the entry is selected in code completion." }, "overloads": { "type": "array", "description": "Overloads of the entry, only used for functions.", "items": { "type": "object", "required": [ "signature" ], "properties": { "signature": { "type": "string", "description": "Signature of the overload. This is usually the function signature including parameters and surrounding parentheses." }, "description": { "type": "string", "description": "Description of the overload. The extension parses the value as Markdown-style text and shows it in the descriptive area of the code hints." } } } } } }, "versionRange": { "type": "object", "additionalProperties": false, "properties": { "range": { "type": "string", "description": "Version range in semver format. If the range is unknown, use \">=0.0.0\"." }, "description": { "type": "string", "description": "Description of the version range." } }, "required": [ "range" ] } } }