Skip to content

Commit

Permalink
feat(lang): add hare language support (#2289)
Browse files Browse the repository at this point in the history
Co-authored-by: Mehdi Katranji <hello@mek.yt>
  • Loading branch information
mek-yt and mek-yt authored Apr 26, 2022
1 parent 773736b commit 1a3d625
Show file tree
Hide file tree
Showing 5 changed files with 213 additions and 0 deletions.
1 change: 1 addition & 0 deletions book/src/generated/lang-support.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
| gomod || | | `gopls` |
| gowork || | | `gopls` |
| graphql || | | |
| hare || || |
| haskell || | | `haskell-language-server-wrapper` |
| hcl || || `terraform-ls` |
| heex || | | |
Expand Down
13 changes: 13 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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" }
158 changes: 158 additions & 0 deletions runtime/queries/hare/highlights.scm
Original file line number Diff line number Diff line change
@@ -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

21 changes: 21 additions & 0 deletions runtime/queries/hare/indents.scm
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[
(struct_union_fields)
(expression_list)
] @indent

[
"case"
"}"
"]"
")"
] @outdent

; [
; "{"
; "}"
; ] @branch

; [
; (comment)
; ] @ignore

20 changes: 20 additions & 0 deletions runtime/queries/hare/locals.scm
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 1a3d625

Please sign in to comment.