require('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, -- Toggle with `:Gitsigns toggle_signs` numhl = true, -- Toggle with `:Gitsigns toggle_numhl` linehl = false, -- Toggle with `:Gitsigns toggle_linehl` word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` --keymaps = { -- -- Default keymap options -- noremap = true, -- ['n ]c'] = { expr = true, "&diff ? ']c' : 'Gitsigns next_hunk'"}, -- ['n [c'] = { expr = true, "&diff ? '[c' : 'Gitsigns prev_hunk'"}, -- ['n hs'] = 'Gitsigns stage_hunk', -- ['v hs'] = 'Gitsigns stage_hunk', -- ['n hu'] = 'Gitsigns undo_stage_hunk', -- ['n hr'] = 'Gitsigns reset_hunk', -- ['v hr'] = ':Gitsigns reset_hunk', -- ['n hR'] = 'Gitsigns reset_buffer', -- ['n hp'] = 'Gitsigns preview_hunk', -- ['n hb'] = 'lua require"gitsigns".blame_line{full=true}', -- ['n hS'] = 'Gitsigns stage_buffer', -- ['n hU'] = 'Gitsigns reset_buffer_index', -- -- Text objects -- ['o ih'] = 'Gitsigns select_hunk', -- ['x ih'] = 'Gitsigns select_hunk' --}, 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 -- Navigation map('n', ']c', function() if vim.wo.diff then return ']c' end vim.schedule(function() gs.next_hunk() end) return '' end, {expr=true}) map('n', '[c', function() if vim.wo.diff then return '[c' end vim.schedule(function() gs.prev_hunk() end) return '' end, {expr=true}) -- Actions map({'n', 'v'}, 'hs', 'Gitsigns stage_hunk') map({'n', 'v'}, 'hr', 'Gitsigns reset_hunk') map('n', 'hS', gs.stage_buffer) map('n', 'hu', gs.undo_stage_hunk) map('n', 'hR', gs.reset_buffer) map('n', 'hp', gs.preview_hunk) map('n', 'hb', function() gs.blame_line{full=true} end) map('n', 'tb', gs.toggle_current_line_blame) map('n', 'hd', gs.diffthis) map('n', 'hD', function() gs.diffthis('~') end) map('n', 'td', gs.toggle_deleted) -- Text object map({'o', 'x'}, 'ih', ':Gitsigns select_hunk') end, watch_gitdir = { interval = 1000, follow_files = true }, attach_to_untracked = true, current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame` current_line_blame_opts = { virt_text = true, virt_text_pos = 'eol', -- 'eol' | 'overlay' | 'right_align' delay = 1000, ignore_whitespace = true, }, current_line_blame_formatter_opts = { relative_time = false }, sign_priority = 6, update_debounce = 100, status_formatter = nil, -- Use default max_file_length = 40000, preview_config = { -- Options passed to nvim_open_win border = 'single', style = 'minimal', relative = 'cursor', row = 0, col = 1 }, yadm = { enable = true }, }