feat(glimmer): add glimmer-javascript and glimmer-typescript (#7064)

This commit is contained in:
NullVoxPopuli 2024-08-31 13:15:40 -04:00 committed by GitHub
parent 0b61eb4923
commit 628f53e4cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 152 additions and 8 deletions

View file

@ -230,6 +230,12 @@
"glimmer": {
"revision": "da605af8c5999b43e6839b575eae5e6cafabb06f"
},
"glimmer_javascript": {
"revision": "a260911201684f80cf815418b3771e6c39309f81"
},
"glimmer_typescript": {
"revision": "9d018a0f93417e6951264a26093b89ee63df7315"
},
"glsl": {
"revision": "ddc3137a2d775aca93084ff997fa13cc1691058a"
},

View file

@ -704,7 +704,7 @@ list.gleam = {
list.glimmer = {
install_info = {
url = "https://github.com/alexlafroscia/tree-sitter-glimmer",
url = "https://github.com/ember-tooling/tree-sitter-glimmer",
files = { "src/parser.c", "src/scanner.c" },
},
filetype = "handlebars",
@ -712,6 +712,26 @@ list.glimmer = {
readme_name = "Glimmer and Ember",
}
list.glimmer_javascript = {
install_info = {
url = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-javascript",
files = { "src/parser.c", "src/scanner.c" },
generate_requires_npm = true,
},
filetype = "javascript.glimmer",
maintainers = { "@NullVoxPopuli" },
}
list.glimmer_typescript = {
install_info = {
url = "https://github.com/NullVoxPopuli/tree-sitter-glimmer-typescript",
files = { "src/parser.c", "src/scanner.c" },
generate_requires_npm = true,
},
filetype = "typescript.glimmer",
maintainers = { "@NullVoxPopuli" },
}
list.glsl = {
install_info = {
url = "https://github.com/theHamsta/tree-sitter-glsl",

View file

@ -43,10 +43,6 @@
(statement_identifier) @label
(glimmer_opening_tag) @tag.builtin
(glimmer_closing_tag) @tag.builtin
; Function and method definitions
;--------------------------------
(function_expression

View file

@ -88,9 +88,6 @@
(#set! injection.include-children)
(#set! injection.language "glimmer")))
((glimmer_template) @injection.content
(#set! injection.language "glimmer"))
; css`<css>`, keyframes`<css>`
(call_expression
function: [

View file

@ -1,2 +1,21 @@
; comments
((comment_statement) @injection.content
(#set! injection.language "comment"))
; <style> tags
((element_node
(element_node_start
(tag_name) @_tag_name
(#eq? @_tag_name "style"))) @injection.content
(#offset! @injection.content 0 7 0 -8)
(#set! injection.language "css")
(#set! injection.include-children))
; <script> tags
((element_node
(element_node_start
(tag_name) @_tag_name
(#eq? @_tag_name "script"))) @injection.content
(#offset! @injection.content 0 8 0 -9)
(#set! injection.language "glimmer_javascript")
(#set! injection.include-children))

View file

@ -0,0 +1,61 @@
; inherits: ecma
(glimmer_opening_tag) @tag.builtin
(glimmer_closing_tag) @tag.builtin
; Copied from javascript
; Parameters
(formal_parameters
(identifier) @variable.parameter)
(formal_parameters
(rest_pattern
(identifier) @variable.parameter))
; ({ a }) => null
(formal_parameters
(object_pattern
(shorthand_property_identifier_pattern) @variable.parameter))
; ({ a = b }) => null
(formal_parameters
(object_pattern
(object_assignment_pattern
(shorthand_property_identifier_pattern) @variable.parameter)))
; ({ a: b }) => null
(formal_parameters
(object_pattern
(pair_pattern
value: (identifier) @variable.parameter)))
; ([ a ]) => null
(formal_parameters
(array_pattern
(identifier) @variable.parameter))
; ({ a } = { a }) => null
(formal_parameters
(assignment_pattern
(object_pattern
(shorthand_property_identifier_pattern) @variable.parameter)))
; ({ a = b } = { a }) => null
(formal_parameters
(assignment_pattern
(object_pattern
(object_assignment_pattern
(shorthand_property_identifier_pattern) @variable.parameter))))
; a => null
(arrow_function
parameter: (identifier) @variable.parameter)
; optional parameters
(formal_parameters
(assignment_pattern
left: (identifier) @variable.parameter))
; punctuation
(optional_chain) @punctuation.delimiter

View file

@ -0,0 +1,5 @@
; inherits: ecma
(glimmer_opening_tag) @indent.begin
(glimmer_closing_tag) @indent.end

View file

@ -0,0 +1,15 @@
; inherits: ecma
; Parse Ember/Glimmer/Handlebars/HTMLBars/etc. template literals
; e.g.: await render(hbs`<SomeComponent />`)
(call_expression
function: ((identifier) @_name
(#eq? @_name "hbs"))
arguments: ((template_string) @glimmer
(#offset! @glimmer 0 1 0 -1)))
; Ember Unified <template> syntax
; e.g.: <template><SomeComponent @arg={{double @value}} /></template>
((glimmer_template) @injection.content
(#set! injection.language "glimmer")
(#set! injection.include-children))

View file

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

View file

@ -0,0 +1,6 @@
; inherits: typescript
; Sub-language delimeters
(glimmer_opening_tag) @tag.builtin
(glimmer_closing_tag) @tag.builtin

View file

@ -0,0 +1,3 @@
(glimmer_opening_tag) @indent.begin
(glimmer_closing_tag) @indent.end

View file

@ -0,0 +1,15 @@
; inherits: typescript
; Parse Ember/Glimmer/Handlebars/HTMLBars/etc. template literals
; e.g.: await render(hbs`<SomeComponent />`)
(call_expression
function: ((identifier) @_name
(#eq? @_name "hbs"))
arguments: ((template_string) @glimmer
(#offset! @glimmer 0 1 0 -1)))
; Ember Unified <template> syntax
; e.g.: <template><SomeComponent @arg={{double @value}} /></template>
((glimmer_template) @injection.content
(#set! injection.language "glimmer")
(#set! injection.include-children))