aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2024-06-02 09:54:15 +0200
committerGitHub <noreply@github.com>2024-06-02 09:54:15 +0200
commit19be3d26830ced203631045f2f622e75e6d857a7 (patch)
tree2b68c87663e010eaf6d0369ebb20932cb9d18991 /test
parent24cb9ba6d32918beaba5a2109f5f8d8009cd097d (diff)
downloadrneovim-19be3d26830ced203631045f2f622e75e6d857a7.tar.gz
rneovim-19be3d26830ced203631045f2f622e75e6d857a7.tar.bz2
rneovim-19be3d26830ced203631045f2f622e75e6d857a7.zip
fix(lsp): trim trailing whitespace from completion words (#29122)
the `complete()` mechanism doesn't play nicely with trailing newlines or tabs. A newline causes it to insert a null character, showing up as `^@`.
Diffstat (limited to 'test')
-rw-r--r--test/functional/plugin/lsp/completion_spec.lua35
1 files changed, 35 insertions, 0 deletions
diff --git a/test/functional/plugin/lsp/completion_spec.lua b/test/functional/plugin/lsp/completion_spec.lua
index d7755dd0c4..d8a3e0acbd 100644
--- a/test/functional/plugin/lsp/completion_spec.lua
+++ b/test/functional/plugin/lsp/completion_spec.lua
@@ -126,6 +126,41 @@ describe('vim.lsp.completion: item conversion', function()
eq(expected, result)
end)
+ it('trims trailing newline or tab from textEdit', function()
+ local range0 = {
+ start = { line = 0, character = 0 },
+ ['end'] = { line = 0, character = 0 },
+ }
+ local items = {
+ {
+ detail = 'ansible.builtin',
+ filterText = 'lineinfile ansible.builtin.lineinfile builtin ansible',
+ kind = 7,
+ label = 'ansible.builtin.lineinfile',
+ sortText = '2_ansible.builtin.lineinfile',
+ textEdit = {
+ newText = 'ansible.builtin.lineinfile:\n ',
+ range = range0,
+ },
+ },
+ }
+ local result = complete('|', items)
+ result = vim.tbl_map(function(x)
+ return {
+ abbr = x.abbr,
+ word = x.word,
+ }
+ end, result.items)
+
+ local expected = {
+ {
+ abbr = 'ansible.builtin.lineinfile',
+ word = 'ansible.builtin.lineinfile:',
+ },
+ }
+ eq(expected, result)
+ end)
+
it('prefers wordlike components for snippets', function()
-- There are two goals here:
--