Update tree-sitter-lua and add textobjects for Lua (#3552)
This commit is contained in:
parent
68909dcef4
commit
a24fae3b3c
7 changed files with 74 additions and 49 deletions
|
@ -66,7 +66,7 @@
|
|||
| llvm | ✓ | ✓ | ✓ | |
|
||||
| llvm-mir | ✓ | ✓ | ✓ | |
|
||||
| llvm-mir-yaml | ✓ | | ✓ | |
|
||||
| lua | ✓ | | ✓ | `lua-language-server` |
|
||||
| lua | ✓ | ✓ | ✓ | `lua-language-server` |
|
||||
| make | ✓ | | | |
|
||||
| markdown | ✓ | | | `marksman` |
|
||||
| markdown.inline | ✓ | | | |
|
||||
|
|
|
@ -667,7 +667,7 @@ language-server = { command = "lua-language-server", args = [] }
|
|||
|
||||
[[grammar]]
|
||||
name = "lua"
|
||||
source = { git = "https://github.com/nvim-treesitter/tree-sitter-lua", rev = "6f5d40190ec8a0aa8c8410699353d820f4f7d7a6" }
|
||||
source = { git = "https://github.com/MunifTanjim/tree-sitter-lua", rev = "887dfd4e83c469300c279314ff1619b1d0b85b91" }
|
||||
|
||||
[[language]]
|
||||
name = "svelte"
|
||||
|
|
10
runtime/queries/lua/folds.scm
Normal file
10
runtime/queries/lua/folds.scm
Normal file
|
@ -0,0 +1,10 @@
|
|||
[
|
||||
(do_statement)
|
||||
(while_statement)
|
||||
(repeat_statement)
|
||||
(if_statement)
|
||||
(for_statement)
|
||||
(function_declaration)
|
||||
(function_definition)
|
||||
(table_constructor)
|
||||
] @fold
|
|
@ -1,7 +1,8 @@
|
|||
;;; Highlighting for lua
|
||||
|
||||
;;; Builtins
|
||||
(self) @variable.builtin
|
||||
((identifier) @variable.builtin
|
||||
(#eq? @variable.builtin "self"))
|
||||
|
||||
;; Keywords
|
||||
|
||||
|
@ -12,11 +13,18 @@
|
|||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(elseif_statement
|
||||
[
|
||||
"else"
|
||||
"elseif"
|
||||
"then"
|
||||
] @keyword.control.conditional
|
||||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(else_statement
|
||||
[
|
||||
"else"
|
||||
"end"
|
||||
] @keyword.control.conditional)
|
||||
|
||||
(for_statement
|
||||
[
|
||||
|
@ -25,13 +33,6 @@
|
|||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(for_in_statement
|
||||
[
|
||||
"for"
|
||||
"do"
|
||||
"end"
|
||||
] @keyword.control.repeat)
|
||||
|
||||
(while_statement
|
||||
[
|
||||
"while"
|
||||
|
@ -51,21 +52,34 @@
|
|||
"end"
|
||||
] @keyword)
|
||||
|
||||
"return" @keyword.control.return
|
||||
|
||||
[
|
||||
"in"
|
||||
"local"
|
||||
(break_statement)
|
||||
"goto"
|
||||
"return"
|
||||
] @keyword
|
||||
|
||||
(function_declaration
|
||||
[
|
||||
"function"
|
||||
"end"
|
||||
] @keyword.function)
|
||||
|
||||
(function_definition
|
||||
[
|
||||
"function"
|
||||
"end"
|
||||
] @keyword.function)
|
||||
|
||||
;; Operators
|
||||
|
||||
[
|
||||
"not"
|
||||
"and"
|
||||
"or"
|
||||
] @operator
|
||||
] @keyword.operator
|
||||
|
||||
[
|
||||
"="
|
||||
|
@ -95,6 +109,7 @@
|
|||
["," "." ":" ";"] @punctuation.delimiter
|
||||
|
||||
;; Brackets
|
||||
|
||||
[
|
||||
"("
|
||||
")"
|
||||
|
@ -110,7 +125,8 @@
|
|||
(true)
|
||||
] @constant.builtin.boolean
|
||||
(nil) @constant.builtin
|
||||
(spread) @constant ;; "..."
|
||||
(vararg_expression) @constant
|
||||
|
||||
((identifier) @constant
|
||||
(#match? @constant "^[A-Z][A-Z_0-9]*$"))
|
||||
|
||||
|
@ -119,45 +135,32 @@
|
|||
(identifier) @variable.parameter)
|
||||
|
||||
; ;; Functions
|
||||
(function [(function_name) (identifier)] @function)
|
||||
(function ["function" "end"] @keyword.function)
|
||||
(function_declaration name: (identifier) @function)
|
||||
(function_call name: (identifier) @function.call)
|
||||
|
||||
(function
|
||||
(function_name
|
||||
(function_name_field
|
||||
(property_identifier) @function .)))
|
||||
(function_declaration name: (dot_index_expression field: (identifier) @function))
|
||||
(function_call name: (dot_index_expression field: (identifier) @function.call))
|
||||
|
||||
(local_function (identifier) @function)
|
||||
(local_function ["function" "end"] @keyword.function)
|
||||
; TODO: incorrectly highlights variable N in `N, nop = 42, function() end`
|
||||
(assignment_statement
|
||||
(variable_list
|
||||
name: (identifier) @function)
|
||||
(expression_list
|
||||
value: (function_definition)))
|
||||
|
||||
(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) @function.method)
|
||||
((_) (method) @function.method)
|
||||
(identifier) @function
|
||||
(field_expression (property_identifier) @function)
|
||||
]
|
||||
. (arguments))
|
||||
(method_index_expression method: (identifier) @function.method)
|
||||
|
||||
;; Nodes
|
||||
(table ["{" "}"] @constructor)
|
||||
(comment) @comment
|
||||
(string) @string
|
||||
(number) @constant.numeric.integer
|
||||
(label_statement) @label
|
||||
; A bit of a tricky one, this will only match field names
|
||||
(field . (identifier) @variable.other.member (_))
|
||||
(shebang) @comment
|
||||
(hash_bang_line) @comment
|
||||
|
||||
;; Property
|
||||
(property_identifier) @variable.other.member
|
||||
(dot_index_expression field: (identifier) @variable.other.member)
|
||||
|
||||
;; Variable
|
||||
(identifier) @variable
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
[
|
||||
(function_definition)
|
||||
(variable_declaration)
|
||||
(local_variable_declaration)
|
||||
(function_declaration)
|
||||
(method_index_expression)
|
||||
(field)
|
||||
(local_function)
|
||||
(function)
|
||||
(if_statement)
|
||||
(for_statement)
|
||||
(for_in_statement)
|
||||
(repeat_statement)
|
||||
(return_statement)
|
||||
(while_statement)
|
||||
(table)
|
||||
(table_constructor)
|
||||
(arguments)
|
||||
(do_statement)
|
||||
] @indent
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
((comment) @injection.content
|
||||
(#set! injection.language "comment"))
|
||||
(#set! injection.language "comment")
|
||||
(#set! injection.include-children))
|
||||
|
|
15
runtime/queries/lua/textobjects.scm
Normal file
15
runtime/queries/lua/textobjects.scm
Normal file
|
@ -0,0 +1,15 @@
|
|||
(function_definition
|
||||
body: (_) @function.inside) @function.around
|
||||
|
||||
(function_declaration
|
||||
body: (_) @function.inside) @function.around
|
||||
|
||||
(parameters
|
||||
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(arguments
|
||||
((_) @parameter.inside . ","? @parameter.around) @parameter.around)
|
||||
|
||||
(comment) @comment.inside
|
||||
|
||||
(comment)+ @comment.around
|
Loading…
Add table
Reference in a new issue