aboutsummaryrefslogtreecommitdiffstats
path: root/queries
diff options
context:
space:
mode:
authorNullVoxPopuli <LPSego3+dev@gmail.com>2021-03-17 22:57:58 -0400
committerStephan Seitz <stephan.lauf@yahoo.de>2021-03-18 04:03:53 +0100
commit76c1cab7ab5f076ca59ba3089a766151ef85d8b9 (patch)
tree664cb787f41a11e96411eb8ae593b23bbd1a38ed /queries
parentUpdate lockfile.json (diff)
downloadnvim-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.scm67
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