fix(highlight): make intra-line bg visible under line backgrounds
Problem: `line_hl_group` bg unconditionally overrides `hl_group` bg regardless of priority (neovim/neovim#31151). `DiffsAddText`/ `DiffsDeleteText` at p201 were invisible under `DiffsAdd`/`DiffsDelete` `line_hl_group` at p200 because they operate on separate stacking layers. Solution: replace `line_hl_group` with `hl_group` + `hl_eol` + `end_row` for line backgrounds, putting them on the same layer as intra-line highlights so priority governs stacking. Split `number_hl_group` into a separate extmark to prevent gutter bleed via `end_row`. Use raw `DiffAdd.bg`/`DiffDelete.bg` for `DiffsAddText`/ `DiffsDeleteText` instead of alpha-blending toward Normal.bg, which produced indistinguishable colors on dark themes.
This commit is contained in:
parent
a1af48833b
commit
a7d0c04ccf
2 changed files with 11 additions and 5 deletions
|
|
@ -637,10 +637,17 @@ function M.highlight_hunk(bufnr, ns, hunk, opts)
|
|||
|
||||
if opts.highlights.background and is_diff_line then
|
||||
pcall(vim.api.nvim_buf_set_extmark, bufnr, ns, buf_line, 0, {
|
||||
line_hl_group = line_hl,
|
||||
number_hl_group = opts.highlights.gutter and number_hl or nil,
|
||||
end_row = buf_line + 1,
|
||||
hl_group = line_hl,
|
||||
hl_eol = true,
|
||||
priority = p.line_bg,
|
||||
})
|
||||
if opts.highlights.gutter then
|
||||
pcall(vim.api.nvim_buf_set_extmark, bufnr, ns, buf_line, 0, {
|
||||
number_hl_group = number_hl,
|
||||
priority = p.line_bg,
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
if is_marker and line_len > pw then
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue