Files
lua-nvim/lua/cargdev/plugins/diffview.lua

90 lines
2.6 KiB
Lua

-- ============================================================================
-- DIFFVIEW: Git diff viewer and file history
-- ============================================================================
-- Visual git diff interface showing changes side-by-side. View file history,
-- compare branches, review commits. <leader>gd opens diff, <leader>gh shows
-- file history. Integrates with neogit for a complete git workflow.
-- ============================================================================
return {
"sindrets/diffview.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
cmd = { "DiffviewOpen", "DiffviewClose", "DiffviewToggleFiles", "DiffviewFocusFiles", "DiffviewFileHistory" },
keys = {
{ "<leader>gd", "<cmd>DiffviewOpen<cr>", desc = "Diffview open" },
{ "<leader>gD", "<cmd>DiffviewClose<cr>", desc = "Diffview close" },
{ "<leader>gh", "<cmd>DiffviewFileHistory %<cr>", desc = "File history (current)" },
{ "<leader>gH", "<cmd>DiffviewFileHistory<cr>", desc = "File history (repo)" },
},
opts = {
diff_binaries = false,
enhanced_diff_hl = true,
use_icons = true,
show_help_hints = true,
watch_index = true,
icons = {
folder_closed = "",
folder_open = "",
},
signs = {
fold_closed = "",
fold_open = "",
done = "",
},
view = {
default = {
layout = "diff2_horizontal",
winbar_info = false,
},
merge_tool = {
layout = "diff3_horizontal",
disable_diagnostics = true,
winbar_info = true,
},
file_history = {
layout = "diff2_horizontal",
winbar_info = false,
},
},
file_panel = {
listing_style = "tree",
tree_options = {
flatten_dirs = true,
folder_statuses = "only_folded",
},
win_config = {
position = "left",
width = 35,
},
},
file_history_panel = {
log_options = {
git = {
single_file = {
diff_merges = "combined",
},
multi_file = {
diff_merges = "first-parent",
},
},
},
win_config = {
position = "bottom",
height = 16,
},
},
hooks = {},
keymaps = {
view = {
{ "n", "<tab>", "<cmd>DiffviewToggleFiles<cr>", { desc = "Toggle file panel" } },
{ "n", "q", "<cmd>DiffviewClose<cr>", { desc = "Close diffview" } },
},
file_panel = {
{ "n", "q", "<cmd>DiffviewClose<cr>", { desc = "Close diffview" } },
},
file_history_panel = {
{ "n", "q", "<cmd>DiffviewClose<cr>", { desc = "Close diffview" } },
},
},
},
}