diff options
| author | kiyan42 <yazdani.kiyan@protonmail.com> | 2020-06-29 16:51:38 +0200 |
|---|---|---|
| committer | Thomas Vigouroux <39092278+vigoux@users.noreply.github.com> | 2020-06-30 08:38:31 +0200 |
| commit | 2bb6374c344e76ca6cafc38696dd67e641a02876 (patch) | |
| tree | ef6c077c40f49842b20078aa0249fee620d50bea | |
| parent | if/else in defining languages (diff) | |
| download | nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar.gz nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar.bz2 nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar.lz nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar.xz nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.tar.zst nvim-treesitter-2bb6374c344e76ca6cafc38696dd67e641a02876.zip | |
Define multiple query for a language
Allows using another query file for a language, or use a query file
from another language
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 19 |
1 files changed, 19 insertions, 0 deletions
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 |
