nvim/lua/plugins/gitsigns.lua
2026-04-07 13:58:26 -03:00

64 lines
1.8 KiB
Lua

return {
'lewis6991/gitsigns.nvim',
event = 'BufReadPre',
---@module 'gitsigns'
---@type GitSigns.Config
opts = {
signs = {
add = { text = '' },
change = { text = '' },
delete = { text = '' },
topdelete = { text = '' },
changedelete = { text = '~' },
untracked = { text = '' },
},
signs_staged = {
add = { text = '' },
change = { text = '' },
delete = { text = '' },
topdelete = { text = '' },
changedelete = { text = '~' },
},
signs_staged_enable = true,
current_line_blame = false,
on_attach = function(bufnr)
local gs = require('gitsigns')
local function map(mode, lhs, rhs, desc)
vim.keymap.set(mode, lhs, rhs, { buffer = bufnr, desc = desc })
end
map('n', ']h', function()
if vim.wo.diff then
vim.cmd.normal({ ']c', bang = true })
else
gs.nav_hunk('next')
end
end, 'Next hunk')
map('n', '[h', function()
if vim.wo.diff then
vim.cmd.normal({ '[c', bang = true })
else
gs.nav_hunk('prev')
end
end, 'Prev hunk')
map('n', '<leader>hs', function()
gs.stage_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, 'Stage hunk (selection)')
map('v', '<leader>hr', function()
gs.reset_hunk({ vim.fn.line('.'), vim.fn.line('v') })
end, 'Reset hunk (selection)')
map('n', '<leader>hp', gs.preview_hunk, 'Preview hunk')
map('n', '<leader>hd', gs.diffthis, 'Diff this')
map('n', '<leader>hD', function() gs.diffthis('~') end, 'Diff this (last commit)')
map('n', '<leader>gb', gs.toggle_current_line_blame, 'Toggle line blame')
map('n', '<leader>gB', gs.blame, 'Blame buffer')
end
},
}