Skip to content

Commit

Permalink
Add Groovy grammar (helix-editor#9350)
Browse files Browse the repository at this point in the history
* Add Groovy grammar

* Rewrite Neovim captures into Helix for Groovy

* Simplify Groovy injections

Co-authored-by: Michael Davis <[email protected]>

* Remove Neovim's spell from Groovy highlights

Co-authored-by: Michael Davis <[email protected]>

* Apply suggestions to languages.toml

* Escape backslash in groovy highlights.scm

---------

Co-authored-by: Michael Davis <[email protected]>
  • Loading branch information
2 people authored and mtoohey31 committed Jun 2, 2024
1 parent 39db968 commit b426d7a
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
| gotmpl || | | `gopls` |
| gowork || | | `gopls` |
| graphql || | | `graphql-lsp` |
| groovy || | | |
| hare || | | |
| haskell ||| | `haskell-language-server-wrapper` |
| haskell-persistent || | | |
Expand Down
13 changes: 13 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3125,3 +3125,16 @@ indent = { tab-width = 2, unit = " " }
[[grammar]]
name = "pkl"
source = { git = "https://github.com/apple/tree-sitter-pkl", rev = "c03f04a313b712f8ab00a2d862c10b37318699ae" }

[[language]]
name = "groovy"
language-id = "groovy"
scope = "source.groovy"
file-types = ["groovy", "jenkinsfile", { glob = "Jenkinsfile" }, { glob = "Jenkinsfile.*" }]
shebangs = ["groovy"]
comment-token = "//"
indent = { tab-width = 2, unit = " " }

[[grammar]]
name = "groovy"
source = { git = "https://github.com/Decodetalkers/tree-sitter-groovy", rev = "7e023227f46fee428b16a0288eeb0f65ee2523ec" }
96 changes: 96 additions & 0 deletions runtime/queries/groovy/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
(unit
(identifier) @variable)

(string
(identifier) @variable)

(escape_sequence) @constant.character.escape

(block
(unit
(identifier) @namespace))

(func
(identifier) @function)

(number) @constant.numeric

((identifier) @constant.builtin.boolean
(#any-of? @constant.builtin.boolean "true" "false"))

((identifier) @constant
(#match? @constant "^[A-Z][A-Z\\d_]*$"))

((identifier) @constant.builtin
(#eq? @constant.builtin "null"))

((identifier) @type
(#any-of? @type
"String"
"Map"
"Object"
"Boolean"
"Integer"
"List"))

((identifier) @function.builtin
(#any-of? @function.builtin
"void"
"id"
"version"
"apply"
"implementation"
"testImplementation"
"androidTestImplementation"
"debugImplementation"))

((identifier) @keyword.storage.modifier
(#eq? @keyword.storage.modifier "static"))

((identifier) @keyword.storage.type
(#any-of? @keyword.storage.type "class" "def" "interface"))

((identifier) @keyword
(#any-of? @keyword
"assert"
"new"
"extends"
"implements"
"instanceof"))

((identifier) @keyword.control.import
(#any-of? @keyword.control.import "import" "package"))

((identifier) @keyword.storage.modifier
(#any-of? @keyword.storage.modifier
"abstract"
"protected"
"private"
"public"))

((identifier) @keyword.control.exception
(#any-of? @keyword.control.exception
"throw"
"finally"
"try"
"catch"))

(string) @string

[
(line_comment)
(block_comment)
] @comment

((block_comment) @comment.block.documentation
(#match? @comment.block.documentation "^/[*][*][^*](?s:.)*[*]/$"))

((line_comment) @comment.block.documentation
(#match? @comment.block.documentation "^///[^/]*.*$"))

[
(operators)
(leading_key)
] @operator

["(" ")" "[" "]" "{" "}"] @punctuation.bracket
2 changes: 2 additions & 0 deletions runtime/queries/groovy/injections.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
([(line_comment) (block_comment)] @injection.content
(#set! injection.language "comment"))

0 comments on commit b426d7a

Please sign in to comment.