feat(parsers)!: remove gitlab-hosted blueprint, fusion, jsonc

Problem: Gitlab has too frequent outages, which break automation.

Solution: Drop all Gitlab-hosted parsers (two of which have been
unmaintained for years).
This commit is contained in:
Christian Clason
2025-12-05 09:59:04 +01:00
committed by Christian Clason
parent d72fa25b54
commit d2350758b3
19 changed files with 4 additions and 465 deletions

View File

@@ -42,6 +42,9 @@ zimbu = {
>[!IMPORTANT]
> The "maintainers" here refers to the person maintaining the **queries** in `nvim-treesitter`, not the parser maintainers (who likely don't use Neovim). The maintainers' duty is to review issues and PRs related to the query and to keep them updated with respect to parser changes.
>[!IMPORTANT]
> Due to reliability issues with smaller codeforges, only Github-hosted parsers are currently eligible for inclusion. (The development may happen elsewhere, but there must at least exist a Github mirror to pull the source from.) We are monitoring the situation and hope to support more codeforges again in the future.
>[!NOTE]
> To qualify for Tier 1 ("stable"), a parser needs to
> * make releases following semver (_patch_ for fixes not affecting queries; _minor_ for changes introducing new nodes or patterns; _major_ for changes removing nodes or previously valid patterns);

View File

@@ -28,7 +28,6 @@ Language | Tier | Queries | Maintainer
[bicep](https://github.com/tree-sitter-grammars/tree-sitter-bicep) | unstable | `HFIJL` | @amaanq
[bitbake](https://github.com/tree-sitter-grammars/tree-sitter-bitbake) | unstable | `HFIJL` | @amaanq
[blade](https://github.com/EmranMR/tree-sitter-blade) | unstable | `HFIJ ` | @calebdw
[blueprint](https://gitlab.com/gabmus/tree-sitter-blueprint) | unstable | `H  J ` | @gabmus
[bp](https://github.com/ambroisie/tree-sitter-bp)[^bp] | unstable | `HFIJL` | @ambroisie
[brightscript](https://github.com/ajdelcimmuto/tree-sitter-brightscript) | unstable | `HFIJ ` | @ajdelcimmuto
[c](https://github.com/tree-sitter/tree-sitter-c) | unstable | `HFIJL` | @amaanq
@@ -89,7 +88,6 @@ ecma (queries only)[^ecma] | unstable | `HFIJL` | @steelsojka
[fsh](https://github.com/mgramigna/tree-sitter-fsh) | unstable | `H  J ` | @mgramigna
[fsharp](https://github.com/ionide/tree-sitter-fsharp) | unstable | `H  J ` | @nsidorenco
[func](https://github.com/tree-sitter-grammars/tree-sitter-func) | unstable | `H  J ` | @amaanq
[fusion](https://gitlab.com/jirgn/tree-sitter-fusion) | unstable | `HFIJL` | @jirgn
[gap](https://github.com/gap-system/tree-sitter-gap)[^gap] | unstable | `HF JL` | @reiniscirpons
[gaptst](https://github.com/gap-system/tree-sitter-gaptst)[^gaptst] | unstable | `HF J ` | @reiniscirpons
[gdscript](https://github.com/PrestonKnopp/tree-sitter-gdscript)[^gdscript] | unmaintained | `HFIJL` |
@@ -152,7 +150,6 @@ html_tags (queries only)[^html_tags] | unstable | `H IJ ` | @TravonteD
[jsdoc](https://github.com/tree-sitter/tree-sitter-jsdoc) | unstable | `H    ` | @steelsojka
[json](https://github.com/tree-sitter/tree-sitter-json) | unstable | `HFI L` | @steelsojka
[json5](https://github.com/Joakker/tree-sitter-json5) | unstable | `H  J ` | @Joakker
[jsonc](https://gitlab.com/WhyNotHugo/tree-sitter-jsonc) | unstable | `HFIJL` | @WhyNotHugo
[jsonnet](https://github.com/sourcegraph/tree-sitter-jsonnet) | unstable | `HF JL` | @nawordar
jsx (queries only)[^jsx] | unstable | `HFIJ ` | @steelsojka
[julia](https://github.com/tree-sitter-grammars/tree-sitter-julia) | unstable | `HFIJL` | @clason

View File

@@ -3,7 +3,7 @@ error('Cannot require a meta file')
---@class InstallInfo
---
---URL of parser repo (Github/Gitlab)
---URL of parser repo (Github)
---@field url string
---
---Commit hash of parser to download (compatible with queries)

View File

@@ -131,14 +131,6 @@ return {
maintainers = { '@calebdw' },
tier = 2,
},
blueprint = {
install_info = {
revision = '355ef84ef8a958ac822117b652cf4d49bac16c79',
url = 'https://gitlab.com/gabmus/tree-sitter-blueprint',
},
maintainers = { '@gabmus' },
tier = 2,
},
bp = {
install_info = {
revision = 'ee641d15390183d7535777947ce0f2f1fbcee69f',
@@ -623,14 +615,6 @@ return {
maintainers = { '@amaanq' },
tier = 2,
},
fusion = {
install_info = {
revision = '19db2f47ba4c3a0f6238d4ae0e2abfca16e61dd6',
url = 'https://gitlab.com/jirgn/tree-sitter-fusion',
},
maintainers = { '@jirgn' },
tier = 2,
},
gap = {
install_info = {
revision = '2bac14863b76ad0ff6fd7204c50574732acd66df',
@@ -1142,15 +1126,6 @@ return {
maintainers = { '@Joakker' },
tier = 2,
},
jsonc = {
install_info = {
revision = '02b01653c8a1c198ae7287d566efa86a135b30d5',
url = 'https://gitlab.com/WhyNotHugo/tree-sitter-jsonc',
},
maintainers = { '@WhyNotHugo' },
requires = { 'json' },
tier = 2,
},
jsonnet = {
install_info = {
revision = 'ddd075f1939aed8147b7aa67f042eda3fce22790',

View File

@@ -1,75 +0,0 @@
(object_id) @variable
(string) @string
(escape_sequence) @string.escape
(comment) @comment @spell
(constant) @constant.builtin
(boolean) @boolean
(using) @keyword.import
(template) @keyword
(decorator) @attribute
(property_definition
(property_name) @property)
(object) @type
(signal_binding
(signal_name) @function.builtin)
(signal_binding
(function
(identifier)) @function)
(signal_binding
"swapped" @keyword)
(styles_list
"styles" @function.macro)
(layout_definition
"layout" @function.macro)
(gettext_string
"_" @function.builtin)
(menu_definition
"menu" @keyword)
(menu_section
"section" @keyword)
(menu_item
"item" @function.macro)
(import_statement
(gobject_library) @module)
(import_statement
(version_number) @number.float)
(float) @number.float
(number) @number
[
";"
"."
","
] @punctuation.delimiter
[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket

View File

@@ -1,2 +0,0 @@
((comment) @injection.content
(#set! injection.language "comment"))

View File

@@ -1,6 +0,0 @@
[
(comment)
(block)
(afx_comment)
(afx_element)
] @fold

View File

@@ -1,132 +0,0 @@
(comment) @comment @spell
(afx_comment) @comment @spell
; identifiers afx
(afx_opening_element
(afx_identifier) @tag)
(afx_closing_element
(afx_identifier) @tag)
(afx_element_self_closing
(afx_identifier) @tag)
(afx_attribute
(afx_property_identifier) @tag.attribute)
(afx_text) @spell
; identifiers eel
(eel_object_path
(eel_path_identifier) @variable.builtin
(#any-of? @variable.builtin "this" "props"))
(eel_object_path
(eel_path_identifier) @variable)
(eel_object_pair
key: (eel_property_name) @property)
(eel_method_name) @function
(eel_parameter) @variable
; identifiers fusion
; -----------
(path_part) @property
(meta_property) @attribute
(prototype_signature
"prototype" @keyword)
(include_statement
"include" @keyword.import
(source_file) @string.special.url)
(namespace_declaration
"namespace" @keyword.type
(alias_namespace) @module)
(type
name: (type_name) @type)
; tokens
; ------
(afx_opening_element
[
"<"
">"
] @punctuation.bracket)
(afx_closing_element
[
"<"
">"
"/"
] @punctuation.bracket)
(afx_element_self_closing
[
"<"
"/>"
] @punctuation.bracket)
[
(package_name)
(alias_namespace)
] @module
(namespace_declaration
"=" @operator)
(assignment
"=" @operator)
(copy
"<" @operator)
(deletion) @operator
(eel_binary_expression
operator: _ @operator)
(eel_not_expression
[
"!"
"not"
] @operator)
(string) @string
(number) @number
(boolean) @boolean
(null) @constant.builtin
(value_expression
start: _ @punctuation.special
end: _ @punctuation.special)
[
"("
")"
"{"
"}"
"["
"]"
] @punctuation.bracket
[
":"
"."
"?"
] @punctuation.delimiter
(eel_ternary_expression
[
"?"
":"
] @keyword.conditional.ternary)

View File

@@ -1,24 +0,0 @@
[
(block)
(value_dsl)
(afx_element)
(afx_element_self_closing)
(eel_array)
(eel_object)
] @indent.begin
(block
end: _ @indent.branch)
(value_dsl
end: _ @indent.branch)
(eel_array
end: _ @indent.branch)
(eel_object
end: _ @indent.branch)
(afx_closing_element) @indent.branch
(comment) @indent.ignore

View File

@@ -1,5 +0,0 @@
([
(comment)
(afx_comment)
] @injection.content
(#set! injection.language "comment"))

View File

@@ -1,23 +0,0 @@
; Fusion base
(block) @local.scope
(namespace_declaration
(alias_namespace) @local.definition.namespace)
(property
(path
(path_part) @local.definition.field))
(type
namespace: (package_name)? @local.definition.namespace
name: (type_name) @local.definition.type)
; Eel Expressions
(eel_arrow_function) @local.scope
(eel_object) @local.scope
(eel_parameter) @local.definition.parameter
(eel_object_pair
key: (eel_property_name) @local.definition.field)

View File

@@ -1 +0,0 @@
; inherits: json

View File

@@ -1,3 +0,0 @@
; inherits: json
(comment) @comment @spell

View File

@@ -1,3 +0,0 @@
; inherits: json
(comment) @indent.ignore

View File

@@ -1,2 +0,0 @@
((comment) @injection.content
(#set! injection.language "comment"))

View File

@@ -1 +0,0 @@
; inherits: json

View File

@@ -1,17 +0,0 @@
property = afx`
<!-- some comment -->
<!-- ^@comment -->
<div attribute="value">text</div>
<!-- ^@tag -->
<!-- ^@tag.attribute -->
<!-- ^@string -->
<!-- ^@punctuation.bracket -->
<!-- ^@tag -->
<Namespace:Type {...spread} some={(a) => true} />
<!-- ^@tag -->
<!-- ^@variable -->
<!-- ^@variable -->
<!-- ^@boolean -->
`

View File

@@ -1,60 +0,0 @@
include: SomeFile.fusion
//<- @keyword.import
// ^ @string.special.url
namespace: ns = Neos.Fusion.Space
//<- @keyword.type
// ^ @module
// ^ @operator
// ^ @module
prototype(MyType) < prototype(ns:SuperType) {
//<-keyword
// ^ @punctuation.bracket
// ^ @type
// ^ @punctuation.bracket
// ^ @operator
// ^ @module
// ^ @type
deleteProp >
// ^ @operator
string = 'value'
//<- @property
// ^ @operator
// ^ @string
number = 10.2
// ^ @number
null = null
// ^ @constant.builtin
boolean = true
// ^ @boolean
property.inner = "value"
//<- @property
// ^ @property
property.@meta = "value"
//<- @property
// ^ @attribute
property.type = SomeType
//<- @property
// ^ @type
property.aliasedType = ns:SomeType
//<- @property
// ^ @module
// ^ @type
property.fullQualifiedType = SomeNamespace:SomeType
//<- @property
// ^ @module
// ^ @type
}

View File

@@ -1,82 +0,0 @@
string = ${'foo'}
// ^string
string = ${'foo \'bar\' baz'}
// ^string
string = ${"foo"}
// ^string
string = ${"foo ${test}"}
// ^string
boolean = ${true}
// ^boolean
number = ${1}
// ^number
number = ${1.2}
// ^number
propertyPath = ${property.path}
// ^variable
// ^variable
thisorProps = ${this.path}
// ^variable.builtin
// ^variable
thisorProps = ${props.path}
// ^variable.builtin
// ^variable
array = ${[]}
// ^punctuation.bracket
array = ${[true, 'string', 1, [true]]}
// ^punctuation.bracket
// ^boolean
// ^string
// ^number
// ^punctuation.bracket
// ^boolean
object = ${{}}
// ^punctuation.bracket
object = ${{first: 'value', second: true, third: [], fourth: object.path }}
// ^property
// ^string
// ^property
// ^boolean
// ^property
// ^punctuation.bracket
// ^property
// ^variable
result = ${methodCall()}
// ^function
result = ${Some.methodCall(param, param)}
// ^function
// ^variable
// ^variable
arrowFunction = ${map(foo, (bar, buz) => bar * buz)}
// ^function
// ^variable
// ^variable
logic = ${!foo && !(bar || baz) and not 'string'}
// ^operator
// ^operator
// ^operator
// ^operator
// ^operator
ternary = ${ check ? true : false}
// ^@keyword.conditional.ternary
// ^@keyword.conditional.ternary