fix(treesitter): empty queries can disable injections (#31748)

**Problem:** Currently, if users want to efficiently disable injections,
they have to delete the injection query files at their runtime path.
This is because we only check for existence of the files before running
the query over the entire buffer.

**Solution:** Check for existence of query files, *and* that those files
actually have captures. This will allow users to just comment out
existing queries (or better yet, just add their own injection query to
`~/.config/nvim` which contains only comments) to disable running the
query over the entire buffer (a potentially slow operation)
This commit is contained in:
Riley Bruins
2025-01-28 09:59:04 -08:00
committed by GitHub
parent a119dab40f
commit b88874d33c
2 changed files with 5 additions and 1 deletions

View File

@ -572,6 +572,10 @@ associated with patterns:
• `injection.parent` - indicates that the captured nodes text should
be parsed with the same language as the node's parent LanguageTree.
Injection queries are currently run over the entire buffer, which can be slow
for large buffers. To disable injections for, e.g., `c`, just place an
empty `queries/c/injections.scm` file in your 'runtimepath'.
==============================================================================
VIM.TREESITTER *lua-treesitter*

View File

@ -953,7 +953,7 @@ end
--- @private
--- @return table<string, Range6[][]>
function LanguageTree:_get_injections()
if not self._injection_query then
if not self._injection_query or #self._injection_query.captures == 0 then
return {}
end