diff options
author | Mickaël Menu <mickael.menu@gmail.com> | 2021-05-14 18:33:23 +0200 |
---|---|---|
committer | Mickaël Menu <mickael.menu@gmail.com> | 2021-05-14 18:33:23 +0200 |
commit | c23640140dd6f8663cf2441ac2b09b6f02de7445 (patch) | |
tree | eced0d532f1c3f2ce2fd48902547eff92979693d /runtime/lua/vim/lsp/util.lua | |
parent | 61aefaf2993c0b55f6123ba4b0bd41b1caf1fcd3 (diff) | |
download | rneovim-c23640140dd6f8663cf2441ac2b09b6f02de7445.tar.gz rneovim-c23640140dd6f8663cf2441ac2b09b6f02de7445.tar.bz2 rneovim-c23640140dd6f8663cf2441ac2b09b6f02de7445.zip |
lsp: Fix range end offset off by one character
Diffstat (limited to 'runtime/lua/vim/lsp/util.lua')
-rw-r--r-- | runtime/lua/vim/lsp/util.lua | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/runtime/lua/vim/lsp/util.lua b/runtime/lua/vim/lsp/util.lua index ce8468aa8a..57919e907c 100644 --- a/runtime/lua/vim/lsp/util.lua +++ b/runtime/lua/vim/lsp/util.lua @@ -1595,6 +1595,12 @@ function M.make_given_range_params(start_pos, end_pos) if B[2] > 0 then B = {B[1], M.character_offset(0, B[1], B[2])} end + -- we need to offset the end character position otherwise we loose the last + -- character of the selection, as LSP end position is exclusive + -- see https://microsoft.github.io/language-server-protocol/specification#range + if vim.o.selection ~= 'exclusive' then + B[2] = B[2] + 1 + end return { textDocument = M.make_text_document_params(), range = { |