commit e42fdaad21a87d0aaf882f1ad836b00d2eccd21a
parent 1b679ac192877ae21e531d2eaa88ef0918f1dfe1
Author: Akin <22454918+akinsho@users.noreply.github.com>
Date: Wed, 21 Jun 2023 09:55:19 +0200
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.
Diffstat:
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/runtime/lua/vim/lsp/_inlay_hint.lua b/runtime/lua/vim/lsp/_inlay_hint.lua
@@ -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