diff options
author | Damjan 9000 <damjan.9000@gmail.com> | 2023-12-04 19:24:25 +0100 |
---|---|---|
committer | Damjan 9000 <damjan.9000@gmail.com> | 2023-12-04 19:24:25 +0100 |
commit | 5db82f334ff530ac53eeb2313c7425221065a8af (patch) | |
tree | 297c2fcbcd3d97d3064c7da5aaedfc7547cf1920 /lua/lazy-plugins.lua | |
parent | a54945c75a1deab7e62d6213e803feaaa9802b9a (diff) | |
parent | 3824342d107850dfe5b179d0a39e0d8fcd54411d (diff) |
Merge 'upstream/master' keymaps for telescope and gitsigns
Diffstat (limited to 'lua/lazy-plugins.lua')
-rw-r--r-- | lua/lazy-plugins.lua | 50 |
1 files changed, 43 insertions, 7 deletions
diff --git a/lua/lazy-plugins.lua b/lua/lazy-plugins.lua index ef80010..339e72a 100644 --- a/lua/lazy-plugins.lua +++ b/lua/lazy-plugins.lua @@ -64,11 +64,16 @@ require('lazy').setup({ changedelete = { text = '~' }, }, on_attach = function(bufnr) - vim.keymap.set('n', '<leader>hp', require('gitsigns').preview_hunk, { buffer = bufnr, desc = 'Preview git hunk' }) - - -- don't override the built-in and fugitive keymaps local gs = package.loaded.gitsigns - vim.keymap.set({ 'n', 'v' }, ']c', function() + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map({ 'n', 'v' }, ']c', function() if vim.wo.diff then return ']c' end @@ -76,8 +81,9 @@ require('lazy').setup({ gs.next_hunk() end) return '<Ignore>' - end, { expr = true, buffer = bufnr, desc = 'Jump to next hunk' }) - vim.keymap.set({ 'n', 'v' }, '[c', function() + end, { expr = true, desc = 'Jump to next hunk' }) + + map({ 'n', 'v' }, '[c', function() if vim.wo.diff then return '[c' end @@ -85,7 +91,37 @@ require('lazy').setup({ gs.prev_hunk() end) return '<Ignore>' - end, { expr = true, buffer = bufnr, desc = 'Jump to previous hunk' }) + end, { expr = true, desc = 'Jump to previous hunk' }) + + -- Actions + -- visual mode + map('v', '<leader>hs', function() + gs.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'stage git hunk' }) + map('v', '<leader>hr', function() + gs.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } + end, { desc = 'reset git hunk' }) + -- normal mode + map('n', '<leader>hs', gs.stage_hunk, { desc = 'git stage hunk' }) + map('n', '<leader>hr', gs.reset_hunk, { desc = 'git reset hunk' }) + map('n', '<leader>hS', gs.stage_buffer, { desc = 'git Stage buffer' }) + map('n', '<leader>hu', gs.undo_stage_hunk, { desc = 'undo stage hunk' }) + map('n', '<leader>hR', gs.reset_buffer, { desc = 'git Reset buffer' }) + map('n', '<leader>hp', gs.preview_hunk, { desc = 'preview git hunk' }) + map('n', '<leader>hb', function() + gs.blame_line { full = false } + end, { desc = 'git blame line' }) + map('n', '<leader>hd', gs.diffthis, { desc = 'git diff against index' }) + map('n', '<leader>hD', function() + gs.diffthis '~' + end, { desc = 'git diff against last commit' }) + + -- Toggles + map('n', '<leader>tb', gs.toggle_current_line_blame, { desc = 'toggle git blame line' }) + map('n', '<leader>td', gs.toggle_deleted, { desc = 'toggle git show deleted' }) + + -- Text object + map({ 'o', 'x' }, 'ih', ':<C-U>Gitsigns select_hunk<CR>', { desc = 'select git hunk' }) end, }, }, |