fix(lsp): fallback to label for completion items if all others are missing (#29522)

This commit is contained in:
Sebastian Lyng Johansen
2024-07-02 18:27:51 +02:00
committed by GitHub
parent cb84cd5d9f
commit aec7f1979a
2 changed files with 28 additions and 1 deletions

View File

@ -176,7 +176,7 @@ local function apply_defaults(item, defaults)
if defaults.editRange then
local textEdit = item.textEdit or {}
item.textEdit = textEdit
textEdit.newText = textEdit.newText or item.textEditText or item.insertText
textEdit.newText = textEdit.newText or item.textEditText or item.insertText or item.label
if defaults.editRange.start then
textEdit.range = textEdit.range or defaults.editRange
elseif defaults.editRange.insert then

View File

@ -427,6 +427,33 @@ describe('vim.lsp.completion: item conversion', function()
eq('the-insertText', text)
end
)
it(
'defaults to label as textEdit.newText if insertText or textEditText are not present',
function()
local completion_list = {
isIncomplete = false,
itemDefaults = {
editRange = {
start = { line = 1, character = 1 },
['end'] = { line = 1, character = 4 },
},
insertTextFormat = 2,
data = 'foobar',
},
items = {
{
label = 'hello',
data = 'item-property-has-priority',
},
},
}
local result = complete('|', completion_list)
eq(1, #result.items)
local text = result.items[1].user_data.nvim.lsp.completion_item.textEdit.newText
eq('hello', text)
end
)
end)
describe('vim.lsp.completion: protocol', function()