-- lua/plugins/extras/diffview.lua -- Side-by-side diff view for staged/unstaged changes across all files -- https://github.com/sindrets/diffview.nvim -- -- Keymaps: -- ds — staged changes (git diff --cached) -- du — unstaged changes (git diff) -- dh — diff against HEAD -- dq — close diffview -- -- Inside diffview: -- / — next/prev changed file -- [c / ]c — prev/next hunk in file -- s — stage/unstage file (in file panel) -- q / dq — close return { 'sindrets/diffview.nvim', lazy = true, dependencies = { 'nvim-tree/nvim-web-devicons' }, cmd = { 'DiffviewOpen', 'DiffviewClose', 'DiffviewFileHistory' }, keys = { { 'ds', 'DiffviewOpen --staged', desc = 'git [d]iff [s]taged' }, { 'du', 'DiffviewOpen', desc = 'git [d]iff [u]nstaged' }, { 'dh', 'DiffviewOpen HEAD', desc = 'git [d]iff [h]ead' }, { 'dq', 'DiffviewClose', desc = 'git [d]iff [q]uit' }, }, opts = { enhanced_diff_hl = true, view = { default = { layout = 'diff2_horizontal', -- side by side winbar_info = true, }, merge_tool = { layout = 'diff3_horizontal', disable_diagnostics = true, }, }, file_panel = { listing_style = 'tree', win_config = { width = 35 }, }, hooks = { -- close diffview with q in any diffview buffer view_opened = function() vim.keymap.set('n', 'q', 'DiffviewClose', { buffer = true, silent = true }) end, }, }, }