Lua support (#665)

* added submodule

* small changes

* updated some stuff

* remove

* shallow clone

* correct indent

* shallow

* ok

* highlights

* proper captures
This commit is contained in:
oberblastmeister 2021-09-01 11:54:21 -04:00 committed by GitHub
parent 31f1455c71
commit ae3f936611
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 203 additions and 0 deletions

4
.gitmodules vendored
View file

@ -102,6 +102,10 @@
path = helix-syntax/languages/tree-sitter-protobuf
url = https://github.com/yusdacra/tree-sitter-protobuf.git
shallow = true
[submodule "helix-syntax/languages/tree-sitter-lua"]
path = helix-syntax/languages/tree-sitter-lua
url = https://github.com/nvim-treesitter/tree-sitter-lua
shallow = true
[submodule "helix-syntax/languages/tree-sitter-yaml"]
path = helix-syntax/languages/tree-sitter-yaml
url = https://github.com/ikatyang/tree-sitter-yaml

@ -0,0 +1 @@
Subproject commit 6f5d40190ec8a0aa8c8410699353d820f4f7d7a6

View file

@ -224,6 +224,14 @@ roots = []
comment-token = ";"
indent = { tab-width = 4, unit = " " }
[[language]]
name = "lua"
scope = "source.lua"
file-types = ["lua"]
roots = []
comment-token = "--"
indent = { tab-width = 2, unit = " " }
[[language]]
name = "yaml"
scope = "source.yaml"

View file

@ -0,0 +1,166 @@
;;; Highlighting for lua
;;; Builtins
(self) @variable.builtin
;; Keywords
(if_statement
[
"if"
"then"
"end"
] @keyword.control.conditional)
[
"else"
"elseif"
"then"
] @keyword.control.conditional
(for_statement
[
"for"
"do"
"end"
] @keyword.control.loop)
(for_in_statement
[
"for"
"do"
"end"
] @keyword.control.loop)
(while_statement
[
"while"
"do"
"end"
] @keyword.control.loop)
(repeat_statement
[
"repeat"
"until"
] @keyword.control.loop)
(do_statement
[
"do"
"end"
] @keyword)
[
"in"
"local"
(break_statement)
"goto"
"return"
] @keyword
;; Operators
[
"not"
"and"
"or"
] @keyword.operator
[
"="
"~="
"=="
"<="
">="
"<"
">"
"+"
"-"
"%"
"/"
"//"
"*"
"^"
"&"
"~"
"|"
">>"
"<<"
".."
"#"
] @operator
;; Punctuation
["," "." ":" ";"] @punctuation.delimiter
;; Brackets
[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket
; ;; Constants
[
(false)
(true)
] @boolean
(nil) @constant.builtin
(spread) @constant ;; "..."
((identifier) @constant
(#match? @constant "^[A-Z][A-Z_0-9]*$"))
;; Parameters
(parameters
(identifier) @parameter)
; ;; Functions
(function [(function_name) (identifier)] @function)
(function ["function" "end"] @keyword.function)
(function
(function_name
(function_name_field
(property_identifier) @function .)))
(local_function (identifier) @function)
(local_function ["function" "end"] @keyword.function)
(variable_declaration
(variable_declarator (identifier) @function) (function_definition))
(local_variable_declaration
(variable_declarator (identifier) @function) (function_definition))
(function_definition ["function" "end"] @keyword.function)
(function_call
[
((identifier) @variable (method) @method)
((_) (method) @method)
(identifier) @function
(field_expression (property_identifier) @function)
]
. (arguments))
;; Nodes
(table ["{" "}"] @constructor)
(comment) @comment
(string) @string
(number) @number
(label_statement) @label
; A bit of a tricky one, this will only match field names
(field . (identifier) @property (_))
(shebang) @comment
;; Property
(property_identifier) @property
;; Variable
(identifier) @variable
;; Error
(ERROR) @error

View file

@ -0,0 +1,24 @@
indent = [
"function_definition",
"variable_declaration",
"local_variable_declaration",
"field",
"local_function",
"function",
"if_statement",
"for_statement",
"for_in_statement",
"repeat_statement",
"return_statement",
"while_statement",
"table",
"arguments",
"do_statement",
]
oudent = [
"end",
"until",
"}",
")",
]