mirror of
https://github.com/neovim/neovim.git
synced 2025-12-11 17:12:40 +00:00
Merge pull request #23606 from clason/bump-tree-sitter-lua
fix(treesitter): update parser and queries
This commit is contained in:
@@ -52,8 +52,8 @@ LIBICONV_SHA256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178
|
|||||||
|
|
||||||
TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.2.tar.gz
|
TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.2.tar.gz
|
||||||
TREESITTER_C_SHA256 af66fde03feb0df4faf03750102a0d265b007e5d957057b6b293c13116a70af2
|
TREESITTER_C_SHA256 af66fde03feb0df4faf03750102a0d265b007e5d957057b6b293c13116a70af2
|
||||||
TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.14.tar.gz
|
TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.17.tar.gz
|
||||||
TREESITTER_LUA_SHA256 930d0370dc15b66389869355c8e14305b9ba7aafd36edbfdb468c8023395016d
|
TREESITTER_LUA_SHA256 8963fd0a185d786c164dfca3824941c7eaec497ce49a3a0bc24bf753f5e0e59c
|
||||||
TREESITTER_VIM_URL https://github.com/neovim/tree-sitter-vim/archive/v0.3.0.tar.gz
|
TREESITTER_VIM_URL https://github.com/neovim/tree-sitter-vim/archive/v0.3.0.tar.gz
|
||||||
TREESITTER_VIM_SHA256 403acec3efb7cdb18ff3d68640fc823502a4ffcdfbb71cec3f98aa786c21cbe2
|
TREESITTER_VIM_SHA256 403acec3efb7cdb18ff3d68640fc823502a4ffcdfbb71cec3f98aa786c21cbe2
|
||||||
TREESITTER_VIMDOC_URL https://github.com/neovim/tree-sitter-vimdoc/archive/v2.0.0.tar.gz
|
TREESITTER_VIMDOC_URL https://github.com/neovim/tree-sitter-vimdoc/archive/v2.0.0.tar.gz
|
||||||
|
|||||||
@@ -221,8 +221,7 @@ The following predicates are built in:
|
|||||||
similar to `match?`
|
similar to `match?`
|
||||||
|
|
||||||
`contains?` *treesitter-predicate-contains?*
|
`contains?` *treesitter-predicate-contains?*
|
||||||
Match a string against parts of the text corresponding to a node:
|
Match a string against parts of the text corresponding to a node: >query
|
||||||
>query
|
|
||||||
((identifier) @foo (#contains? @foo "foo"))
|
((identifier) @foo (#contains? @foo "foo"))
|
||||||
((identifier) @foo-bar (#contains? @foo-bar "foo" "bar"))
|
((identifier) @foo-bar (#contains? @foo-bar "foo" "bar"))
|
||||||
<
|
<
|
||||||
@@ -234,6 +233,19 @@ The following predicates are built in:
|
|||||||
This is the recommended way to check if the node matches one of many
|
This is the recommended way to check if the node matches one of many
|
||||||
keywords, as it has been optimized for this.
|
keywords, as it has been optimized for this.
|
||||||
|
|
||||||
|
`has-ancestor?` *treesitter-predicate-has-ancestor?*
|
||||||
|
Match any of the given node types against all ancestors of a node: >query
|
||||||
|
((identifier) @variable.builtin
|
||||||
|
(#any-of? @variable.builtin "begin" "end")
|
||||||
|
(#has-ancestor? @variable.builtin range_expression))
|
||||||
|
<
|
||||||
|
`has-parent?` *treesitter-predicate-has-parent?*
|
||||||
|
Match any of the given node types against the direct ancestor of a
|
||||||
|
node: >query
|
||||||
|
(((field_expression
|
||||||
|
(field_identifier) @method)) @_parent
|
||||||
|
(#has-parent? @_parent template_method function_declarator))
|
||||||
|
<
|
||||||
*lua-treesitter-not-predicate*
|
*lua-treesitter-not-predicate*
|
||||||
Each predicate has a `not-` prefixed predicate that is just the negation of
|
Each predicate has a `not-` prefixed predicate that is just the negation of
|
||||||
the predicate.
|
the predicate.
|
||||||
|
|||||||
@@ -382,6 +382,39 @@ local predicate_handlers = {
|
|||||||
|
|
||||||
return string_set[node_text]
|
return string_set[node_text]
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
['has-ancestor?'] = function(match, _, _, predicate)
|
||||||
|
local node = match[predicate[2]]
|
||||||
|
if not node then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
local ancestor_types = {}
|
||||||
|
for _, type in ipairs({ unpack(predicate, 3) }) do
|
||||||
|
ancestor_types[type] = true
|
||||||
|
end
|
||||||
|
|
||||||
|
node = node:parent()
|
||||||
|
while node do
|
||||||
|
if ancestor_types[node:type()] then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
node = node:parent()
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end,
|
||||||
|
|
||||||
|
['has-parent?'] = function(match, _, _, predicate)
|
||||||
|
local node = match[predicate[2]]
|
||||||
|
if not node then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
if vim.list_contains({ unpack(predicate, 3) }, node:parent():type()) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
-- As we provide lua-match? also expose vim-match?
|
-- As we provide lua-match? also expose vim-match?
|
||||||
|
|||||||
@@ -117,12 +117,19 @@
|
|||||||
(preproc_defined)
|
(preproc_defined)
|
||||||
] @function.macro
|
] @function.macro
|
||||||
|
|
||||||
(field_identifier) @property
|
(((field_expression
|
||||||
|
(field_identifier) @property)) @_parent
|
||||||
|
(#not-has-parent? @_parent template_method function_declarator call_expression))
|
||||||
|
|
||||||
|
(field_designator) @property
|
||||||
|
(((field_identifier) @property)
|
||||||
|
(#has-ancestor? @property field_declaration)
|
||||||
|
(#not-has-ancestor? @property function_declarator))
|
||||||
|
|
||||||
(statement_identifier) @label
|
(statement_identifier) @label
|
||||||
|
|
||||||
[
|
[
|
||||||
(type_identifier)
|
(type_identifier)
|
||||||
(sized_type_specifier)
|
|
||||||
(type_descriptor)
|
(type_descriptor)
|
||||||
] @type
|
] @type
|
||||||
|
|
||||||
@@ -138,6 +145,8 @@
|
|||||||
|
|
||||||
(primitive_type) @type.builtin
|
(primitive_type) @type.builtin
|
||||||
|
|
||||||
|
(sized_type_specifier _ @type.builtin type: _?)
|
||||||
|
|
||||||
((identifier) @constant
|
((identifier) @constant
|
||||||
(#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
|
(#lua-match? @constant "^[A-Z][A-Z0-9_]+$"))
|
||||||
(enumerator
|
(enumerator
|
||||||
@@ -163,6 +172,10 @@
|
|||||||
field: (field_identifier) @function.call))
|
field: (field_identifier) @function.call))
|
||||||
(function_declarator
|
(function_declarator
|
||||||
declarator: (identifier) @function)
|
declarator: (identifier) @function)
|
||||||
|
(function_declarator
|
||||||
|
declarator: (parenthesized_declarator
|
||||||
|
(pointer_declarator
|
||||||
|
declarator: (field_identifier) @function)))
|
||||||
(preproc_function_def
|
(preproc_function_def
|
||||||
name: (identifier) @function.macro)
|
name: (identifier) @function.macro)
|
||||||
|
|
||||||
|
|||||||
@@ -127,8 +127,14 @@
|
|||||||
|
|
||||||
(identifier) @variable
|
(identifier) @variable
|
||||||
|
|
||||||
|
((identifier) @constant.builtin
|
||||||
|
(#eq? @constant.builtin "_VERSION"))
|
||||||
|
|
||||||
((identifier) @variable.builtin
|
((identifier) @variable.builtin
|
||||||
(#any-of? @variable.builtin "_G" "_VERSION" "debug" "io" "jit" "math" "os" "package" "self" "string" "table" "utf8"))
|
(#eq? @variable.builtin "self"))
|
||||||
|
|
||||||
|
((identifier) @namespace.builtin
|
||||||
|
(#any-of? @namespace.builtin "_G" "debug" "io" "jit" "math" "os" "package" "string" "table" "utf8"))
|
||||||
|
|
||||||
((identifier) @keyword.coroutine
|
((identifier) @keyword.coroutine
|
||||||
(#eq? @keyword.coroutine "coroutine"))
|
(#eq? @keyword.coroutine "coroutine"))
|
||||||
@@ -210,5 +216,7 @@
|
|||||||
|
|
||||||
(string) @string @spell
|
(string) @string @spell
|
||||||
|
|
||||||
|
(escape_sequence) @string.escape
|
||||||
|
|
||||||
;; Error
|
;; Error
|
||||||
(ERROR) @error
|
(ERROR) @error
|
||||||
|
|||||||
@@ -13,6 +13,14 @@
|
|||||||
(#set! injection.language "vim")
|
(#set! injection.language "vim")
|
||||||
(#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_exec2" "vim.api.nvim_cmd"))
|
(#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_exec2" "vim.api.nvim_cmd"))
|
||||||
|
|
||||||
|
; vim.rcprequest(123, "nvim_exec_lua", "return vim.api.nvim_buf_get_lines(0, 0, -1, false)", false)
|
||||||
|
((function_call
|
||||||
|
name: (_) @_vimcmd_identifier
|
||||||
|
arguments: (arguments . (_) . (string content: _ @_method) . (string content: _ @injection.content)))
|
||||||
|
(#set! injection.language "lua")
|
||||||
|
(#any-of? @_vimcmd_identifier "vim.rpcrequest" "vim.rpcnotify")
|
||||||
|
(#eq? @_method "nvim_exec_lua"))
|
||||||
|
|
||||||
((function_call
|
((function_call
|
||||||
name: (_) @_vimcmd_identifier
|
name: (_) @_vimcmd_identifier
|
||||||
arguments: (arguments (string content: _ @injection.content) .))
|
arguments: (arguments (string content: _ @injection.content) .))
|
||||||
@@ -20,7 +28,7 @@
|
|||||||
(#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse"))
|
(#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse"))
|
||||||
|
|
||||||
;; highlight string as query if starts with `;; query`
|
;; highlight string as query if starts with `;; query`
|
||||||
((string ("string_content") @injection.content)
|
(string content: _ @injection.content
|
||||||
(#set! injection.language "query")
|
(#set! injection.language "query")
|
||||||
(#lua-match? @injection.content "^%s*;+%s?query"))
|
(#lua-match? @injection.content "^%s*;+%s?query"))
|
||||||
|
|
||||||
|
|||||||
@@ -275,7 +275,7 @@
|
|||||||
|
|
||||||
; Options
|
; Options
|
||||||
((set_value) @number
|
((set_value) @number
|
||||||
(#match? @number "^[0-9]+(\.[0-9]+)?$"))
|
(#lua-match? @number "^[%d]+(%.[%d]+)?$"))
|
||||||
|
|
||||||
(inv_option "!" @operator)
|
(inv_option "!" @operator)
|
||||||
(set_item "?" @operator)
|
(set_item "?" @operator)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
(h1) @text.title
|
(h1) @text.title.1
|
||||||
(h2) @text.title
|
(h2) @text.title.2
|
||||||
(h3) @text.title
|
(h3) @text.title.3
|
||||||
(column_heading) @text.title
|
(column_heading) @text.title.4
|
||||||
(column_heading
|
(column_heading
|
||||||
"~" @conceal (#set! conceal ""))
|
"~" @conceal (#set! conceal ""))
|
||||||
(tag
|
(tag
|
||||||
|
|||||||
@@ -483,7 +483,7 @@ end]]
|
|||||||
return list
|
return list
|
||||||
]]
|
]]
|
||||||
|
|
||||||
eq({ 'any-of?', 'contains?', 'eq?', 'is-main?', 'lua-match?', 'match?', 'vim-match?' }, res_list)
|
eq({ 'any-of?', 'contains?', 'eq?', 'has-ancestor?', 'has-parent?', 'is-main?', 'lua-match?', 'match?', 'vim-match?' }, res_list)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user