summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Sojka <Steven.Sojka@tdameritrade.com>2020-06-12 14:11:37 -0500
committerSteven Sojka <steelsojka@gmail.com>2020-06-14 05:58:09 -0500
commit44108fe03e5c2cb761090c4abf8e7164225bf62f (patch)
treea32dbd2f9c5ef73222d848a849f0c1185669c05b
parentca438b7b2ec01e737e2ce3ed2f684f2ca4e87ef8 (diff)
feat(queries): allow for user overrides
-rw-r--r--README.md7
-rw-r--r--lua/nvim-treesitter/query.lua15
2 files changed, 18 insertions, 4 deletions
diff --git a/README.md b/README.md
index c31ce898..c1987459 100644
--- a/README.md
+++ b/README.md
@@ -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.
diff --git a/lua/nvim-treesitter/query.lua b/lua/nvim-treesitter/query.lua
index 644c3393..b914e5d7 100644
--- a/lua/nvim-treesitter/query.lua
+++ b/lua/nvim-treesitter/query.lua
@@ -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