diff options
Diffstat (limited to 'lua/nvim-treesitter/tsrange.lua')
| -rw-r--r-- | lua/nvim-treesitter/tsrange.lua | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lua/nvim-treesitter/tsrange.lua b/lua/nvim-treesitter/tsrange.lua index 309d21b8..a8ce26f3 100644 --- a/lua/nvim-treesitter/tsrange.lua +++ b/lua/nvim-treesitter/tsrange.lua @@ -4,6 +4,7 @@ TSRange.__index = TSRange local api = vim.api local parsers = require'nvim-treesitter.parsers' +local ts_utils = require'nvim-treesitter.ts_utils' local function get_byte_offset(buf, row, col) return api.nvim_buf_get_offset(buf, row) @@ -57,8 +58,11 @@ end function TSRange:parent(range) local parser = parsers.get_parser(self.buf, parsers.get_buf_lang(range)) - local root = parser:parse()[1]:root() - return root:named_descendant_for_range(self.start_pos[1], self.start_pos[2], self.end_pos[1], self.end_pos[2]) + local root = ts_utils.get_root_for_position(range[1], range[2], parser) + + return root + and root:named_descendant_for_range(self.start_pos[1], self.start_pos[2], self.end_pos[1], self.end_pos[2]) + or nil end function TSRange:field() |
