refactor: streamline git workflow plugins
- Simplify gitsigns.lua configuration - Update fugitive.lua bindings - Restructure worktree.lua setup
This commit is contained in:
parent
99a6cba26a
commit
43104006ae
3 changed files with 48 additions and 37 deletions
|
|
@ -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' })
|
||||
|
|
|
|||
|
|
@ -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
34
lua/custom/plugins/worktree.lua
Normal file → Executable 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,
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue