From b697c0cd4fb2ebe3f021599cb77122374db7fd59 Mon Sep 17 00:00:00 2001 From: Christian Clason Date: Mon, 26 Jun 2023 09:25:46 +0200 Subject: [PATCH] fix(treesitter): update lua parser and queries (#24148) --- cmake.deps/deps.txt | 4 ++-- runtime/queries/lua/highlights.scm | 37 ++++++++++++++++++++++++++---- runtime/queries/lua/injections.scm | 27 +++++++++++----------- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/cmake.deps/deps.txt b/cmake.deps/deps.txt index e4841dc995..d73f6962d7 100644 --- a/cmake.deps/deps.txt +++ b/cmake.deps/deps.txt @@ -46,8 +46,8 @@ LIBICONV_SHA256 ccf536620a45458d26ba83887a983b96827001e92a13847b45e4925cc8913178 TREESITTER_C_URL https://github.com/tree-sitter/tree-sitter-c/archive/v0.20.2.tar.gz TREESITTER_C_SHA256 af66fde03feb0df4faf03750102a0d265b007e5d957057b6b293c13116a70af2 -TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.17.tar.gz -TREESITTER_LUA_SHA256 8963fd0a185d786c164dfca3824941c7eaec497ce49a3a0bc24bf753f5e0e59c +TREESITTER_LUA_URL https://github.com/MunifTanjim/tree-sitter-lua/archive/v0.0.18.tar.gz +TREESITTER_LUA_SHA256 659beef871a7fa1d9a02c23f5ebf55019aa3adce6d7f5441947781e128845256 TREESITTER_VIM_URL https://github.com/neovim/tree-sitter-vim/archive/v0.3.0.tar.gz TREESITTER_VIM_SHA256 403acec3efb7cdb18ff3d68640fc823502a4ffcdfbb71cec3f98aa786c21cbe2 TREESITTER_VIMDOC_URL https://github.com/neovim/tree-sitter-vimdoc/archive/v2.0.0.tar.gz diff --git a/runtime/queries/lua/highlights.scm b/runtime/queries/lua/highlights.scm index 537a171441..96ffeae793 100644 --- a/runtime/queries/lua/highlights.scm +++ b/runtime/queries/lua/highlights.scm @@ -180,13 +180,40 @@ (parameters (identifier) @parameter) -(function_call name: (identifier) @function.call) -(function_declaration name: (identifier) @function) +(function_declaration + name: [ + (identifier) @function + (dot_index_expression + field: (identifier) @function) + ]) -(function_call name: (dot_index_expression field: (identifier) @function.call)) -(function_declaration name: (dot_index_expression field: (identifier) @function)) +(function_declaration + name: (method_index_expression + method: (identifier) @method)) -(method_index_expression method: (identifier) @method.call) +(assignment_statement + (variable_list . + name: [ + (identifier) @function + (dot_index_expression + field: (identifier) @function) + ]) + (expression_list . + value: (function_definition))) + +(table_constructor + (field + name: (identifier) @function + value: (function_definition))) + +(function_call + name: [ + (identifier) @function.call + (dot_index_expression + field: (identifier) @function.call) + (method_index_expression + method: (identifier) @method.call) + ]) (function_call (identifier) @function.builtin diff --git a/runtime/queries/lua/injections.scm b/runtime/queries/lua/injections.scm index 3fcebe83f3..dbfe75ae31 100644 --- a/runtime/queries/lua/injections.scm +++ b/runtime/queries/lua/injections.scm @@ -3,7 +3,9 @@ (identifier) @_cdef_identifier (_ _ (identifier) @_cdef_identifier) ] - arguments: (arguments (string content: _ @injection.content))) + arguments: + (arguments + (string content: _ @injection.content))) (#set! injection.language "c") (#eq? @_cdef_identifier "cdef")) @@ -11,15 +13,7 @@ name: (_) @_vimcmd_identifier arguments: (arguments (string content: _ @injection.content))) (#set! injection.language "vim") - (#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")) + (#any-of? @_vimcmd_identifier "vim.cmd" "vim.api.nvim_command" "vim.api.nvim_command" "vim.api.nvim_exec2")) ((function_call name: (_) @_vimcmd_identifier @@ -27,10 +21,15 @@ (#set! injection.language "query") (#any-of? @_vimcmd_identifier "vim.treesitter.query.set" "vim.treesitter.query.parse")) +((function_call + name: (_) @_vimcmd_identifier + arguments: (arguments . (_) . (string content: _ @_method) . (string content: _ @injection.content))) + (#any-of? @_vimcmd_identifier "vim.rpcrequest" "vim.rpcnotify") + (#eq? @_method "nvim_exec_lua") + (#set! injection.language "lua")) + ;; highlight string as query if starts with `;; query` (string content: _ @injection.content - (#set! injection.language "query") - (#lua-match? @injection.content "^%s*;+%s?query")) + (#lua-match? @injection.content "^%s*;+%s?query") + (#set! injection.language "query")) -; ((comment) @injection.content -; (#set! injection.language "comment"))