fix(lsp): add spacing for inlay hints separately #24079

Problem:
Spacing around inlay hints has the same highlight as the hint itself.
The LSP spec for inlay hints specifically mentions the padding should not be
coloured:

    /**
    Render padding before the hint.
    Note: Padding should use the editor's background color, not the
    background color of the hint itself. That means padding can be used
    to visually align/separate an inlay hint.
    */
    paddingLeft?: boolean;
    /**
    Render padding after the hint.
    Note: Padding should use the editor's background color, not the
    background color of the hint itself. That means padding can be used
    to visually align/separate an inlay hint.
    */
    paddingRight?: boolean;

Solution:
Add the space as separate parts of the virtual text, don't add the space to the
text itself.
This commit is contained in:
Akin 2023-06-21 09:55:19 +02:00 committed by GitHub
parent 1b679ac192
commit e42fdaad21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -252,18 +252,18 @@ api.nvim_set_decoration_provider(namespace, {
text = text .. part.value
end
end
local vt = {}
if hint.paddingLeft then
text = ' ' .. text
vt[#vt + 1] = { ' ' }
end
vt[#vt + 1] = { text, 'LspInlayHint' }
if hint.paddingRight then
text = text .. ' '
vt[#vt + 1] = { ' ' }
end
api.nvim_buf_set_extmark(bufnr, namespace, lnum, hint.position.character, {
virt_text_pos = 'inline',
ephemeral = false,
virt_text = {
{ text, 'LspInlayHint' },
},
virt_text = vt,
hl_mode = 'combine',
})
end