mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 04:17:01 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user