mirror of https://github.com/helix-editor/helix
feat(languages): pkl (#9515)
* feat(languages): pkl Add [pkl](https://github.com/apple/pkl) language. Official documentation: https://pkl-lang.org/ * remove branch indentpull/9582/head
parent
f8e2d822ba
commit
d137a08231
@ -0,0 +1,179 @@
|
|||||||
|
; 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)
|
@ -0,0 +1,23 @@
|
|||||||
|
; 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
|
||||||
|
[
|
||||||
|
(objectBody)
|
||||||
|
(classBody)
|
||||||
|
(ifExpr)
|
||||||
|
(mlStringLiteral) ; This isn't perfect; newlines are too indented but it's better than if omitted.
|
||||||
|
] @indent
|
@ -0,0 +1,30 @@
|
|||||||
|
; 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
|
||||||
|
(
|
||||||
|
((methodCallExpr (identifier) @methodName (argumentList (slStringLiteral) @injection.content))
|
||||||
|
(#set! injection.language "regex"))
|
||||||
|
(eq? @methodName "Regex"))
|
||||||
|
|
||||||
|
((lineComment) @injection.content
|
||||||
|
(#set! injection.language "comment"))
|
||||||
|
|
||||||
|
((blockComment) @injection.content
|
||||||
|
(#set! injection.language "comment"))
|
||||||
|
|
||||||
|
((docComment) @injection.content
|
||||||
|
(#set! injection.language "markdown"))
|
Loading…
Reference in New Issue