Files
dotfiles/nvim/lua/plugins/gitsigns.lua
FaultyBranches 86475a8e8e feat: Removing nvim-lspconfig and starting the removal of Mason, adding
in LSP definitions for servers that are used, adding in a script to
check for LSPs, removing some extraneous items in the tmux conf, moving
autopairs to its own file
2026-08-16 20:19:05 -05:00

53 lines
2.1 KiB
Lua

vim.pack.add({
'https://github.com/lewis6991/gitsigns.nvim'
})
require('gitsigns').setup {
on_attach = function(bufnr)
local gitsigns = require('gitsigns')
-- TODO: Move to custom functions?
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- Navigation
map('n', ']c', function()
if vim.wo.diff then
vim.cmd.normal({ ']c', bang = true })
else
gitsigns.nav_hunk('next')
end
end)
map('n', '[c', function()
if vim.wo.diff then
vim.cmd.normal({ '[c', bang = true })
else
gitsigns.nav_hunk('prev')
end
end)
-- Actions
-- map('n', '<leader>gs', gitsigns.stage_hunk) -- TODO: Overlaps with LSP keymappings
map('n', '<leader>gu', gitsigns.undo_stage_hunk)
-- map('n', '<leader>gr', gitsigns.reset_hunk) -- TODO: Overlaps with LSP keymappings
-- map('v', '<leader>gs', function() gitsigns.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end) -- TODO: Overlaps with LSP keymappings
map('v', '<leader>gu', function() gitsigns.undo_stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end)
-- map('v', '<leader>gr', function() gitsigns.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end) -- TODO: Overlaps with LSP keymappings
map('n', '<leader>gS', gitsigns.stage_buffer)
map('n', '<leader>gR', gitsigns.reset_buffer)
map('n', '<leader>gp', gitsigns.preview_hunk)
map('n', '<leader>gb', function() gitsigns.blame_line { full = true } end)
map('n', '<leader>gtb', gitsigns.toggle_current_line_blame)
-- map('n', '<leader>gd', gitsigns.diffthis) -- TODO: Overlaps with LSP keymappings
-- map('n', '<leader>gD', function() gitsigns.diffthis('~') end) -- TODO: Overlaps with LSP keymappings
map('n', '<leader>gtd', gitsigns.toggle_deleted)
-- Text object
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end
}