aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/treesitter.lua
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2019-08-05 19:37:17 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2019-09-28 17:46:25 +0200
commitf86a2c33a2e54193598be1d8c856363e02b91e37 (patch)
tree4f407ed4666e13d1047c89d1aa4f9dd2e76c1c39 /runtime/lua/vim/treesitter.lua
parent06ee45b9b1c14c7ce6cb23403cdbe2852d495cad (diff)
downloadrneovim-f86a2c33a2e54193598be1d8c856363e02b91e37.tar.gz
rneovim-f86a2c33a2e54193598be1d8c856363e02b91e37.tar.bz2
rneovim-f86a2c33a2e54193598be1d8c856363e02b91e37.zip
tree-sitter: simplify editing using the new old_byte_size parameter
Diffstat (limited to 'runtime/lua/vim/treesitter.lua')
-rw-r--r--runtime/lua/vim/treesitter.lua25
1 files changed, 5 insertions, 20 deletions
diff --git a/runtime/lua/vim/treesitter.lua b/runtime/lua/vim/treesitter.lua
index 8aa170061b..69b1ac8716 100644
--- a/runtime/lua/vim/treesitter.lua
+++ b/runtime/lua/vim/treesitter.lua
@@ -17,27 +17,12 @@ function Parser:parse()
return self.tree
end
-local function on_lines(self, bufnr, _, start_row, oldstopline, stop_row)
+local function on_lines(self, bufnr, _, start_row, old_stop_row, stop_row, old_byte_size)
local start_byte = a.nvim_buf_get_offset(bufnr,start_row)
- -- a bit messy, should we expose edited but not reparsed tree?
- -- are multiple edits safe in general?
- local root = self._parser:tree():root()
- -- TODO: add proper lookup function!
- local inode = root:descendant_for_point_range(oldstopline+9000,0, oldstopline,0)
- if inode == nil then
- local stop_byte = a.nvim_buf_get_offset(bufnr,stop_row)
- self._parser:edit(start_byte,stop_byte,stop_byte,
- start_row,0,stop_row,0,stop_row,0)
- else
- local fakeoldstoprow, fakeoldstopcol, fakebyteoldstop = inode:start()
- local fake_rows = fakeoldstoprow-oldstopline
- local fakestop = stop_row+fake_rows
- local fakebytestop = a.nvim_buf_get_offset(bufnr,fakestop)+fakeoldstopcol
- self._parser:edit(start_byte, fakebyteoldstop, fakebytestop,
- start_row, 0,
- fakeoldstoprow, fakeoldstopcol,
- fakestop, fakeoldstopcol)
- end
+ local stop_byte = a.nvim_buf_get_offset(bufnr,stop_row)
+ local old_stop_byte = start_byte + old_byte_size
+ self._parser:edit(start_byte,old_stop_byte,stop_byte,
+ start_row,0,old_stop_row,0,stop_row,0)
self.valid = false
end