feat: move tree-sitter configuration to dedicated file (#3700)
This commit is contained in:
parent
94a8262110
commit
ea3846a2c5
20 changed files with 1828 additions and 536 deletions
266
docs/assets/schemas/config.schema.json
Normal file
266
docs/assets/schemas/config.schema.json
Normal file
|
|
@ -0,0 +1,266 @@
|
|||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"grammars": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string",
|
||||
"description": "The name of the grammar.",
|
||||
"pattern": "^[a-z0-9_]+$"
|
||||
},
|
||||
"camelcase": {
|
||||
"type": "string",
|
||||
"description": "The name converted to CamelCase.",
|
||||
"pattern": "^\\w+$",
|
||||
"examples": [
|
||||
"Rust",
|
||||
"HTML"
|
||||
],
|
||||
"$comment": "This is used in the description and the class names."
|
||||
},
|
||||
"scope": {
|
||||
"type": "string",
|
||||
"description": "The TextMate scope that represents this language.",
|
||||
"pattern": "^(source|text)(\\.\\w+)+$",
|
||||
"examples": [
|
||||
"source.rust",
|
||||
"text.html"
|
||||
]
|
||||
},
|
||||
"path": {
|
||||
"type": "string",
|
||||
"default": ".",
|
||||
"description": "The relative path to the directory containing the grammar."
|
||||
},
|
||||
"external-files": {
|
||||
"type": "array",
|
||||
"description": "The relative paths to files that should be checked for modifications during recompilation.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"file-types": {
|
||||
"type": "array",
|
||||
"description": "An array of filename suffix strings.",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"highlights": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
],
|
||||
"default": "queries/highlights.scm",
|
||||
"description": "The path(s) to the grammar's highlight queries."
|
||||
},
|
||||
"injections": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
],
|
||||
"default": "queries/injections.scm",
|
||||
"description": "The path(s) to the grammar's injection queries."
|
||||
},
|
||||
"locals": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
],
|
||||
"default": "queries/locals.scm",
|
||||
"description": "The path(s) to the grammar's local variable queries."
|
||||
},
|
||||
"tags": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1
|
||||
}
|
||||
],
|
||||
"default": "queries/tags.scm",
|
||||
"description": "The path(s) to the grammar's code navigation queries."
|
||||
},
|
||||
"injection-regex": {
|
||||
"type": "string",
|
||||
"format": "regex",
|
||||
"description": "A regex pattern that will be tested against a language name in order to determine whether this language should be used for a potential language injection site."
|
||||
},
|
||||
"first-line-regex": {
|
||||
"type": "string",
|
||||
"format": "regex",
|
||||
"description": "A regex pattern that will be tested against the first line of a file in order to determine whether this language applies to the file."
|
||||
},
|
||||
"content-regex": {
|
||||
"type": "string",
|
||||
"format": "regex",
|
||||
"description": "A regex pattern that will be tested against the contents of the file in order to break ties in cases where multiple grammars matched the file."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name",
|
||||
"scope"
|
||||
]
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"metadata": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"version": {
|
||||
"type": "string",
|
||||
"description": "The current version of the project.",
|
||||
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
||||
"$comment": "The CLI will use this version to update package.json, Cargo.toml, pyproject.toml, Makefile."
|
||||
},
|
||||
"license": {
|
||||
"type": "string",
|
||||
"default": "MIT",
|
||||
"description": "The project's license."
|
||||
},
|
||||
"description": {
|
||||
"type": "string",
|
||||
"description": "The project's description.",
|
||||
"examples": [
|
||||
"Rust grammar for tree-sitter"
|
||||
]
|
||||
},
|
||||
"links": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"repository": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "The project's repository."
|
||||
},
|
||||
"homepage": {
|
||||
"type": "string",
|
||||
"format": "uri",
|
||||
"description": "The project's homepage."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"repository"
|
||||
]
|
||||
},
|
||||
"authors": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"description": "The project's author(s).",
|
||||
"properties": {
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"email": {
|
||||
"type": "string",
|
||||
"format": "email"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "uri"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"name"
|
||||
]
|
||||
},
|
||||
"minItems": 1
|
||||
},
|
||||
"namespace": {
|
||||
"type": "string",
|
||||
"description": "The namespace for the Java & Kotlin packages.",
|
||||
"default": "io.github.tree-sitter",
|
||||
"$comment": "Used as is in the Maven/Gradle group name and transformed accordingly for the package names and directories (e.g. io.github.treesitter.jtreesitter.html - src/main/java/io/github/treesitter/jtreesitter/html)."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"version",
|
||||
"links"
|
||||
]
|
||||
},
|
||||
"bindings": {
|
||||
"type": "object",
|
||||
"description": "The language bindings that will be generated.",
|
||||
"properties": {
|
||||
"c": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"const": true,
|
||||
"$comment": "Always generated"
|
||||
},
|
||||
"go": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"java": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"kotlin": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"node": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"const": true,
|
||||
"$comment": "Always generated (for now)"
|
||||
},
|
||||
"python": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"rust": {
|
||||
"type": "boolean",
|
||||
"default": true,
|
||||
"const": true,
|
||||
"$comment": "Always generated"
|
||||
},
|
||||
"swift": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"grammars",
|
||||
"metadata"
|
||||
]
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue