diff options
author | Thomas Vigouroux <39092278+vigoux@users.noreply.github.com> | 2020-05-01 07:43:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-30 22:43:30 -0700 |
commit | e5022c61ed769153dab5a91752c52a8f9ad3b504 (patch) | |
tree | a627d4bf9b1f22b1cf67ec6725995efd69d52753 /runtime/lua/vim/treesitter.lua | |
parent | 42b441738d833543c98c97cad0c200bde28ae233 (diff) | |
download | rneovim-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.lua | 9 |
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 |