feat(languages): GraphQL (#1515)

* Add Graphql language support

* Fix docs gen

* Add JS Graphql injection query

* Updates based on PR feedback

Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
This commit is contained in:
Jared Ramirez 2022-01-21 06:16:40 -08:00 committed by GitHub
parent f453f8724d
commit 0b55b21f30
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 185 additions and 0 deletions

4
.gitmodules vendored
View file

@ -206,6 +206,10 @@
path = helix-syntax/languages/tree-sitter-git-config
url = https://github.com/the-mikedavis/tree-sitter-git-config.git
shallow = true
[submodule "helix-syntax/languages/tree-sitter-graphql"]
path = helix-syntax/languages/tree-sitter-graphql
url = https://github.com/bkegley/tree-sitter-graphql
shallow = true
[submodule "helix-syntax/languages/tree-sitter-elm"]
path = helix-syntax/languages/tree-sitter-elm
url = https://github.com/elm-tooling/tree-sitter-elm

View file

@ -18,6 +18,7 @@
| git-rebase | ✓ | | | |
| glsl | ✓ | | ✓ | |
| go | ✓ | ✓ | ✓ | `gopls` |
| graphql | ✓ | | | |
| haskell | ✓ | | | |
| html | ✓ | | | |
| java | ✓ | | | |

@ -0,0 +1 @@
Subproject commit 5e66e961eee421786bdda8495ed1db045e06b5fe

View file

@ -568,6 +568,14 @@ injection-regex = "git-config"
comment-token = "#"
indent = { tab-width = 4, unit = "\t" }
[[language]]
name = "graphql"
scope = "source.graphql"
injection-regex = "graphql"
file-types = ["gql", "graphql"]
roots = []
indent = { tab-width = 2, unit = " " }
[[language]]
name = "elm"
scope = "source.elm"

View file

@ -0,0 +1,163 @@
; Types
;------
(scalar_type_definition
(name) @type)
(object_type_definition
(name) @type)
(interface_type_definition
(name) @type)
(union_type_definition
(name) @type)
(enum_type_definition
(name) @type)
(input_object_type_definition
(name) @type)
(directive_definition
(name) @type)
(directive_definition
"@" @type)
(scalar_type_extension
(name) @type)
(object_type_extension
(name) @type)
(interface_type_extension
(name) @type)
(union_type_extension
(name) @type)
(enum_type_extension
(name) @type)
(input_object_type_extension
(name) @type)
(named_type
(name) @type)
(directive) @type
; Properties
;-----------
(field
(name) @variable.other.member)
(field
(alias
(name) @variable.other.member))
(field_definition
(name) @variable.other.member)
(object_value
(object_field
(name) @variable.other.member))
(enum_value
(name) @variable.other.member)
; Variable Definitions and Arguments
;-----------------------------------
(operation_definition
(name) @variable)
(fragment_name
(name) @variable)
(input_fields_definition
(input_value_definition
(name) @variable.parameter))
(argument
(name) @variable.parameter)
(arguments_definition
(input_value_definition
(name) @variable.parameter))
(variable_definition
(variable) @variable.parameter)
(argument
(value
(variable) @variable))
; Constants
;----------
(string_value) @string
(int_value) @constants.numeric.integer
(float_value) @constants.numeric.float
(boolean_value) @constants.builtin.boolean
; Literals
;---------
(description) @comment
(comment) @comment
(directive_location
(executable_directive_location) @type.builtin)
(directive_location
(type_system_directive_location) @type.builtin)
; Keywords
;----------
[
"query"
"mutation"
"subscription"
"fragment"
"scalar"
"type"
"interface"
"union"
"enum"
"input"
"extend"
"directive"
"schema"
"on"
"repeatable"
"implements"
] @keyword
; Punctuation
;------------
[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket
"=" @operator
"|" @punctuation.delimiter
"&" @punctuation.delimiter
":" @punctuation.delimiter
"..." @punctuation.special
"!" @punctuation.special

View file

@ -9,6 +9,14 @@
]
arguments: (template_string) @injection.content)
; Parse the contents of gql template literals
((call_expression
function: (identifier) @_template_function_name
arguments: (template_string) @injection.content)
(#eq? @_template_function_name "gql")
(#set! injection.language "graphql"))
; Parse regex syntax within regex literals
((regex_pattern) @injection.content