Files
keycodex/lua/plugins/tools/gitsigns.lua
T
2024-04-27 00:09:57 +05:45

94 lines
2.7 KiB
Lua

local gitsigns = require('gitsigns')
gitsigns.setup({
signs = {
add = {
hl = 'GitSignsAdd',
text = '│',
numhl = 'GitSignsAddNr',
linehl = 'GitSignsAddLn',
},
change = {
hl = 'GitSignsChange',
text = '│',
numhl = 'GitSignsChangeNr',
linehl = 'GitSignsChangeLn',
},
delete = {
hl = 'GitSignsDelete',
text = '_',
numhl = 'GitSignsDeleteNr',
linehl = 'GitSignsDeleteLn',
},
topdelete = {
hl = 'GitSignsDelete',
text = '‾',
numhl = 'GitSignsDeleteNr',
linehl = 'GitSignsDeleteLn',
},
changedelete = {
hl = 'GitSignsChange',
text = '~',
numhl = 'GitSignsChangeNr',
linehl = 'GitSignsChangeLn',
},
},
signcolumn = true,
numhl = false,
linehl = false,
word_diff = false,
watch_gitdir = { interval = 1000, follow_files = true },
attach_to_untracked = true,
current_line_blame = false,
current_line_blame_opts = {
virt_text = true,
virt_text_pos = 'eol',
delay = 0,
ignore_whitespace = false,
},
current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
sign_priority = 6,
update_debounce = 100,
status_formatter = nil,
max_file_length = 40000,
preview_config = { border = 'single', style = 'minimal', relative = 'cursor', row = 0, col = 1 },
yadm = { enable = false },
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
map('n', ']c', function()
if vim.wo.diff then
return ']c'
end
vim.schedule(function()
gs.next_hunk()
end)
return '<Ignore>'
end, { expr = true, desc = 'Next Change' })
map('n', '[c', function()
if vim.wo.diff then
return '[c'
end
vim.schedule(function()
gs.prev_hunk()
end)
return '<Ignore>'
end, { expr = true, desc = 'Previous Change' })
map({ 'v' }, '<leader>ga', ':Gitsigns stage_hunk<CR>', { desc = 'Stage Hunk' })
map({ 'v' }, '<leader>gr', ':Gitsigns reset_hunk<CR>', { desc = 'Reset Hunk' })
map('n', '<leader>gB', function()
gs.blame_line({ full = true })
end, { desc = 'Blame With Preview' })
map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>')
end,
})