diffview was doing the job for reviewing a branch before merging it, but
not well enough. codediff renders diffs the way VSCode does - light
line-level backgrounds with deeper character-level highlights on top of
them - so what actually changed within a line is legible rather than
inferred.
Keymaps carry over one for one: <leader>gd opens the status explorer,
<leader>gh/<leader>gH the file and branch history, and <leader>gm still
prompts for a base branch and diffs rev...HEAD against it. <leader>gc is
folded into codediff's own quit action alongside q, since there is no
close command to map it to.
Its diffing is done in C, and the library is downloaded prebuilt on
first use rather than compiled, so there is no build step for vim.pack
to worry about.
gd only diffs the working tree against the index, so it shows nothing
once a branch's work is already committed - found this reviewing a
fully-committed branch, where it just showed blank panes.
gm prompts for a rev and opens DiffviewOpen <rev>...HEAD instead. The
prompt defaults to whatever the first remote's HEAD points to, since
the base branch name isn't consistent across repos (main here,
develop in jonnybarnes.uk).
Verified against jonnybarnes.uk's micropub-token-revocation branch:
default_branch() correctly resolved forge/HEAD to develop there vs
main in this repo, and DiffviewOpen develop...HEAD listed all 25
changed files.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013t7aQbc4EyYtab1crvSFTd
Installed via vim.pack, matching how the other plugins here are
managed. Adds a new <leader>g "diff" group: gd opens a Diffview
against the index, gc closes it, gh shows history for the current
file, gH for the branch.
Verified headlessly: config/plugins loads clean, :DiffviewOpen is
registered, and opening/closing a Diffview against this repo works
with no errors.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013t7aQbc4EyYtab1crvSFTd