diff options
| author | Kiyan Yazdani <yazdani.kiyan@protonmail.com> | 2020-06-15 12:07:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-15 12:07:16 +0200 |
| commit | c452d4a91c341a1057b638d520e7cc75999a6b3b (patch) | |
| tree | 49db122ce1f1b5ce1a9b77724c96a085c4a60710 /lua | |
| parent | Merge pull request #80 from steelsojka/feat/user-query-overrides (diff) | |
| parent | Change regexes in C/C++ highlights (diff) | |
| download | nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar.gz nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar.bz2 nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar.lz nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar.xz nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.tar.zst nvim-treesitter-c452d4a91c341a1057b638d520e7cc75999a6b3b.zip | |
Merge pull request #63 from theHamsta/cpp-locals
Introduce base languages for queries (for C++ locals)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/nvim-treesitter/query.lua | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua index b914e5d7d..788bfa126 100644 --- a/lua/nvim-treesitter/query.lua +++ b/lua/nvim-treesitter/query.lua @@ -13,11 +13,31 @@ local function read_query_files(filenames) return table.concat(contents, '\n') end +-- Some treesitter grammars extend others. +-- We can use that to import the queries of the base language +M.base_language_map = { + cpp = {'c'}, + typescript = {'javascript'}, + tsx = {'typescript', 'javascript'}, +} + function M.get_query(ft, query_name) local query_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', ft, query_name), true) + local query_string = '' if #query_files > 0 then - return ts.parse_query(ft, read_query_files(query_files)) + query_string = read_query_files(query_files)..query_string + end + + for _, base_lang in ipairs(M.base_language_map[ft] or {}) do + local base_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', base_lang, query_name), false) + if base_files and #base_files > 0 then + query_string = read_query_files(base_files)..query_string + end + end + + if #query_string > 0 then + return ts.parse_query(ft, query_string) end end |
