Update LSP sync patch.

This commit is contained in:
Gabriel Ebner 2021-12-15 20:21:50 +01:00
parent f938fd473e
commit 2ba9a7db29

@ -1,19 +1,8 @@
From 0500ace6e138c3fcbd15b951f6af76a45e80f0ab Mon Sep 17 00:00:00 2001
From: Rishikesh Vaishnav <rishhvaishnav@gmail.com>
Date: Wed, 15 Dec 2021 18:08:10 +0000
Subject: [PATCH] fix(lsp): general fix/simplification of incremental sync
---
runtime/lua/vim/lsp/sync.lua | 125 ++++----
src/nvim/lua/stdlib.c | 4 +-
.../plugin/lsp/incremental_sync_spec.lua | 275 +++++++++++++++++-
3 files changed, 332 insertions(+), 72 deletions(-)
diff --git a/runtime/lua/vim/lsp/sync.lua b/runtime/lua/vim/lsp/sync.lua diff --git a/runtime/lua/vim/lsp/sync.lua b/runtime/lua/vim/lsp/sync.lua
index 5df2a4d144d2..ce3c8c1b2e5d 100644 index 5df2a4d144d2..8d08d2763bdc 100644
--- a/runtime/lua/vim/lsp/sync.lua --- a/runtime/lua/vim/lsp/sync.lua
+++ b/runtime/lua/vim/lsp/sync.lua +++ b/runtime/lua/vim/lsp/sync.lua
@@ -93,30 +93,35 @@ end @@ -93,30 +93,38 @@ end
-- utf-8 index and either the utf-16, or utf-32 index. -- utf-8 index and either the utf-16, or utf-32 index.
---@param line string the line to index into ---@param line string the line to index into
---@param byte integer the byte idx ---@param byte integer the byte idx
@ -43,9 +32,11 @@ index 5df2a4d144d2..ce3c8c1b2e5d 100644
- if byte == 1 or #line == 0 then - if byte == 1 or #line == 0 then
- char = byte - char = byte
+ +
+ -- optimize for first byte case
+ if byte == 1 then
+ char = 1
-- Called in the case of extending an empty line "" -> "a" -- Called in the case of extending an empty line "" -> "a"
- elseif byte == #line + 1 then elseif byte == #line + 1 then
+ if byte == #line + 1 then
char = compute_line_length(line, offset_encoding) + 1 char = compute_line_length(line, offset_encoding) + 1
else else
- -- Modifying line, find the nearest utf codepoint - -- Modifying line, find the nearest utf codepoint
@ -66,7 +57,7 @@ index 5df2a4d144d2..ce3c8c1b2e5d 100644
return byte, char return byte, char
end end
@@ -157,18 +162,7 @@ local function compute_start_range(prev_lines, curr_lines, firstline, lastline, @@ -157,18 +165,7 @@ local function compute_start_range(prev_lines, curr_lines, firstline, lastline,
end end
-- Convert byte to codepoint if applicable -- Convert byte to codepoint if applicable
@ -86,7 +77,7 @@ index 5df2a4d144d2..ce3c8c1b2e5d 100644
-- Return the start difference (shared for new and prev lines) -- Return the start difference (shared for new and prev lines)
return { line_idx = firstline, byte_idx = byte_idx, char_idx = char_idx } return { line_idx = firstline, byte_idx = byte_idx, char_idx = char_idx }
@@ -209,51 +203,48 @@ local function compute_end_range(prev_lines, curr_lines, start_range, firstline, @@ -209,51 +206,48 @@ local function compute_end_range(prev_lines, curr_lines, start_range, firstline,
local prev_line_length = #prev_line local prev_line_length = #prev_line
local curr_line_length = #curr_line local curr_line_length = #curr_line