mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
parent
3ca42f7787
commit
e65f28d41a
@ -93,6 +93,7 @@
|
|||||||
| pascal | ✓ | ✓ | | `pasls` |
|
| pascal | ✓ | ✓ | | `pasls` |
|
||||||
| perl | ✓ | ✓ | ✓ | |
|
| perl | ✓ | ✓ | ✓ | |
|
||||||
| php | ✓ | ✓ | ✓ | `intelephense` |
|
| php | ✓ | ✓ | ✓ | `intelephense` |
|
||||||
|
| ponylang | ✓ | ✓ | ✓ | |
|
||||||
| prisma | ✓ | | | `prisma-language-server` |
|
| prisma | ✓ | | | `prisma-language-server` |
|
||||||
| prolog | | | | `swipl` |
|
| prolog | | | | `swipl` |
|
||||||
| protobuf | ✓ | | ✓ | |
|
| protobuf | ✓ | | ✓ | |
|
||||||
|
@ -2079,3 +2079,16 @@ indent = { tab-width = 2, unit = " " }
|
|||||||
[[grammar]]
|
[[grammar]]
|
||||||
name = "matlab"
|
name = "matlab"
|
||||||
source = { git = "https://github.com/mstanciu552/tree-sitter-matlab", rev = "2d5d3d5193718a86477d4335aba5b34e79147326" }
|
source = { git = "https://github.com/mstanciu552/tree-sitter-matlab", rev = "2d5d3d5193718a86477d4335aba5b34e79147326" }
|
||||||
|
|
||||||
|
[[language]]
|
||||||
|
name = "ponylang"
|
||||||
|
scope = "source.pony"
|
||||||
|
file-types = ["pony"]
|
||||||
|
injection-regex = "pony"
|
||||||
|
roots = ["corral.json", "lock.json"]
|
||||||
|
indent = { tab-width = 2, unit = " " }
|
||||||
|
comment-token = "//"
|
||||||
|
|
||||||
|
[[grammar]]
|
||||||
|
name = "ponylang"
|
||||||
|
source = { git = "https://github.com/mfelsche/tree-sitter-ponylang", rev = "ef66b151bc2604f431b5668fcec4747db4290e11" }
|
||||||
|
176
runtime/queries/ponylang/highlights.scm
Normal file
176
runtime/queries/ponylang/highlights.scm
Normal file
@ -0,0 +1,176 @@
|
|||||||
|
[
|
||||||
|
(line_comment)
|
||||||
|
(block_comment)
|
||||||
|
] @comment
|
||||||
|
|
||||||
|
(bool) @constant.builtin.boolean
|
||||||
|
(integer) @constant.numeric.integer
|
||||||
|
(float) @constant.numeric.float
|
||||||
|
(character) @constant.character
|
||||||
|
|
||||||
|
;; strings and docstring
|
||||||
|
(source_file docstring: (string) @string.special)
|
||||||
|
(entity docstring: (string) @string.special)
|
||||||
|
(method docstring: (string) @string.special) ; docstring for methods without body
|
||||||
|
(behavior docstring: (string) @string.special) ; docstring for methods without body
|
||||||
|
(constructor docstring: (string) @string.special) ; docstring for methods without body
|
||||||
|
(method body: (block . (string) @string.special)) ; docstring for methods with body
|
||||||
|
(behavior body: (block . (string) @string.special))
|
||||||
|
(constructor body: (block . (string) @string.special))
|
||||||
|
(field docstring: (string) @string.special)
|
||||||
|
(string) @string
|
||||||
|
|
||||||
|
;; Punctuation
|
||||||
|
[
|
||||||
|
"("
|
||||||
|
")"
|
||||||
|
"{"
|
||||||
|
"}"
|
||||||
|
"["
|
||||||
|
"]"
|
||||||
|
] @punctuation.bracket
|
||||||
|
[
|
||||||
|
";"
|
||||||
|
"."
|
||||||
|
","
|
||||||
|
] @punctuation.delimiter
|
||||||
|
|
||||||
|
(this) @variable.builtin
|
||||||
|
|
||||||
|
(field name: (identifier) @variable.other.member)
|
||||||
|
|
||||||
|
"use" @keyword.control.import
|
||||||
|
[
|
||||||
|
"for"
|
||||||
|
"in"
|
||||||
|
"while"
|
||||||
|
"do"
|
||||||
|
"repeat"
|
||||||
|
"until"
|
||||||
|
] @keyword.control.repeat
|
||||||
|
[
|
||||||
|
"if"
|
||||||
|
"ifdef"
|
||||||
|
"iftype"
|
||||||
|
"then"
|
||||||
|
"elseif"
|
||||||
|
"else"
|
||||||
|
"match"
|
||||||
|
] @keyword.control.conditional
|
||||||
|
[
|
||||||
|
"break"
|
||||||
|
"continue"
|
||||||
|
"return"
|
||||||
|
"error"
|
||||||
|
"compile_error"
|
||||||
|
"compile_intrinsic"
|
||||||
|
] @keyword.control.return
|
||||||
|
[
|
||||||
|
"recover"
|
||||||
|
"consume"
|
||||||
|
"end"
|
||||||
|
"try"
|
||||||
|
"with"
|
||||||
|
] @keyword.control
|
||||||
|
|
||||||
|
[
|
||||||
|
"as"
|
||||||
|
"is"
|
||||||
|
"isnt"
|
||||||
|
"not"
|
||||||
|
"and"
|
||||||
|
"or"
|
||||||
|
"xor"
|
||||||
|
"digestof"
|
||||||
|
"addressof"
|
||||||
|
(location)
|
||||||
|
] @keyword.operator
|
||||||
|
|
||||||
|
(entity_type) @keyword.storage.type
|
||||||
|
|
||||||
|
[
|
||||||
|
"var"
|
||||||
|
"let"
|
||||||
|
"embed"
|
||||||
|
] @keyword.storage
|
||||||
|
|
||||||
|
[
|
||||||
|
"fun"
|
||||||
|
"be"
|
||||||
|
"new"
|
||||||
|
] @keyword.function
|
||||||
|
|
||||||
|
[
|
||||||
|
(cap)
|
||||||
|
(gencap)
|
||||||
|
"where"
|
||||||
|
] @keyword
|
||||||
|
|
||||||
|
[
|
||||||
|
(partial)
|
||||||
|
"=>"
|
||||||
|
"~"
|
||||||
|
".>"
|
||||||
|
"+"
|
||||||
|
"-"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
"%"
|
||||||
|
"%%"
|
||||||
|
"+~"
|
||||||
|
"-~"
|
||||||
|
"/~"
|
||||||
|
"*~"
|
||||||
|
"%~"
|
||||||
|
"%%~"
|
||||||
|
|
||||||
|
">>"
|
||||||
|
"<<"
|
||||||
|
">>~"
|
||||||
|
"<<~"
|
||||||
|
|
||||||
|
"=="
|
||||||
|
"!="
|
||||||
|
">"
|
||||||
|
"<"
|
||||||
|
">="
|
||||||
|
"<="
|
||||||
|
] @operator
|
||||||
|
|
||||||
|
;; Types
|
||||||
|
(entity name: (identifier) @type)
|
||||||
|
(nominal_type name: (identifier) @type)
|
||||||
|
(typeparams (typeparam name: (identifier) @type))
|
||||||
|
|
||||||
|
;; constructors / methods / behaviors
|
||||||
|
(constructor name: (identifier) @constructor)
|
||||||
|
(method name: (identifier) @function.method)
|
||||||
|
(behavior name: (identifier) @function.method)
|
||||||
|
|
||||||
|
;; method calls
|
||||||
|
; TODO: be more specific about what is the actual function reference
|
||||||
|
(call callee: (field_access field: (identifier) @function.method))
|
||||||
|
(call callee: (_) @function.method)
|
||||||
|
(ffi_call name: (_) @function)
|
||||||
|
(partial_application function: (identifier) @function.method)
|
||||||
|
(chain function: (identifier) @function.method)
|
||||||
|
|
||||||
|
;; fields and params
|
||||||
|
(field name: (identifier) @variable.other.member)
|
||||||
|
(param (identifier) @variable.parameter)
|
||||||
|
(lambdaparam (identifier) @variable.parameter)
|
||||||
|
|
||||||
|
;; this.field is considered a member access
|
||||||
|
(field_access base: (this) field: (identifier) @variable.other.member)
|
||||||
|
|
||||||
|
;; annotations
|
||||||
|
(annotations (identifier) @attribute)
|
||||||
|
|
||||||
|
;; variables
|
||||||
|
;; references to upper case things are considered constructors
|
||||||
|
(
|
||||||
|
(identifier) @constructor
|
||||||
|
(#match @constructor "^[A-Z]")
|
||||||
|
)
|
||||||
|
(identifier) @variable
|
||||||
|
|
32
runtime/queries/ponylang/indents.scm
Normal file
32
runtime/queries/ponylang/indents.scm
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
; queries for helix to do automatic indentation upon hitting enter
|
||||||
|
; TODO: needs more work, cover more cases
|
||||||
|
[
|
||||||
|
(entity)
|
||||||
|
(method)
|
||||||
|
(behavior)
|
||||||
|
(constructor)
|
||||||
|
(block)
|
||||||
|
(tuple)
|
||||||
|
(grouped)
|
||||||
|
] @indent
|
||||||
|
(match_case body: (block) @indent)
|
||||||
|
; ffi_call and call
|
||||||
|
(_ arguments: (_) @indent)
|
||||||
|
(assignment right: (_) @indent
|
||||||
|
(#set! "scope" "all")
|
||||||
|
)
|
||||||
|
|
||||||
|
[
|
||||||
|
(params)
|
||||||
|
(object)
|
||||||
|
("if")
|
||||||
|
] @extend
|
||||||
|
(lambda params: (_) @extend)
|
||||||
|
|
||||||
|
[
|
||||||
|
"end"
|
||||||
|
"}"
|
||||||
|
"]"
|
||||||
|
")"
|
||||||
|
"|"
|
||||||
|
] @outdent
|
37
runtime/queries/ponylang/locals.scm
Normal file
37
runtime/queries/ponylang/locals.scm
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[
|
||||||
|
(entity)
|
||||||
|
(method)
|
||||||
|
(behavior)
|
||||||
|
(constructor)
|
||||||
|
("if")
|
||||||
|
(elseif)
|
||||||
|
(ifdef)
|
||||||
|
(elseifdef)
|
||||||
|
(iftype)
|
||||||
|
(elseiftype)
|
||||||
|
(match)
|
||||||
|
(match_case)
|
||||||
|
("while")
|
||||||
|
("repeat")
|
||||||
|
("for")
|
||||||
|
(lambda)
|
||||||
|
(try_block)
|
||||||
|
(with)
|
||||||
|
] @local.scope
|
||||||
|
(match else_block: (block) @local.scope)
|
||||||
|
(try_block else_block: (block) @local.scope)
|
||||||
|
(try_block then_block: (block) @local.scope)
|
||||||
|
(with else_block: (block) @local.scope)
|
||||||
|
|
||||||
|
(field name: (identifier) @local.definition)
|
||||||
|
(local name: (identifier) @local.definition)
|
||||||
|
(param name: (identifier) @local.definition)
|
||||||
|
(lambdaparam name: (identifier) @local.definition)
|
||||||
|
("for" element: (idseq (identifier) @local.definition))
|
||||||
|
(withelem name: (idseq (identifier) @local.definition))
|
||||||
|
|
||||||
|
; only lower case identifiers are references
|
||||||
|
(
|
||||||
|
(identifier) @local.reference
|
||||||
|
(#match? @local.reference "^[a-z_][a-zA-Z_]*")
|
||||||
|
)
|
64
runtime/queries/ponylang/textobjects.scm
Normal file
64
runtime/queries/ponylang/textobjects.scm
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
;; Queries for helix to select textobjects: https://docs.helix-editor.com/usage.html#textobjects
|
||||||
|
;; function.inside
|
||||||
|
;; function.around
|
||||||
|
;; class.inside
|
||||||
|
;; class.around
|
||||||
|
;; test.inside
|
||||||
|
;; test.around
|
||||||
|
;; parameter.inside
|
||||||
|
;; comment.inside
|
||||||
|
;; comment.around
|
||||||
|
|
||||||
|
;; Queries for navigating using textobjects
|
||||||
|
|
||||||
|
[
|
||||||
|
(line_comment)
|
||||||
|
(block_comment)
|
||||||
|
] @comment.inside
|
||||||
|
|
||||||
|
(line_comment)+ @comment.around
|
||||||
|
(block_comment) @comment.around
|
||||||
|
|
||||||
|
(entity members: (members)? @class.inside) @class.around
|
||||||
|
(object members: (members)? @class.inside) @class.around
|
||||||
|
|
||||||
|
(method
|
||||||
|
body: (block)? @function.inside
|
||||||
|
) @function.around
|
||||||
|
(behavior
|
||||||
|
body: (block)? @function.inside
|
||||||
|
) @function.around
|
||||||
|
(constructor
|
||||||
|
body: (block)? @function.inside
|
||||||
|
) @function.around
|
||||||
|
(lambda
|
||||||
|
body: (block)? @function.inside
|
||||||
|
) @function.outside
|
||||||
|
|
||||||
|
(params
|
||||||
|
((_) @parameter.inside . ","? @parameter.around) @parameter.around
|
||||||
|
)
|
||||||
|
(lambda
|
||||||
|
params: ((_) @parameter.inside . ","? @parameter.around) @parameter.around
|
||||||
|
)
|
||||||
|
(typeargs
|
||||||
|
((_) @parameter.inside . ","? @parameter.around) @parameter.around
|
||||||
|
)
|
||||||
|
(typeparams
|
||||||
|
((_) @parameter.inside . ","? @parameter.around) @parameter.around
|
||||||
|
)
|
||||||
|
(arguments
|
||||||
|
positional: (positional_args
|
||||||
|
((_) @parameter.inside . ","? @parameter.around)? @parameter.around)
|
||||||
|
; TODO: get named args right
|
||||||
|
named: (named_args ((_) @parameter.inside . ","? @parameter.around)? @parameter.around)
|
||||||
|
)
|
||||||
|
|
||||||
|
(
|
||||||
|
(entity
|
||||||
|
provides: (type (nominal_type name: (identifier) @_provides))
|
||||||
|
members: (members) @test.inside
|
||||||
|
) @test.outside
|
||||||
|
(#eq? @_provides "UnitTest")
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user