feat(lang): add hare language support (#2289)

Co-authored-by: Mehdi Katranji <hello@mek.yt>
This commit is contained in:
meak 2022-04-26 21:55:00 +02:00 committed by GitHub
parent 773736b03a
commit 1a3d6252b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 213 additions and 0 deletions

View File

@ -27,6 +27,7 @@
| gomod | ✓ | | | `gopls` |
| gowork | ✓ | | | `gopls` |
| graphql | ✓ | | | |
| hare | ✓ | | ✓ | |
| haskell | ✓ | | | `haskell-language-server-wrapper` |
| hcl | ✓ | | ✓ | `terraform-ls` |
| heex | ✓ | | | |

View File

@ -1249,3 +1249,16 @@ language-server = { command = "vala-language-server" }
[[grammar]]
name = "vala"
source = { git = "https://github.com/vala-lang/tree-sitter-vala", rev = "c9eea93ba2ec4ec1485392db11945819779745b3" }
[[language]]
name = "hare"
scope = "source.hare"
injection-regex = "hare"
file-types = ["ha"]
roots = []
comment-token = "//"
indent = { tab-width = 4, unit = "\t" }
[[grammar]]
name = "hare"
source = { git = "https://git.sr.ht/~ecmma/tree-sitter-hare", rev = "bc26a6a949f2e0d98b7bfc437d459b250900a165" }

View File

@ -0,0 +1,158 @@
[
"f32"
"f64"
"i16"
"i32"
"i64"
"i8"
"int"
"rune"
"str"
"u16"
"u32"
"u64"
"u8"
"uint"
"uintptr"
"void"
] @type
[
"else"
"if"
"match"
"switch"
] @keyword.control.conditional
[
"export"
"use"
] @keyword.control.import
[
"continue"
"for"
"break"
] @keyword.control.repeat
"return" @keyword.control.return
[
"abort"
"assert"
] @keyword.control.exception
[
"def"
"fn"
] @keyword.function
[
"alloc"
"append"
"as"
"bool"
"char"
"const"
"defer"
"delete"
"enum"
"free"
"is"
"len"
"let"
"match"
"nullable"
"offset"
"size"
"static"
"struct"
"type"
"union"
] @keyword
[
"."
"!"
"~"
"?"
"*"
"/"
"%"
"+"
"-"
"<<"
">>"
"::"
"<"
"<="
">"
">="
"=="
"!="
"&"
"|"
"^"
"&&"
"||"
"="
"+="
"-="
"*="
"/="
"%="
"&="
"|="
"<<="
">>="
"^="
"=>"
] @operator
[
"("
")"
"["
"]"
")"
"{"
"}"
] @punctuation.bracket
[
":"
";"
] @punctuation.delimiter
"..." @special
(comment) @comment
[
"false"
"null"
"true"
] @constant.builtin
(string_constant) @string
(escape_sequence) @constant.character.escape
(rune_constant) @string
(integer_constant) @constant.numeric.integer
(floating_constant) @constant.numeric.float
(call_expression
(postfix_expression) @function)
(function_declaration
name: (identifier) @function)
(parameter (name) @variable.parameter)
(field_access_expression
selector: (name) @variable.other.member)
(decl_attr) @special
(fndec_attrs) @special
(identifier) @variable

View File

@ -0,0 +1,21 @@
[
(struct_union_fields)
(expression_list)
] @indent
[
"case"
"}"
"]"
")"
] @outdent
; [
; "{"
; "}"
; ] @branch
; [
; (comment)
; ] @ignore

View File

@ -0,0 +1,20 @@
(unit) @local.scope
(function_declaration) @local.scope
(global_binding
(identifier) @local.definition)
(constant_binding
(identifier) @local.definition)
(type_bindings
(identifier) @local.definition)
(function_declaration
(prototype
(parameter_list
(parameters
(parameter
(name) @local.definition)))))
(identifier) @local.reference