aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter.lua
diff options
context:
space:
mode:
authorThomas Vigouroux <39092278+vigoux@users.noreply.github.com>2020-05-01 07:43:30 +0200
committerGitHub <noreply@github.com>2020-04-30 22:43:30 -0700
commite5022c61ed769153dab5a91752c52a8f9ad3b504 (patch)
treea627d4bf9b1f22b1cf67ec6725995efd69d52753 /runtime/lua/vim/treesitter.lua
parent42b441738d833543c98c97cad0c200bde28ae233 (diff)
downloadrneovim-e5022c61ed769153dab5a91752c52a8f9ad3b504.tar.gz
rneovim-e5022c61ed769153dab5a91752c52a8f9ad3b504.tar.bz2
rneovim-e5022c61ed769153dab5a91752c52a8f9ad3b504.zip
treesitter: unknown predicates always match #12173
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r--runtime/lua/vim/treesitter.lua9
1 files changed, 6 insertions, 3 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua
index 1836227540..d3b78a7f73 100644
--- a/runtime/lua/vim/treesitter.lua
+++ b/runtime/lua/vim/treesitter.lua
@@ -159,6 +159,9 @@ function Query:match_preds(match, pattern, bufnr)
end
local regexes = self.regexes[pattern]
for i, pred in pairs(preds) do
+ -- Here we only want to return if a predicate DOES NOT match, and
+ -- continue on the other case. This way unknown predicates will not be considered,
+ -- which allows some testing and easier user extensibility (#12173).
if pred[1] == "eq?" then
local node = match[pred[2]]
local node_text = get_node_text(node, bufnr)
@@ -184,9 +187,9 @@ function Query:match_preds(match, pattern, bufnr)
if start_row ~= end_row then
return false
end
- return regexes[i]:match_line(bufnr, start_row, start_col, end_col)
- else
- return false
+ if not regexes[i]:match_line(bufnr, start_row, start_col, end_col) then
+ return false
+ end
end
end
return true