Skip to content

Commit

Permalink
Lua support (#665)
Browse files Browse the repository at this point in the history
* added submodule

* small changes

* updated some stuff

* remove

* shallow clone

* correct indent

* shallow

* ok

* highlights

* proper captures
  • Loading branch information
oberblastmeister authored Sep 1, 2021
1 parent 31f1455 commit ae3f936
Show file tree
Hide file tree
Showing 5 changed files with 203 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions helix-syntax/languages/tree-sitter-lua
Submodule tree-sitter-lua added at 6f5d40
8 changes: 8 additions & 0 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
166 changes: 166 additions & 0 deletions runtime/queries/lua/highlights.scm
Original file line number Diff line number Diff line change
@@ -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
24 changes: 24 additions & 0 deletions runtime/queries/lua/indents.toml
Original file line number Diff line number Diff line change
@@ -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",
"}",
")",
]

0 comments on commit ae3f936

Please sign in to comment.