diff options
author | Christian Clason <c.clason@uni-graz.at> | 2023-05-13 12:56:21 +0200 |
---|---|---|
committer | Christian Clason <c.clason@uni-graz.at> | 2023-05-15 14:13:42 +0200 |
commit | 9ff59517cbf309d31f979a49b7dc82b237ecfcc4 (patch) | |
tree | 68ce6e9f0b5cfe37b338a549fd2989ac08fdf37c /runtime/lua/vim/treesitter/query.lua | |
parent | c97de026e357dec0bed034af3b54abf10966200b (diff) | |
download | rneovim-9ff59517cbf309d31f979a49b7dc82b237ecfcc4.tar.gz rneovim-9ff59517cbf309d31f979a49b7dc82b237ecfcc4.tar.bz2 rneovim-9ff59517cbf309d31f979a49b7dc82b237ecfcc4.zip |
fix(treesitter): update c queries
Diffstat (limited to 'runtime/lua/vim/treesitter/query.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/query.lua | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua index 75e5bf8870..73b561c777 100644 --- a/runtime/lua/vim/treesitter/query.lua +++ b/runtime/lua/vim/treesitter/query.lua @@ -382,6 +382,39 @@ local predicate_handlers = { return string_set[node_text] end, + + ['has-ancestor?'] = function(match, _, _, predicate) + local node = match[predicate[2]] + if not node then + return true + end + + local ancestor_types = {} + for _, type in ipairs({ unpack(predicate, 3) }) do + ancestor_types[type] = true + end + + node = node:parent() + while node do + if ancestor_types[node:type()] then + return true + end + node = node:parent() + end + return false + end, + + ['has-parent?'] = function(match, _, _, predicate) + local node = match[predicate[2]] + if not node then + return true + end + + if vim.list_contains({ unpack(predicate, 3) }, node:parent():type()) then + return true + end + return false + end, } -- As we provide lua-match? also expose vim-match? |