diffs.nvim/plugin/diffs.lua
Barrett Ruth 9289f33639 feat(fugitive): add status buffer keymaps for unified diffs
Adds du/dU keymaps to fugitive's :Git status buffer for opening unified
diffs instead of side-by-side diffs:
- du opens horizontal split (mirrors dd)
- dU opens vertical split (mirrors dv)

Parses status buffer lines to extract filename and detect section
(staged/unstaged/untracked). For staged files, diffs index vs HEAD.
For unstaged files, diffs working tree vs index.

Configurable via vim.g.diffs.fugitive.horizontal/vertical (set to
false to disable).
2026-02-04 22:23:21 -05:00

35 lines
843 B
Lua

if vim.g.loaded_diffs then
return
end
vim.g.loaded_diffs = 1
require('diffs.commands').setup()
vim.api.nvim_create_autocmd('FileType', {
pattern = { 'fugitive', 'git' },
callback = function(args)
local diffs = require('diffs')
if args.match == 'git' and not diffs.is_fugitive_buffer(args.buf) then
return
end
diffs.attach(args.buf)
if args.match == 'fugitive' then
local fugitive_config = diffs.get_fugitive_config()
if fugitive_config.horizontal or fugitive_config.vertical then
require('diffs.fugitive').setup_keymaps(args.buf, fugitive_config)
end
end
end,
})
vim.api.nvim_create_autocmd('OptionSet', {
pattern = 'diff',
callback = function()
if vim.wo.diff then
require('diffs').attach_diff()
else
require('diffs').detach_diff()
end
end,
})