gitsigns.lua (1631B)
1 if not pcall(require, 'gitsigns') then 2 return 3 end 4 5 local gsigns = require('gitsigns') 6 7 local get_theme = function() 8 local dark_theme = { add = '│', change = '│', delete = '│', topdelete = '‾', changedelete = '│' } 9 local light_theme = { add = ' ', change = ' ', delete = ' ', topdelete = ' ', changedelete = ' ' } 10 11 if vim.opt.background:get() == 'light' then 12 return light_theme 13 end 14 15 return dark_theme 16 end 17 18 local theme = get_theme() 19 gsigns.setup { 20 signs = { 21 add = { text = theme.add }, 22 change = { text = theme.change }, 23 delete = { text = theme.delete }, 24 topdelete = { text = theme.topdelete }, 25 changedelete = { text = theme.changedelete }, 26 }, 27 } 28 29 vim.keymap.set('n', '<leader>hl', gsigns.next_hunk, { desc = 'Git Next Hunk' }) 30 vim.keymap.set('n', '<leader>hh', gsigns.prev_hunk, { desc = 'Git Previous Hunk' }) 31 vim.keymap.set('n', '<leader>hs', gsigns.stage_hunk, { desc = 'Git Stage Hunk' }) 32 vim.keymap.set('n', '<leader>hu', gsigns.undo_stage_hunk, { desc = 'Git Undo Stage Hunk' }) 33 vim.keymap.set('n', '<leader>hr', gsigns.reset_hunk, { desc = 'Git Reset Hunk' }) 34 vim.keymap.set('n', '<leader>hR', gsigns.reset_buffer, { desc = 'Git Reset Buffer' }) 35 vim.keymap.set('n', '<leader>hp', gsigns.preview_hunk, { desc = 'Git Preview Hunk' }) 36 vim.keymap.set('n', '<leader>hb', gsigns.toggle_current_line_blame, { desc = 'Git Toggle Blame Line' }) 37 vim.keymap.set('n', '<leader>hn', gsigns.toggle_numhl, { desc = 'Git Highlight Num' }) 38 vim.keymap.set('o', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>') 39 vim.keymap.set('x', 'ig', ':<C-U>lua require("gitsigns").select_hunk()<cr>')