diff options
author | Thomas Vigouroux <tomvig38@gmail.com> | 2020-11-23 18:42:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-23 18:42:08 +0100 |
commit | 2d36b62eda16ae1cf370f4107530fa65d2b1bce4 (patch) | |
tree | 0c3ce45e2049509b2af5fd0897ff34c20f5f4bf3 /runtime/lua/vim | |
parent | fb52790d1c16afdd12e4e484ee1dbce8d2a161b9 (diff) | |
parent | 52d76f0a3273ca8d7c6a50c6cf4e44cfde939f73 (diff) | |
download | rneovim-2d36b62eda16ae1cf370f4107530fa65d2b1bce4.tar.gz rneovim-2d36b62eda16ae1cf370f4107530fa65d2b1bce4.tar.bz2 rneovim-2d36b62eda16ae1cf370f4107530fa65d2b1bce4.zip |
Merge pull request #13270 from vigoux/ts-range-ranges
treesitter: allow table to be used as ranges
Diffstat (limited to 'runtime/lua/vim')
-rw-r--r-- | runtime/lua/vim/treesitter/languagetree.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/runtime/lua/vim/treesitter/languagetree.lua b/runtime/lua/vim/treesitter/languagetree.lua index ed07e73a55..70e2ac4c62 100644 --- a/runtime/lua/vim/treesitter/languagetree.lua +++ b/runtime/lua/vim/treesitter/languagetree.lua @@ -1,3 +1,4 @@ +local a = vim.api local query = require'vim.treesitter.query' local language = require'vim.treesitter.language' @@ -234,6 +235,24 @@ end -- -- @param regions A list of regions this tree should manange and parse. function LanguageTree:set_included_regions(regions) + -- Transform the tables from 4 element long to 6 element long (with byte offset) + for _, region in ipairs(regions) do + for i, range in ipairs(region) do + if type(range) == "table" and #range == 4 then + -- TODO(vigoux): I don't think string parsers are useful for now + if type(self._source) == "number" then + local start_row, start_col, end_row, end_col = unpack(range) + -- Easy case, this is a buffer parser + -- TODO(vigoux): proper byte computation here, and account for EOL ? + local start_byte = a.nvim_buf_get_offset(self.bufnr, start_row) + start_col + local end_byte = a.nvim_buf_get_offset(self.bufnr, end_row) + end_col + + region[i] = { start_row, start_col, start_byte, end_row, end_col, end_byte } + end + end + end + end + self._regions = regions -- Trees are no longer valid now that we have changed regions. -- TODO(vigoux,steelsojka): Look into doing this smarter so we can use some of the |