diff options
| author | NullVoxPopuli <LPSego3+dev@gmail.com> | 2021-03-17 22:57:58 -0400 |
|---|---|---|
| committer | Stephan Seitz <stephan.lauf@yahoo.de> | 2021-03-18 04:03:53 +0100 |
| commit | 76c1cab7ab5f076ca59ba3089a766151ef85d8b9 (patch) | |
| tree | 664cb787f41a11e96411eb8ae593b23bbd1a38ed /queries | |
| parent | Update lockfile.json (diff) | |
| download | nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar.gz nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar.bz2 nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar.lz nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar.xz nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.tar.zst nvim-treesitter-76c1cab7ab5f076ca59ba3089a766151ef85d8b9.zip | |
Update glimmer queries from plugin
Maybe there is a way to read this file from the plugin directly?
Diffstat (limited to 'queries')
| -rw-r--r-- | queries/glimmer/highlights.scm | 67 |
1 files changed, 59 insertions, 8 deletions
diff --git a/queries/glimmer/highlights.scm b/queries/glimmer/highlights.scm index 52c7beccc..1a2730ca3 100644 --- a/queries/glimmer/highlights.scm +++ b/queries/glimmer/highlights.scm @@ -1,10 +1,9 @@ -;; By @alexlafroscia (https://github.com/alexlafroscia/tree-sitter-glimmer) -;; Licensed under MIT -;; Modified for nvim-treesitter +; === Tag Names === ; Tags that start with a lower case letter are HTML tags +; We'll also use this highlighting for named blocks (which start with `:`) ((tag_name) @tag - (#match? @tag "^[a-z]")) + (#match? @tag "^(:)?[a-z]")) ; Tags that start with a capital letter are Glimmer components ((tag_name) @constructor (#match? @constructor "^[A-Z]")) @@ -15,16 +14,68 @@ (number_literal) @number (boolean_literal) @boolean +(concat_statement) @string + +; === Block Statements === + +; Highlight the brackets +(block_statement_start) @tag.delimiter +(block_statement_end) @tag.delimiter + +; Highlight `if`/`each`/`let` +((block_statement_start path: (identifier) @conditional) + (#match? @conditional "^(if|each|let)$")) +((block_statement_end path: (identifier) @conditional) + (#match? @conditional "^(if|each|let)$")) +((mustache_statement (identifier) @conditional) + (#match? @conditional "else")) + ; == Mustache Statements === ; Hightlight the whole statement, to color brackets and separators (mustache_statement) @tag.delimiter -; Generic identifiers are variables -(identifier) @variable +; An identifier in a mustache expression is a variable +((mustache_statement [ + (path_expression (identifier) @variable) + (identifier) @variable + ]) + (#not-match? @variable "yield|outlet|this|else")) +; As are arguments in a block statement +(block_statement_start argument: [ + (path_expression (identifier) @variable) + (identifier) @variable + ]) +; As is an identifier in a block param +(block_params (identifier) @variable) +; As are helper arguments +(helper_invocation argument: [ + (path_expression (identifier) @variable) + (identifier) @variable + ]) +; `this` should be highlighted as a built-in variable +((mustache_statement [ + (path_expression (identifier) @variable.builtin) + (identifier) @variable.builtin + ]) + (#match? @variable.builtin "this")) + +; If the identifier is just "yield" or "outlet", it's a keyword +((mustache_statement (identifier) @keyword) + (#match? @keyword "yield|outlet")) + ; Helpers are functions -;TODO: does not exist -;;(helper_identifier) @function +((helper_invocation helper: [ + (path_expression (identifier) @function) + (identifier) @function + ]) + (#not-match? @function "if|yield")) +((helper_invocation helper: (identifier) @conditional) + (#match? @conditional "if")) +((helper_invocation helper: (identifier) @keyword) + (#match? @keyword "yield")) + +(hash_pair key: (identifier) @property) (comment_statement) @comment |
