helix/runtime/queries/pkl/highlights.scm
2024-09-13 13:28:20 -05:00

180 lines
3.1 KiB
Scheme

; Copyright © 2024 Apple Inc. and the Pkl project authors. All rights reserved.
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
; https://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.
; this definition is imprecise in that
; * any qualified or unqualified call to a method named "Regex" is considered a regex
; * string delimiters are considered part of the regex
; Operators
[
"??"
"@"
"="
"<"
">"
"!"
"=="
"!="
"<="
">="
"&&"
"||"
"+"
"-"
"**"
"*"
"/"
"~/"
"%"
"|>"
] @keyword.operator
[
"?"
"|"
"->"
] @operator.type
[
","
":"
"."
"?."
] @punctuation.delimiter
[
"("
")"
"]"
"{"
"}"
; "[" @punctuation.bracket TODO: FIGURE OUT HOW TO REFER TO CUSTOM TOKENS
] @punctuation.bracket
; Keywords
[
"abstract"
"amends"
"as"
"class"
"extends"
"external"
"function"
"hidden"
"import"
"import*"
"in"
"let"
"local"
"module"
"new"
"open"
"out"
"typealias"
"when"
] @keyword
[
"if"
"is"
"else"
] @keyword.control.conditional
[
"for"
] @keyword.control.repeat
(importExpr "import" @keyword.control.import)
(importGlobExpr "import*" @keyword.control.import)
"read" @function.builtin
"read?" @function.builtin
"read*" @function.builtin
"throw" @function.builtin
"trace" @function.builtin
(moduleExpr "module" @type.builtin)
"nothing" @type.builtin
"unknown" @type.builtin
(outerExpr) @variable.builtin
"super" @variable.builtin
(thisExpr) @variable.builtin
[
(falseLiteral)
(nullLiteral)
(trueLiteral)
] @constant.builtin
; Literals
(stringConstant) @string
(slStringLiteral) @string
(mlStringLiteral) @string
(escapeSequence) @constent.character.escape
(intLiteral) @constant.numeric.integer
(floatLiteral) @constant.numeric.float
(interpolationExpr
"\\(" @punctuation.special
")" @punctuation.special) @embedded
(interpolationExpr
"\\#(" @punctuation.special
")" @punctuation.special) @embedded
(interpolationExpr
"\\##(" @punctuation.special
")" @punctuation.special) @embedded
(lineComment) @comment
(blockComment) @comment
(docComment) @comment
; Identifiers
(classProperty (identifier) @variable.other.member)
(objectProperty (identifier) @variable.other.member)
(parameterList (typedIdentifier (identifier) @variable.parameter))
(objectBodyParameters (typedIdentifier (identifier) @variable.parameter))
(identifier) @variable
; Method definitions
(classMethod (methodHeader (identifier)) @function.method)
(objectMethod (methodHeader (identifier)) @function.method)
; Method calls
(methodCallExpr
(identifier) @function.method)
; Types
(clazz (identifier) @type)
(typeAlias (identifier) @type)
((identifier) @type
(#match? @type "^[A-Z]"))
(typeArgumentList
"<" @punctuation.bracket
">" @punctuation.bracket)