Skip to content

Commit

Permalink
feat(glimmer): add glimmer-javascript and glimmer-typescript (nvim-tr…
Browse files Browse the repository at this point in the history
  • Loading branch information
NullVoxPopuli authored and austincummings committed Sep 9, 2024
1 parent 8b404cc commit 892b6b4
Show file tree
Hide file tree
Showing 12 changed files with 152 additions and 8 deletions.
6 changes: 6 additions & 0 deletions lockfile.json
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,12 @@
"glimmer": {
"revision": "da605af8c5999b43e6839b575eae5e6cafabb06f"
},
"glimmer_javascript": {
"revision": "a260911201684f80cf815418b3771e6c39309f81"
},
"glimmer_typescript": {
"revision": "9d018a0f93417e6951264a26093b89ee63df7315"
},
"glsl": {
"revision": "ddc3137a2d775aca93084ff997fa13cc1691058a"
},
Expand Down
22 changes: 21 additions & 1 deletion lua/nvim-treesitter/parsers.lua
Original file line number Diff line number Diff line change
Expand Up @@ -704,14 +704,34 @@ 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",
maintainers = { "@NullVoxPopuli" },
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",
Expand Down
4 changes: 0 additions & 4 deletions queries/ecma/highlights.scm
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@

(statement_identifier) @label

(glimmer_opening_tag) @tag.builtin

(glimmer_closing_tag) @tag.builtin

; Function and method definitions
;--------------------------------
(function_expression
Expand Down
3 changes: 0 additions & 3 deletions queries/ecma/injections.scm
Original file line number Diff line number Diff line change
Expand Up @@ -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: [
Expand Down
19 changes: 19 additions & 0 deletions queries/glimmer/injections.scm
Original file line number Diff line number Diff line change
@@ -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))
61 changes: 61 additions & 0 deletions queries/glimmer_javascript/highlights.scm
Original file line number Diff line number Diff line change
@@ -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
5 changes: 5 additions & 0 deletions queries/glimmer_javascript/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
; inherits: ecma

(glimmer_opening_tag) @indent.begin

(glimmer_closing_tag) @indent.end
15 changes: 15 additions & 0 deletions queries/glimmer_javascript/injections.scm
Original file line number Diff line number Diff line change
@@ -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))
1 change: 1 addition & 0 deletions queries/glimmer_javascript/locals.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
; inherits: ecma
6 changes: 6 additions & 0 deletions queries/glimmer_typescript/highlights.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
; inherits: typescript

; Sub-language delimeters
(glimmer_opening_tag) @tag.builtin

(glimmer_closing_tag) @tag.builtin
3 changes: 3 additions & 0 deletions queries/glimmer_typescript/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(glimmer_opening_tag) @indent.begin

(glimmer_closing_tag) @indent.end
15 changes: 15 additions & 0 deletions queries/glimmer_typescript/injections.scm
Original file line number Diff line number Diff line change
@@ -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))

0 comments on commit 892b6b4

Please sign in to comment.