diff options
author | figsoda <figsoda@pm.me> | 2022-12-26 16:11:45 -0500 |
---|---|---|
committer | figsoda <figsoda@pm.me> | 2023-02-04 21:15:03 -0500 |
commit | 4c66f5ff97a52fbc933fdbe1907c4b960d5a7403 (patch) | |
tree | ef1f063fd17064ef3293eca6590038fe963a304c /runtime/lua/vim/treesitter/query.lua | |
parent | e1d5ad1cb87d43c3d75619e239312d4ab2029b45 (diff) | |
download | rneovim-4c66f5ff97a52fbc933fdbe1907c4b960d5a7403.tar.gz rneovim-4c66f5ff97a52fbc933fdbe1907c4b960d5a7403.tar.bz2 rneovim-4c66f5ff97a52fbc933fdbe1907c4b960d5a7403.zip |
feat(treesitter): respect metadata[id].range for offset!
Diffstat (limited to 'runtime/lua/vim/treesitter/query.lua')
-rw-r--r-- | runtime/lua/vim/treesitter/query.lua | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/runtime/lua/vim/treesitter/query.lua b/runtime/lua/vim/treesitter/query.lua index 9136b596be..a0522d7cda 100644 --- a/runtime/lua/vim/treesitter/query.lua +++ b/runtime/lua/vim/treesitter/query.lua @@ -445,9 +445,11 @@ local directive_handlers = { ['offset!'] = function(match, _, _, pred, metadata) ---@cast pred integer[] local capture_id = pred[2] - local offset_node = match[capture_id] - local range = { offset_node:range() } - ---@cast range integer[] bug in sumneko + if not metadata[capture_id] then + metadata[capture_id] = {} + end + + local range = metadata[capture_id].range or { match[capture_id]:range() } local start_row_offset = pred[3] or 0 local start_col_offset = pred[4] or 0 local end_row_offset = pred[5] or 0 @@ -460,9 +462,6 @@ local directive_handlers = { -- If this produces an invalid range, we just skip it. if range[1] < range[3] or (range[1] == range[3] and range[2] <= range[4]) then - if not metadata[capture_id] then - metadata[capture_id] = {} - end metadata[capture_id].range = range end end, |