From d2350758b39dce3593ffa8b058f863ea4cfa5b0e Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Fri, 5 Dec 2025 09:59:04 +0100 Subject: [PATCH] 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). --- CONTRIBUTING.md | 3 + SUPPORTED_LANGUAGES.md | 3 - lua/nvim-treesitter/_meta/parsers.lua | 2 +- lua/nvim-treesitter/parsers.lua | 25 ---- runtime/queries/blueprint/highlights.scm | 75 ---------- runtime/queries/blueprint/injections.scm | 2 - runtime/queries/fusion/folds.scm | 6 - runtime/queries/fusion/highlights.scm | 132 ------------------ runtime/queries/fusion/indents.scm | 24 ---- runtime/queries/fusion/injections.scm | 5 - runtime/queries/fusion/locals.scm | 23 --- runtime/queries/jsonc/folds.scm | 1 - runtime/queries/jsonc/highlights.scm | 3 - runtime/queries/jsonc/indents.scm | 3 - runtime/queries/jsonc/injections.scm | 2 - runtime/queries/jsonc/locals.scm | 1 - tests/query/highlights/fusion/afx.fusion | 17 --- tests/query/highlights/fusion/basic.fusion | 60 -------- .../highlights/fusion/expressions.fusion | 82 ----------- 19 files changed, 4 insertions(+), 465 deletions(-) delete mode 100644 runtime/queries/blueprint/highlights.scm delete mode 100644 runtime/queries/blueprint/injections.scm delete mode 100644 runtime/queries/fusion/folds.scm delete mode 100644 runtime/queries/fusion/highlights.scm delete mode 100644 runtime/queries/fusion/indents.scm delete mode 100644 runtime/queries/fusion/injections.scm delete mode 100644 runtime/queries/fusion/locals.scm delete mode 100644 runtime/queries/jsonc/folds.scm delete mode 100644 runtime/queries/jsonc/highlights.scm delete mode 100644 runtime/queries/jsonc/indents.scm delete mode 100644 runtime/queries/jsonc/injections.scm delete mode 100644 runtime/queries/jsonc/locals.scm delete mode 100644 tests/query/highlights/fusion/afx.fusion delete mode 100644 tests/query/highlights/fusion/basic.fusion delete mode 100644 tests/query/highlights/fusion/expressions.fusion diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c4ec8e192..0dc03947b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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); diff --git a/SUPPORTED_LANGUAGES.md b/SUPPORTED_LANGUAGES.md index 7a3380cd8..695171c15 100644 --- a/SUPPORTED_LANGUAGES.md +++ b/SUPPORTED_LANGUAGES.md @@ -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 diff --git a/lua/nvim-treesitter/_meta/parsers.lua b/lua/nvim-treesitter/_meta/parsers.lua index 5af809bb0..3a97b35a5 100644 --- a/lua/nvim-treesitter/_meta/parsers.lua +++ b/lua/nvim-treesitter/_meta/parsers.lua @@ -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) diff --git a/lua/nvim-treesitter/parsers.lua b/lua/nvim-treesitter/parsers.lua index 304e3a24d..1351a00de 100644 --- a/lua/nvim-treesitter/parsers.lua +++ b/lua/nvim-treesitter/parsers.lua @@ -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', diff --git a/runtime/queries/blueprint/highlights.scm b/runtime/queries/blueprint/highlights.scm deleted file mode 100644 index f3c39f232..000000000 --- a/runtime/queries/blueprint/highlights.scm +++ /dev/null @@ -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 diff --git a/runtime/queries/blueprint/injections.scm b/runtime/queries/blueprint/injections.scm deleted file mode 100644 index 2f0e58eb6..000000000 --- a/runtime/queries/blueprint/injections.scm +++ /dev/null @@ -1,2 +0,0 @@ -((comment) @injection.content - (#set! injection.language "comment")) diff --git a/runtime/queries/fusion/folds.scm b/runtime/queries/fusion/folds.scm deleted file mode 100644 index 179fc160b..000000000 --- a/runtime/queries/fusion/folds.scm +++ /dev/null @@ -1,6 +0,0 @@ -[ - (comment) - (block) - (afx_comment) - (afx_element) -] @fold diff --git a/runtime/queries/fusion/highlights.scm b/runtime/queries/fusion/highlights.scm deleted file mode 100644 index 7108e5705..000000000 --- a/runtime/queries/fusion/highlights.scm +++ /dev/null @@ -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) diff --git a/runtime/queries/fusion/indents.scm b/runtime/queries/fusion/indents.scm deleted file mode 100644 index 0ba6cf758..000000000 --- a/runtime/queries/fusion/indents.scm +++ /dev/null @@ -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 diff --git a/runtime/queries/fusion/injections.scm b/runtime/queries/fusion/injections.scm deleted file mode 100644 index 085cdb458..000000000 --- a/runtime/queries/fusion/injections.scm +++ /dev/null @@ -1,5 +0,0 @@ -([ - (comment) - (afx_comment) -] @injection.content - (#set! injection.language "comment")) diff --git a/runtime/queries/fusion/locals.scm b/runtime/queries/fusion/locals.scm deleted file mode 100644 index d23e0ab46..000000000 --- a/runtime/queries/fusion/locals.scm +++ /dev/null @@ -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) diff --git a/runtime/queries/jsonc/folds.scm b/runtime/queries/jsonc/folds.scm deleted file mode 100644 index 41269219e..000000000 --- a/runtime/queries/jsonc/folds.scm +++ /dev/null @@ -1 +0,0 @@ -; inherits: json diff --git a/runtime/queries/jsonc/highlights.scm b/runtime/queries/jsonc/highlights.scm deleted file mode 100644 index e50112155..000000000 --- a/runtime/queries/jsonc/highlights.scm +++ /dev/null @@ -1,3 +0,0 @@ -; inherits: json - -(comment) @comment @spell diff --git a/runtime/queries/jsonc/indents.scm b/runtime/queries/jsonc/indents.scm deleted file mode 100644 index 3b01ca999..000000000 --- a/runtime/queries/jsonc/indents.scm +++ /dev/null @@ -1,3 +0,0 @@ -; inherits: json - -(comment) @indent.ignore diff --git a/runtime/queries/jsonc/injections.scm b/runtime/queries/jsonc/injections.scm deleted file mode 100644 index 2f0e58eb6..000000000 --- a/runtime/queries/jsonc/injections.scm +++ /dev/null @@ -1,2 +0,0 @@ -((comment) @injection.content - (#set! injection.language "comment")) diff --git a/runtime/queries/jsonc/locals.scm b/runtime/queries/jsonc/locals.scm deleted file mode 100644 index 41269219e..000000000 --- a/runtime/queries/jsonc/locals.scm +++ /dev/null @@ -1 +0,0 @@ -; inherits: json diff --git a/tests/query/highlights/fusion/afx.fusion b/tests/query/highlights/fusion/afx.fusion deleted file mode 100644 index 4ccb8174f..000000000 --- a/tests/query/highlights/fusion/afx.fusion +++ /dev/null @@ -1,17 +0,0 @@ -property = afx` - - - -
text
- - - - - - - true} /> - - - - -` diff --git a/tests/query/highlights/fusion/basic.fusion b/tests/query/highlights/fusion/basic.fusion deleted file mode 100644 index 5f3cc346a..000000000 --- a/tests/query/highlights/fusion/basic.fusion +++ /dev/null @@ -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 - -} - diff --git a/tests/query/highlights/fusion/expressions.fusion b/tests/query/highlights/fusion/expressions.fusion deleted file mode 100644 index b1822dda8..000000000 --- a/tests/query/highlights/fusion/expressions.fusion +++ /dev/null @@ -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 - -