aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorglepnir <glephunter@gmail.com>2025-02-13 18:24:38 +0800
committerGitHub <noreply@github.com>2025-02-13 11:24:38 +0100
commitc374f264305f0cae77b13eba99db027aa7a6cb07 (patch)
tree9757799a167a2a8b9840cad6b1a057d83a5b8983 /test
parentb42dc232c53211e718a39d8df2f80402f7ad9ac6 (diff)
downloadrneovim-c374f264305f0cae77b13eba99db027aa7a6cb07.tar.gz
rneovim-c374f264305f0cae77b13eba99db027aa7a6cb07.tar.bz2
rneovim-c374f264305f0cae77b13eba99db027aa7a6cb07.zip
fix(lsp): clear word when expand multi-lines word (#32393)
Problem: When expanding a completion item that contains a multi-line word, the word is not deleted correctly. Solution: If the word contains a line break, delete the text from Context.cursor to the current cursor position.
Diffstat (limited to 'test')
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua38
1 files changed, 38 insertions, 0 deletions
diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua
index 0b202724ed..33c025daba 100644
--- a/test/functional/plugin/lsp/completion_spec.lua
+++ b/test/functional/plugin/lsp/completion_spec.lua
@@ -1113,4 +1113,42 @@ describe('vim.lsp.completion: integration', function()
end)
)
end)
+
+ it('#clear multiple-lines word', function()
+ local completion_list = {
+ isIncomplete = false,
+ items = {
+ {
+ label = 'then...end',
+ sortText = '0001',
+ insertText = 'then\n\t$0\nend',
+ kind = 15,
+ insertTextFormat = 2,
+ },
+ },
+ }
+ exec_lua(function()
+ vim.o.completeopt = 'menuone,noselect'
+ end)
+ create_server('dummy', completion_list)
+ feed('Sif true <C-X><C-O>')
+ retry(nil, nil, function()
+ eq(
+ 1,
+ exec_lua(function()
+ return vim.fn.pumvisible()
+ end)
+ )
+ end)
+ feed('<C-n><C-y>')
+ eq(
+ { true, { 'if true then', '\t', 'end' } },
+ exec_lua(function()
+ return {
+ vim.snippet.active({ direction = 1 }),
+ vim.api.nvim_buf_get_lines(0, 0, -1, true),
+ }
+ end)
+ )
+ end)
end)