mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-25 10:56:19 +04:00
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:
parent
f453f8724d
commit
0b55b21f30
4
.gitmodules
vendored
4
.gitmodules
vendored
@ -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
|
||||
|
@ -18,6 +18,7 @@
|
||||
| git-rebase | ✓ | | | |
|
||||
| glsl | ✓ | | ✓ | |
|
||||
| go | ✓ | ✓ | ✓ | `gopls` |
|
||||
| graphql | ✓ | | | |
|
||||
| haskell | ✓ | | | |
|
||||
| html | ✓ | | | |
|
||||
| java | ✓ | | | |
|
||||
|
1
helix-syntax/languages/tree-sitter-graphql
Submodule
1
helix-syntax/languages/tree-sitter-graphql
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 5e66e961eee421786bdda8495ed1db045e06b5fe
|
@ -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"
|
||||
|
163
runtime/queries/graphql/highlights.scm
Normal file
163
runtime/queries/graphql/highlights.scm
Normal 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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user