2.6 KiB
2.6 KiB
diffs.nvim
Syntax highlighting for diffs in Neovim
Enhance vim-fugitive and Neovim's built-in diff mode with language-aware syntax highlighting.
Features
- Treesitter syntax highlighting in
:Gitdiffs and commit views :Gdiffsplit/:Gvdiffsplitsyntax through diff backgrounds- Background-only diff colors for any
&diffbuffer (:diffthis,vimdiff) - Vim syntax fallback for languages without a treesitter parser
- Hunk header context highlighting (
@@ ... @@ function foo()) - Configurable debouncing, max lines, and diff prefix concealment
Requirements
- Neovim 0.9.0+
- vim-fugitive (optional, for unified diff syntax highlighting)
Installation
Using lazy.nvim:
{
'barrettruth/diffs.nvim',
dependencies = { 'tpope/vim-fugitive' },
opts = {},
}
Documentation
:help diffs.nvim
Highlight Groups
diffs.nvim defines the following highlight groups. All use default = true, so
colorschemes can override them.
| Group | Purpose |
|---|---|
DiffsAdd |
Background for + lines in fugitive unified diffs |
DiffsDelete |
Background for - lines in fugitive unified diffs |
DiffsAddNr |
Line number highlight for + lines |
DiffsDeleteNr |
Line number highlight for - lines |
DiffsDiffAdd |
Background-only DiffAdd for &diff windows |
DiffsDiffDelete |
Background-only DiffDelete for &diff windows |
DiffsDiffChange |
Background-only DiffChange for &diff windows |
DiffsDiffText |
Background-only DiffText for &diff windows |
By default, these are computed from your colorscheme's DiffAdd, DiffDelete,
DiffChange, DiffText, and Normal groups. To customize, define them in your
colorscheme before diffs.nvim loads, or link them to existing groups.
Known Limitations
- Syntax "flashing": diffs.nvim hooks into the
FileType fugitiveevent triggered by vim-fugitive, at which point the buffer is preliminarily painted. The buffer is then re-painted afterdebounce_msmilliseconds, causing an unavoidable visual "flash" even whendebounce_ms = 0.