neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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:
Mruntime/lua/vim/lsp/_inlay_hint.lua | 10+++++-----
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