Line-level backgrounds (DiffsAdd/DiffsDelete) now get a second tier:
changed characters within modified lines receive an intense background
overlay (DiffsAddText/DiffsDeleteText at 70% alpha vs 40% for lines).
Treesitter foreground colors show through since the extmarks only set bg.
diff.lua extracts contiguous -/+ change groups from hunk lines and diffs
each group byte-by-byte using vim.diff(). An optional libvscodediff FFI
backend (lib.lua) auto-downloads the .so from codediff.nvim releases and
falls back to native if unavailable.
New config: highlights.intra.{enabled, algorithm, max_lines}. Gated by
max_lines (default 200) to avoid stalling on huge hunks. Priority 201
sits above treesitter (200) so the character bg always wins.
Closes #60
27 lines
690 B
Lua
27 lines
690 B
Lua
local M = {}
|
|
|
|
function M.check()
|
|
vim.health.start('diffs.nvim')
|
|
|
|
if vim.fn.has('nvim-0.9.0') == 1 then
|
|
vim.health.ok('Neovim 0.9.0+ detected')
|
|
else
|
|
vim.health.error('diffs.nvim requires Neovim 0.9.0+')
|
|
end
|
|
|
|
local fugitive_loaded = vim.fn.exists(':Git') == 2
|
|
if fugitive_loaded then
|
|
vim.health.ok('vim-fugitive detected')
|
|
else
|
|
vim.health.warn('vim-fugitive not detected (required for unified diff highlighting)')
|
|
end
|
|
|
|
local lib = require('diffs.lib')
|
|
if lib.has_lib() then
|
|
vim.health.ok('libvscode_diff found at ' .. lib.lib_path())
|
|
else
|
|
vim.health.info('libvscode_diff not found (optional, using native vim.diff fallback)')
|
|
end
|
|
end
|
|
|
|
return M
|