nvim/lua/custom/plugins/gitsigns.lua
Jeremie Fraeys 43104006ae
refactor: streamline git workflow plugins
- Simplify gitsigns.lua configuration
- Update fugitive.lua bindings
- Restructure worktree.lua setup
2026-03-23 20:33:37 -04:00

55 lines
1.6 KiB
Lua
Executable file

return {
'lewis6991/gitsigns.nvim',
event = 'BufReadPre',
opts = {
signs = {
add = { text = '+' },
change = { text = '~' },
delete = { text = '_' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, keys, func, desc)
vim.keymap.set(mode, keys, func, { buffer = bufnr, desc = 'Git: ' .. desc })
end
-- Navigation
map({ 'n', 'v' }, ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(gs.next_hunk)
return '<Ignore>'
end, 'Next hunk')
map({ 'n', 'v' }, '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(gs.prev_hunk)
return '<Ignore>'
end, 'Prev hunk')
-- Hunks
map('n', '<leader>hs', gs.stage_hunk, 'Stage hunk')
map('n', '<leader>hr', gs.reset_hunk, 'Reset hunk')
map('n', '<leader>hp', gs.preview_hunk, 'Preview hunk')
map('n', '<leader>hu', gs.undo_stage_hunk, 'Undo stage hunk')
map('n', '<leader>hb', function()
gs.blame_line({ full = true })
end, 'Blame line')
map('n', '<leader>hd', gs.diffthis, 'Diff this')
-- Visual stage/reset
map('v', '<leader>hs', function()
gs.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, 'Stage hunk')
map('v', '<leader>hr', function()
gs.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, 'Reset hunk')
end,
},
}