fix(highlight): omit DiffsClear bg on transparent themes

Problem: #178 set `DiffsClear.bg` to a dark fallback (`#1a1a1a`) on
transparent themes, painting a visible solid rectangle where the
terminal background should show through.

Solution: only set `DiffsClear.bg` when `Normal.bg` is defined.
Body lines are already protected by `line_hl_group` (`DiffsAdd`/
`DiffsDelete`), which stacks above `hl_group` bg regardless of
priority.
This commit is contained in:
Barrett Ruth 2026-03-08 16:07:27 -04:00
parent 59714381f1
commit fca354c147
Signed by: barrett
GPG key ID: A6C96C9349D2FC81
2 changed files with 18 additions and 3 deletions

View file

@ -528,7 +528,11 @@ local function compute_highlight_groups(is_default)
local blended_add_text = blend_color(add_bg, bg, text_alpha)
local blended_del_text = blend_color(del_bg, bg, text_alpha)
vim.api.nvim_set_hl(0, 'DiffsClear', { default = dflt, fg = normal_fg, bg = bg })
local clear_hl = { default = dflt, fg = normal_fg }
if not transparent then
clear_hl.bg = bg
end
vim.api.nvim_set_hl(0, 'DiffsClear', clear_hl)
vim.api.nvim_set_hl(0, 'DiffsAdd', { default = dflt, bg = blended_add })
vim.api.nvim_set_hl(0, 'DiffsDelete', { default = dflt, bg = blended_del })
vim.api.nvim_set_hl(0, 'DiffsAddNr', { default = dflt, fg = add_fg, bg = blended_add })