refactor: streamline git workflow plugins

- Simplify gitsigns.lua configuration
- Update fugitive.lua bindings
- Restructure worktree.lua setup
This commit is contained in:
Jeremie Fraeys 2026-03-23 20:33:37 -04:00
parent 99a6cba26a
commit 43104006ae
No known key found for this signature in database
3 changed files with 48 additions and 37 deletions

View file

@ -1,5 +1,6 @@
return {
'tpope/vim-fugitive',
cmd = { 'Git', 'G' },
config = function()
-- General key mappings for Fugitive
vim.keymap.set('n', '<leader>gs', vim.cmd.Git, { desc = 'Open Git status' })

View file

@ -1,7 +1,7 @@
return {
'lewis6991/gitsigns.nvim',
event = 'BufReadPre',
opts = {
-- Git sign characters
signs = {
add = { text = '+' },
change = { text = '~' },
@ -9,37 +9,47 @@ return {
topdelete = { text = '' },
changedelete = { text = '~' },
},
-- Function called when plugin attaches to a buffer
on_attach = function(bufnr)
-- Always show the sign column
vim.opt.signcolumn = 'yes'
local gs = package.loaded.gitsigns
-- Keybindings
local gs = require('gitsigns')
vim.keymap.set('n', '<leader>hp', gs.preview_hunk, {
buffer = bufnr,
desc = 'Preview git hunk',
})
local function map(mode, keys, func, desc)
vim.keymap.set(mode, keys, func, { buffer = bufnr, desc = 'Git: ' .. desc })
end
vim.keymap.set({ 'n', 'v' }, ']c', function()
-- Navigation
map({ 'n', 'v' }, ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(function()
gs.next_hunk()
end)
vim.schedule(gs.next_hunk)
return '<Ignore>'
end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' })
end, 'Next hunk')
vim.keymap.set({ 'n', 'v' }, '[c', function()
map({ 'n', 'v' }, '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(function()
gs.prev_hunk()
end)
vim.schedule(gs.prev_hunk)
return '<Ignore>'
end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' })
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,
},
}

34
lua/custom/plugins/worktree.lua Normal file → Executable file
View file

@ -1,19 +1,19 @@
return {
'ThePrimeagen/git-worktree.nvim',
keys = {
{
'<leader>ga',
"<cmd>lua require('telescope').extensions.git_worktree.git_worktree()<CR>",
desc = 'Git Worktrees',
},
{
'<leader>gn',
"<cmd>lua require('telescope').extensions.git_worktree.create_git_worktree()<CR>",
desc = 'New Git Worktree',
},
},
config = function()
require('git-worktree').setup()
require('telescope').load_extension('git_worktree')
end,
-- 'ThePrimeagen/git-worktree.nvim',
-- keys = {
-- {
-- '<leader>ga',
-- "<cmd>lua require('telescope').extensions.git_worktree.git_worktree()<CR>",
-- desc = 'Git Worktrees',
-- },
-- {
-- '<leader>gn',
-- "<cmd>lua require('telescope').extensions.git_worktree.create_git_worktree()<CR>",
-- desc = 'New Git Worktree',
-- },
-- },
-- config = function()
-- require('git-worktree').setup()
-- require('telescope').load_extension('git_worktree')
-- end,
}