aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/lsp/util.lua
diff options
context:
space:
mode:
authorMichael Lingelbach <m.j.lbach@gmail.com>2021-03-27 16:38:43 -0700
committerMichael Lingelbach <m.j.lbach@gmail.com>2021-03-27 18:31:29 -0700
commitaf683fdb570bc74a2b5b38bf5787ec55c1d6d9eb (patch)
tree8f6e50a2ba075eed31aa42d1db1e552c1de078d2 /runtime/lua/vim/lsp/util.lua
parentd41778c993e95c8b37b3d8e10dacc3060ae489da (diff)
downloadrneovim-af683fdb570bc74a2b5b38bf5787ec55c1d6d9eb.tar.gz
rneovim-af683fdb570bc74a2b5b38bf5787ec55c1d6d9eb.tar.bz2
rneovim-af683fdb570bc74a2b5b38bf5787ec55c1d6d9eb.zip
lsp: fix utf16 ranges for incremental sync
Diffstat (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r--runtime/lua/vim/lsp/util.lua5
1 files changed, 4 insertions, 1 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua
index a75ab37508..942c6761c4 100644
--- a/runtime/lua/vim/lsp/util.lua
+++ b/runtime/lua/vim/lsp/util.lua
@@ -373,9 +373,12 @@ function M.compute_diff(old_lines, new_lines, start_line_idx, end_line_idx)
adj_end_char = #old_lines[#old_lines + end_line + 1] + end_char + 1
end
+ start_char = vim.str_utfindex(old_lines[start_line], start_char - 1)
+ adj_end_char = vim.str_utfindex(old_lines[#old_lines + end_line + 1], adj_end_char)
+
local result = {
range = {
- start = { line = start_line - 1, character = start_char - 1},
+ start = { line = start_line - 1, character = start_char},
["end"] = { line = adj_end_line, character = adj_end_char}
},
text = text,