little bit overhaul here and there :))
This commit is contained in:
51
lua/plugins/diffview.lua
Normal file
51
lua/plugins/diffview.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
-- lua/plugins/extras/diffview.lua
|
||||
-- Side-by-side diff view for staged/unstaged changes across all files
|
||||
-- https://github.com/sindrets/diffview.nvim
|
||||
--
|
||||
-- Keymaps:
|
||||
-- <leader>ds — staged changes (git diff --cached)
|
||||
-- <leader>du — unstaged changes (git diff)
|
||||
-- <leader>dh — diff against HEAD
|
||||
-- <leader>dq — close diffview
|
||||
--
|
||||
-- Inside diffview:
|
||||
-- <Tab> / <S-Tab> — next/prev changed file
|
||||
-- [c / ]c — prev/next hunk in file
|
||||
-- s — stage/unstage file (in file panel)
|
||||
-- q / <leader>dq — close
|
||||
|
||||
return {
|
||||
'sindrets/diffview.nvim',
|
||||
lazy = true,
|
||||
dependencies = { 'nvim-tree/nvim-web-devicons' },
|
||||
cmd = { 'DiffviewOpen', 'DiffviewClose', 'DiffviewFileHistory' },
|
||||
keys = {
|
||||
{ '<leader>ds', '<cmd>DiffviewOpen --staged<cr>', desc = 'git [d]iff [s]taged' },
|
||||
{ '<leader>du', '<cmd>DiffviewOpen<cr>', desc = 'git [d]iff [u]nstaged' },
|
||||
{ '<leader>dh', '<cmd>DiffviewOpen HEAD<cr>', desc = 'git [d]iff [h]ead' },
|
||||
{ '<leader>dq', '<cmd>DiffviewClose<cr>', 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', '<cmd>DiffviewClose<cr>', { buffer = true, silent = true })
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user