nvim-treesitter/runtime/queries/groq/highlights.scm
2025-07-18 07:57:40 +01:00

248 lines
4.1 KiB
Scheme

; Tree-sitter highlights for GROQ language
; This file defines syntax highlighting for GROQ in Neovim
; Keywords
[
"select"
"asc"
"desc"
] @keyword
[
"in"
"match"
] @keyword.operator
; Operators
[
"=="
"!="
">"
">="
"<"
"<="
"&&"
"||"
"!"
"+"
"-"
"*"
"/"
"%"
"**"
".."
"..."
"=>"
"->"
"|"
] @operator
; Punctuation
[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket
[
","
":"
"."
] @punctuation.delimiter
; Literals
(string) @string
(number) @number
(true) @boolean
(false) @boolean
(null) @constant.builtin
; Special references
(star) @constant.builtin
(parent) @constant.builtin
(this) @constant.builtin
; Identifiers
(identifier) @variable
; Parameters
(parameter) @variable.parameter
; Function calls
(function_call
(identifier) @function)
(order_function
"order" @function.builtin)
; Comments
(comment) @comment
; Projections and objects
(projection
"{" @punctuation.bracket
"}" @punctuation.bracket)
(object
"{" @punctuation.bracket
"}" @punctuation.bracket)
; Conditional projections
(conditional_projection
"=>" @operator)
; Select statements
(select_statement
"..." @operator
"select" @keyword
"=>" @operator)
; Spread operators
(spread_operator
"..." @operator)
; Array access
(attribute_access
"." @punctuation.delimiter)
; String keys in projections/objects
(pair
(literal
(string) @property))
; Highlight field names in projections
(projection
(identifier) @property)
; Built-in functions (essential GROQ functions)
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "count"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "length"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "defined"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "references"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "now"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "dateTime"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "coalesce"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "unique"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "max"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "min"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "sum"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "avg"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "round"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "floor"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "ceil"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "abs"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "sqrt"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "upper"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "lower"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "string"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "number"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "boolean"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "array"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "object"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "type"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "global"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "sanity"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "path"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "delta"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "after"))
(function_call
(identifier) @function.builtin
(#eq? @function.builtin "before"))