neovim conf based on kickstart.nvim
at main 74 lines 2.9 kB view raw
1-- Adds git related signs to the gutter, as well as utilities for managing changes 2-- NOTE: gitsigns is already included in init.lua but contains only the base 3-- config. This will add also the recommended keymaps. 4 5---@module 'lazy' 6---@type LazySpec 7return { 8 'lewis6991/gitsigns.nvim', 9 ---@module 'gitsigns' 10 ---@type Gitsigns.Config 11 ---@diagnostic disable-next-line: missing-fields 12 opts = { 13 signs = { 14 add = { text = '' }, 15 change = { text = '' }, 16 delete = { text = '_' }, 17 topdelete = { text = '' }, 18 changedelete = { text = '~' }, 19 untracked = { text = '' }, 20 }, 21 signs_staged = { 22 add = { text = '' }, 23 change = { text = '' }, 24 delete = { text = '_' }, 25 topdelete = { text = '' }, 26 changedelete = { text = '~' }, 27 untracked = { text = '' }, 28 }, 29 on_attach = function(bufnr) 30 local gitsigns = require 'gitsigns' 31 32 local function map(mode, l, r, opts) 33 opts = opts or {} 34 opts.buffer = bufnr 35 vim.keymap.set(mode, l, r, opts) 36 end 37 38 -- Navigation 39 map('n', ']c', function() 40 if vim.wo.diff then 41 vim.cmd.normal { ']c', bang = true } 42 else 43 gitsigns.nav_hunk 'next' 44 end 45 end, { desc = 'Jump to next git [c]hange' }) 46 47 map('n', '[c', function() 48 if vim.wo.diff then 49 vim.cmd.normal { '[c', bang = true } 50 else 51 gitsigns.nav_hunk 'prev' 52 end 53 end, { desc = 'Jump to previous git [c]hange' }) 54 55 -- Actions 56 -- visual mode 57 map('v', '<leader>hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' }) 58 map('v', '<leader>hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' }) 59 -- normal mode 60 map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) 61 map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) 62 map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) 63 map('n', '<leader>hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' }) 64 map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) 65 map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) 66 map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) 67 map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) 68 map('n', '<leader>hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' }) 69 -- Toggles 70 map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) 71 map('n', '<leader>tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' }) 72 end, 73 }, 74}