mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
feat(languages): pkl (#9515)
* feat(languages): pkl Add [pkl](https://github.com/apple/pkl) language. Official documentation: https://pkl-lang.org/ * remove branch indent
This commit is contained in:
parent
f8e2d822ba
commit
d137a08231
@ -123,6 +123,7 @@
|
|||||||
| pem | ✓ | | | |
|
| pem | ✓ | | | |
|
||||||
| perl | ✓ | ✓ | ✓ | `perlnavigator` |
|
| perl | ✓ | ✓ | ✓ | `perlnavigator` |
|
||||||
| php | ✓ | ✓ | ✓ | `intelephense` |
|
| php | ✓ | ✓ | ✓ | `intelephense` |
|
||||||
|
| pkl | ✓ | | ✓ | |
|
||||||
| po | ✓ | ✓ | | |
|
| po | ✓ | ✓ | | |
|
||||||
| pod | ✓ | | | |
|
| pod | ✓ | | | |
|
||||||
| ponylang | ✓ | ✓ | ✓ | |
|
| ponylang | ✓ | ✓ | ✓ | |
|
||||||
|
@ -3061,3 +3061,14 @@ indent = { tab-width = 4, unit = " " }
|
|||||||
name = "tact"
|
name = "tact"
|
||||||
source = { git = "https://github.com/tact-lang/tree-sitter-tact", rev = "ec57ab29c86d632639726631fb2bb178d23e1c91" }
|
source = { git = "https://github.com/tact-lang/tree-sitter-tact", rev = "ec57ab29c86d632639726631fb2bb178d23e1c91" }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "pkl"
|
||||||
|
scope = "source.pkl"
|
||||||
|
injection-regex = "pkl"
|
||||||
|
file-types = ["pkl", "pcf"]
|
||||||
|
comment-token = "//"
|
||||||
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
|
||||||
|
[[grammar]]
|
||||||
|
name = "pkl"
|
||||||
|
source = { git = "https://github.com/apple/tree-sitter-pkl", rev = "c03f04a313b712f8ab00a2d862c10b37318699ae" }
|
||||||
|
179
runtime/queries/pkl/highlights.scm
Normal file
179
runtime/queries/pkl/highlights.scm
Normal file
@ -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)
|
23
runtime/queries/pkl/indents.scm
Normal file
23
runtime/queries/pkl/indents.scm
Normal file
@ -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
|
30
runtime/queries/pkl/injections.scm
Normal file
30
runtime/queries/pkl/injections.scm
Normal file
@ -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
Block a user