From 2bb6374c344e76ca6cafc38696dd67e641a02876 Mon Sep 17 00:00:00 2001 From: kiyan42 Date: Mon, 29 Jun 2020 16:51:38 +0200 Subject: Define multiple query for a language Allows using another query file for a language, or use a query file from another language --- lua/nvim-treesitter/query.lua | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index 6c76fc237..72cead9dd 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -29,6 +29,11 @@ M.base_language_map = { tsx = {'typescript', 'javascript'}, } +M.query_extensions = { + javascript = { 'jsx' }, + tsx = {'javascript.jsx'} +} + M.has_locals = get_query_guard('locals') M.has_highlights = get_query_guard('highlights') @@ -47,6 +52,20 @@ function M.get_query(lang, query_name) end end + local extensions = M.query_extensions[lang] + for _, ext in ipairs(extensions or {}) do + local l = lang + local e = ext + if e:match('%.') ~= nil then + l = e:match('.*%.'):sub(0, -2) + e = e:match('%..*'):sub(2, -1) + end + local ext_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', l, e), true) + if ext_files and #ext_files > 0 then + query_string = read_query_files(ext_files) .. "\n" .. query_string + end + end + if #query_string > 0 then return ts.parse_query(lang, query_string) end -- cgit v1.2.3-70-g09d2