return {
"dlyongemallo/diffview-plus.nvim",
version = "*",
- -- optional: lazy-load on command
- -- cmd = {
- -- "DiffviewOpen",
- -- "DiffviewToggle",
- -- "DiffviewFileHistory",
- -- "DiffviewDiffFiles",
- -- "DiffviewLog",
- -- },
+ config = function()
+ require("diffview").setup({
+ enhanced_diff_hl = true,
+ })
+
+ -- Toggle diffview open/close
+ vim.keymap.set('n', '<leader>dv', '<cmd>DiffviewToggle<cr>', { desc = 'Toggle Diffview' })
+
+--[[
+ -- Diff working directory
+ vim.keymap.set('n', '<leader>do', '<cmd>DiffviewOpen<cr>', { desc = 'Diffview open' })
+ vim.keymap.set('n', '<leader>dc', '<cmd>DiffviewClose<cr>', { desc = 'Diffview close' })
+
+ -- File history
+ vim.keymap.set('n', '<leader>dh', '<cmd>DiffviewFileHistory %<cr>', { desc = 'File history (current file)' })
+ vim.keymap.set('n', '<leader>dH', '<cmd>DiffviewFileHistory<cr>', { desc = 'File history (repo)' })
+
+ -- Visual mode: history for selection
+ vim.keymap.set('v', '<leader>dh', "<Esc><cmd>'<,'>DiffviewFileHistory --follow<CR>", { desc = 'Range history' })
+
+ -- Single line history
+ vim.keymap.set('n', '<leader>dl', '<cmd>.DiffviewFileHistory --follow<CR>', { desc = 'Line history' })
+
+ -- Diff against main/master branch (useful before merging)
+ vim.keymap.set('n', '<leader>dm', function()
+ -- Try main first, fall back to master
+ local result = vim.fn.systemlist({ 'git', 'rev-parse', '--verify', 'main' })
+ local ok = vim.v.shell_error == 0 and result[1] ~= nil and result[1] ~= ''
+ local branch = ok and 'main' or 'master'
+ vim.cmd('DiffviewOpen ' .. branch)
+ end, { desc = 'Diff against main/master' })
+---]]
+ end
}