feat(queries): allow for user overrides

This commit is contained in:
Steven Sojka 2020-06-12 14:11:37 -05:00 committed by Steven Sojka
parent ca438b7b2e
commit 44108fe03e
2 changed files with 18 additions and 4 deletions

View file

@ -181,6 +181,13 @@ List of currently supported languages:
- [ ] nix
- [ ] markdown
## User Query Extensions
You can add your own query files by placing a query file in vim's runtime path after `nvim-treesitter` is sourced.
If the language has a built in query file, that file will be appended to or it will be used (useful for languages not yet supported).
For example, you can add files to `<vim-config-dir>/after/queries/lua/highlights.scm` to add more queries to lua highlights.
You can also manually add query paths to the runtime path by adding this to your vim config `set rtp+='path/to/queries'`.
## Troubleshooting
Before doing anything run `:checkhealth nvim_treesitter`. This will help you find where the bug might come from.

View file

@ -3,14 +3,21 @@ local ts = vim.treesitter
local M = {}
local function read_query_file(fname)
return table.concat(vim.fn.readfile(fname), '\n')
local function read_query_files(filenames)
local contents = {}
for _,filename in ipairs(filenames) do
vim.list_extend(contents, vim.fn.readfile(filename))
end
return table.concat(contents, '\n')
end
function M.get_query(ft, query_name)
local query_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', ft, query_name), false)
local query_files = api.nvim_get_runtime_file(string.format('queries/%s/%s.scm', ft, query_name), true)
if #query_files > 0 then
return ts.parse_query(ft, read_query_file(query_files[1]))
return ts.parse_query(ft, read_query_files(query_files))
end
end