-- lua_source {{{ local gitsigns = require 'gitsigns' gitsigns.setup { signs = { add = { text = '+' }, change = { text = '|' }, delete = { text = '_' }, topdelete = { text = '‾' }, changedelete = { text = '~' }, }, signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` numhl = false, -- Toggle with `:Gitsigns toggle_numhl` linehl = false, -- Toggle with `:Gitsigns toggle_linehl` word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` watch_gitdir = { interval = 1000, follow_files = true, }, attach_to_untracked = true, current_line_blame = false, -- 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 = false, }, current_line_blame_formatter = ', - ', 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 = false, }, on_attach = function(bufnr) vim.keymap.set_table { mode = 'n', opts = { buffer = bufnr, silent = true, }, maps = { -- Navigation { ']c', function() if vim.wo.diff then vim.cmd.normal { args = { ']c' }, bang = true } return end require('gitsigns').next_hunk { navigation_message = false, } end, }, { '[c', function() if vim.wo.diff then vim.cmd.normal { args = { '[c' }, bang = true } return end require('gitsigns').prev_hunk { navigation_message = false, } end, }, -- Actions { 'hs', 'Gitsigns stage_hunk' }, { 'hS', 'Gitsigns undo_stage_hunk' }, { 'hu', 'Gitsigns reset_hunk' }, { 'hp', 'Gitsigns preview_hunk' }, { 'hb', 'lua require"gitsigns".blame_line{full=true}' }, { 'tb', 'Gitsigns toggle_current_line_blame' }, { 'hd', 'Gitsigns diffthis' }, { 'hD', 'lua require"gitsigns".diffthis("~")' }, { 'td', 'Gitsigns toggle_deleted' }, }, } -- Text object vim.keymap.set({ 'x', 'o' }, 'ih', ':Gitsigns select_hunk') end, } -- }}}