diff options
| author | Lewis Russell <lewis6991@gmail.com> | 2025-06-05 11:31:51 +0100 |
|---|---|---|
| committer | Lewis Russell <me@lewisr.dev> | 2025-06-06 15:36:48 +0100 |
| commit | 3b6084ddf4f0d49fb0e5d135919c9daacea2a46d (patch) | |
| tree | c46454da48ec05e345c953f4e172e52dff8bef52 /runtime/lua/vim/lsp/sync.lua | |
| parent | 4c333fdbb7bee299f36624b429f5c065470e421d (diff) | |
| download | rneovim-3b6084ddf4f0d49fb0e5d135919c9daacea2a46d.tar.gz rneovim-3b6084ddf4f0d49fb0e5d135919c9daacea2a46d.tar.bz2 rneovim-3b6084ddf4f0d49fb0e5d135919c9daacea2a46d.zip | |
fix: type fixes
Type fixes caught by emmylua
Diffstat (limited to 'runtime/lua/vim/lsp/sync.lua')
| -rw-r--r-- | runtime/lua/vim/lsp/sync.lua | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/runtime/lua/vim/lsp/sync.lua b/runtime/lua/vim/lsp/sync.lua index 621f63b25f..a7c688ee89 100644 --- a/runtime/lua/vim/lsp/sync.lua +++ b/runtime/lua/vim/lsp/sync.lua @@ -52,10 +52,11 @@ local str_utf_end = vim.str_utf_end -- utf-8 index and either the utf-16, or utf-32 index. ---@param line string the line to index into ---@param byte integer the byte idx ----@param position_encoding string utf-8|utf-16|utf-32|nil (default: utf-8) +---@param position_encoding 'utf-8'|'utf-16'|'utf-32'? (default: utf-8) ---@return integer byte_idx of first change position ---@return integer char_idx of first change position local function align_end_position(line, byte, position_encoding) + position_encoding = position_encoding or 'utf-8' local char --- @type integer -- If on the first byte, or an empty string: the trivial case if byte == 1 or #line == 0 then @@ -93,7 +94,7 @@ end ---@param firstline integer firstline from on_lines, adjusted to 1-index ---@param lastline integer lastline from on_lines, adjusted to 1-index ---@param new_lastline integer new_lastline from on_lines, adjusted to 1-index ----@param position_encoding string utf-8|utf-16|utf-32|nil (fallback to utf-8) +---@param position_encoding 'utf-8'|'utf-16'|'utf-32'? (default: utf-8) ---@return vim.lsp.sync.Range result table include line_idx, byte_idx, and char_idx of first change position local function compute_start_range( prev_lines, @@ -103,6 +104,8 @@ local function compute_start_range( new_lastline, position_encoding ) + position_encoding = position_encoding or 'utf-8' + local char_idx --- @type integer? local byte_idx --- @type integer? -- If firstline == lastline, no existing text is changed. All edit operations @@ -130,8 +133,8 @@ local function compute_start_range( return { line_idx = firstline, byte_idx = 1, char_idx = 1 } end - local prev_line = prev_lines[firstline] - local curr_line = curr_lines[firstline] + local prev_line = assert(prev_lines[firstline]) + local curr_line = assert(curr_lines[firstline]) -- Iterate across previous and current line containing first change -- to find the first different byte. @@ -174,7 +177,7 @@ end ---@param firstline integer ---@param lastline integer ---@param new_lastline integer ----@param position_encoding string +---@param position_encoding 'utf-8'|'utf-16'|'utf-32' ---@return vim.lsp.sync.Range prev_end_range ---@return vim.lsp.sync.Range curr_end_range local function compute_end_range( @@ -189,7 +192,7 @@ local function compute_end_range( -- A special case for the following `firstline == new_lastline` case where lines are deleted. -- Even if the buffer has become empty, nvim behaves as if it has an empty line with eol. if #curr_lines == 1 and curr_lines[1] == '' then - local prev_line = prev_lines[lastline - 1] + local prev_line = assert(prev_lines[lastline - 1]) return { line_idx = lastline - 1, byte_idx = #prev_line + 1, @@ -219,8 +222,8 @@ local function compute_end_range( local prev_line_idx = lastline - 1 local curr_line_idx = new_lastline - 1 - local prev_line = prev_lines[lastline - 1] - local curr_line = curr_lines[new_lastline - 1] + local prev_line = assert(prev_lines[lastline - 1]) + local curr_line = assert(curr_lines[new_lastline - 1]) local prev_line_length = #prev_line local curr_line_length = #curr_line @@ -284,8 +287,8 @@ end --- Get the text of the range defined by start and end line/column ---@param lines table list of lines ----@param start_range table table returned by first_difference ----@param end_range table new_end_range returned by last_difference +---@param start_range vim.lsp.sync.Range table returned by first_difference +---@param end_range vim.lsp.sync.Range new_end_range returned by last_difference ---@return string text extracted from defined region local function extract_text(lines, start_range, end_range, line_ending) if not lines[start_range.line_idx] then @@ -326,7 +329,7 @@ end ---@param lines string[] ---@param start_range vim.lsp.sync.Range ---@param end_range vim.lsp.sync.Range ----@param position_encoding string +---@param position_encoding 'utf-8'|'utf-16'|'utf-32' ---@param line_ending string ---@return integer local function compute_range_length(lines, start_range, end_range, position_encoding, line_ending) @@ -352,7 +355,9 @@ local function compute_range_length(lines, start_range, end_range, position_enco for idx = start_range.line_idx + 1, end_range.line_idx - 1 do -- Length full line plus newline character if #lines[idx] > 0 then - range_length = range_length + str_utfindex(lines[idx], position_encoding) + #line_ending + range_length = range_length + + str_utfindex(assert(lines[idx]), position_encoding) + + #line_ending else range_length = range_length + line_ending_length end @@ -372,7 +377,7 @@ end ---@param firstline integer line to begin search for first difference ---@param lastline integer line to begin search in old_lines for last difference ---@param new_lastline integer line to begin search in new_lines for last difference ----@param position_encoding string encoding requested by language server +---@param position_encoding 'utf-8'|'utf-16'|'utf-32' encoding requested by language server ---@param line_ending string ---@return lsp.TextDocumentContentChangeEvent : see https://microsoft.github.io/language-server-protocol/specification/#textDocumentContentChangeEvent function M.compute_diff( |